目录
一、环境信息
二、问题描述
三、问题分析
1、重做日志权限
2、重做日志损坏
3、归档容量到达上限,自动清理,需备份归档被删除
四、模拟实验
1、归档配置
2、备份归档多次
3、日志报错
4、线程映射
5、归档配置修改
6、备份归档
五、问题解决
一、环境信息
| 名称 | 值 |
| CPU | x86 |
| 操作系统 | KylinV10 |
| DM版本 | DM Database Server 64 V8 |
二、问题描述
备份归档文件时,提示:[-108]:打开重做日志失败。
三、问题分析
1、重做日志权限
权限正常。
2、重做日志损坏
(1)全备正常,开库全备选的是一致性备份,会备份数据文件+redo日志,如果损坏,全备应该也会失败。
(2)业务正常,增删改需要写redo,如果损坏,会报错。
3、归档容量到达上限,自动清理,需备份归档被删除
备份归档文件时,SQL执行线程(2407290)和异步归档线程(2407243)会同时工作,异步归档线程由于归档容量到达上限,清理了归档,备份线程需要备份清理的归档,没有找到,提示失败,从返回错误:打开重做日志失败,确实不直观,我们来模拟一下。由于我用的是新版本验证的,客户用的是老版本,日志的输出信息有一定差异。
四、模拟实验
1、归档配置
[root@dw01:/root]# cat /opt/Dm8/Data/DAMENG/dmarch.ini [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /opt/Dm8/Data/Arch ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 1024达梦开启归档的步骤这里就不多说了。
2、备份归档多次
16:25:11 SYSDBA@LOCALHOST:5236 SQL> BACKUP ARCHIVE LOG ALL BACKUPSET 'DM_ARCH_BAK_06'; 操作已执行 已用时间: 00:00:04.483. 执行号:803. 16:25:19 SYSDBA@LOCALHOST:5236 SQL> BACKUP ARCHIVE LOG ALL BACKUPSET 'DM_ARCH_BAK_07'; 操作已执行 已用时间: 00:00:04.262. 执行号:804. 16:25:27 SYSDBA@LOCALHOST:5236 SQL> BACKUP ARCHIVE LOG ALL BACKUPSET 'DM_ARCH_BAK_08'; 操作已执行 已用时间: 00:00:04.265. 执行号:805. 16:25:33 SYSDBA@LOCALHOST:5236 SQL> BACKUP ARCHIVE LOG ALL BACKUPSET 'DM_ARCH_BAK_09'; BACKUP ARCHIVE LOG ALL BACKUPSET 'DM_ARCH_BAK_09'; [-108]:打开重做日志失败. 已用时间: 00:00:03.121. 执行号:0.虚机验证,数据库没有任何压力。问题复现。
3、日志报错
2026-08-07 16:25:37.019 [INFO] database P0000003322 T0000000000000007967 rfil[/opt/Dm8/Data/DAMENG/DAMENG01.log], first local_rpkg_seqno:3312, global_rpkg_seqno:3312, first_startup:0, db_open_id:7, max_lsn:50804 2026-08-07 16:25:38.107 [INFO] database P0000003322 T0000000000000003397 Reach space limit of archive file, delete archive log file, db_magic:1936255792, src_db_magic:1936255792, arch_lsn:50769, arch_seq:3292, clsn:50776, next_seq:3294, file_path: /opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_15-07-07.log 2026-08-07 16:25:38.107 [INFO] database P0000003322 T0000000000000003397 rfil_close_low set arch rfil[/opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_15-07-07.log]'s sta to inactive, l_next_seq = 3294, g_next_seq = 3294, clsn = 50776, handle = 20, free=16384, len=16384 2026-08-07 16:25:38.108 [INFO] database P0000003322 T0000000000000003397 Reach space limit of archive file, delete archive log file, db_magic:1936255792, src_db_magic:1936255792, arch_lsn:50776, arch_seq:3295, clsn:50783, next_seq:3297, file_path: /opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_15-07-15.log 2026-08-07 16:25:38.108 [INFO] database P0000003322 T0000000000000003397 rfil_close_low set arch rfil[/opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_15-07-15.log]'s sta to inactive, l_next_seq = 3297, g_next_seq = 3297, clsn = 50783, handle = 20, free=16384, len=16384 2026-08-07 16:25:38.109 [INFO] database P0000003322 T0000000000000003397 Reach space limit of archive file, delete archive log file, db_magic:1936255792, src_db_magic:1936255792, arch_lsn:50783, arch_seq:3298, clsn:50790, next_seq:3300, file_path: /opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_15-07-26.log 2026-08-07 16:25:38.109 [INFO] database P0000003322 T0000000000000003397 rfil_close_low set arch rfil[/opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_15-07-26.log]'s sta to inactive, l_next_seq = 3300, g_next_seq = 3300, clsn = 50790, handle = 20, free=16384, len=16384 2026-08-07 16:25:38.111 [INFO] database P0000003322 T0000000000000003397 Reach space limit of archive file, delete archive log file, db_magic:1936255792, src_db_magic:1936255792, arch_lsn:50790, arch_seq:3301, clsn:50796, next_seq:3303, file_path: /opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_15-07-35.log 2026-08-07 16:25:38.111 [INFO] database P0000003322 T0000000000000003397 rfil_close_low set arch rfil[/opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_15-07-35.log]'s sta to inactive, l_next_seq = 3303, g_next_seq = 3303, clsn = 50796, handle = 20, free=16384, len=16384 2026-08-07 16:25:38.112 [INFO] database P0000003322 T0000000000000003397 rafil_file_create [/opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_16-25-38.log] start 2026-08-07 16:25:38.114 [INFO] database P0000003322 T0000000000000003397 rfil_close_low set arch rfil[/opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_16-25-38.log]'s sta to inactive, l_next_seq = 2457, g_next_seq = 2457, clsn = 0, handle = 20, free=4096, len=268435456 2026-08-07 16:25:38.115 [INFO] database P0000003322 T0000000000000003397 rafil_file_create [/opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_16-25-38.log] success, handle = 20 2026-08-07 16:25:38.115 [INFO] database P0000003322 T0000000000000003397 rafil_file_init, rac_seqno:0, create new file and set last_arch_fil:/opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_16-25-38.log! 2026-08-07 16:25:38.117 [INFO] database P0000003322 T0000000000000003397 rafil_close_with_trunc file[/opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_16-25-38.log] to 16384 len, g_next_seq:3323, ret = 1! 2026-08-07 16:25:38.117 [INFO] database P0000003322 T0000000000000003397 rfil_close_low set arch rfil[/opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_16-25-38.log]'s sta to inactive, l_next_seq = 3323, g_next_seq = 3323, clsn = 50830, handle = 20, free=16384, len=16384 2026-08-07 16:25:39.126 [ERROR] database P0000003322 T0000000000000007967 os_file_open_low_real error! desc: No such file or directory, path: /opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_15-07-07.log, code: 2 2026-08-07 16:25:39.126 [ERROR] database P0000003322 T0000000000000007967 os_file_open_low_real error! desc: No such file or directory, path: /opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_15-07-07.log, code: 2 2026-08-07 16:25:39.126 [ERROR] database P0000003322 T0000000000000007967 rfil_open [/opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_15-07-07.log] failed 2026-08-07 16:25:39.126 [INFO] database P0000003322 T0000000000000007967 arch file(/opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_15-07-07.log) open fail, free:4096, len:134217728, arch_seq:0, next_seq:0T0000000000000003397 Reach space limit of archive file, delete archive log file, db_magic:1936255792, src_db_magic:1936255792, arch_lsn:50769, arch_seq:3292, clsn:50776, next_seq:3294, file_path: /opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_15-07-07.log
异步归档线程发现到达归档文件容量上限,清理了日志 /opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_15-07-07.log。
T0000000000000007967 os_file_open_low_real error! desc: No such file or directory, path: /opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_15-07-07.log, code: 2
SQL执行线程需日志 /opt/Dm8/Data/Arch/ARCHIVE_LOCAL1_0x7368EB30_EP0_2026-08-07_15-07-07.log,由于删除导致打开失败。
新版本的日志内容更加容易我们理解,但错误内容确实容易使人误解,其实提示:归档日志打开失败更容易让人理解。
4、线程映射
16:26:54 SYSDBA@LOCALHOST:5236 SQL> SELECT * FROM V$THREADS WHERE ID IN (7967,3397); ID NAME START_TIME THREAD_DESC SESS_ID PROCESSOR_ID WAIT_SEQ WAIT_STATUS WAIT_TIME -------------------- -------------- -------------------------- ----------------------------- -------------------- ------------ ----------- --------------- ----------- 7967 dm_sql_thd 2026-08-07 16:25:11.000000 User session thread 140675795920120 65535 2 NOTHING TO WAIT -1 3397 dm_rsyswrk_thd 2026-08-07 15:06:52.000000 Asynchronous archiving thread NULL 65535 0 NOTHING TO WAIT -1 已用时间: 3.782(毫秒). 执行号:808.3397是异步归档线程。
7967是SQL执行线程。
5、归档配置修改
[root@dw01:/root]# cat /opt/Dm8/Data/DAMENG/dmarch.ini [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /opt/Dm8/Data/Arch ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 20480将ARCH_FILE_SIZE、ARCH_SPACE_LIMIT适当提高。
重启数据库。
6、备份归档
16:34:41 SYSDBA@LOCALHOST:5236 SQL> BACKUP ARCHIVE LOG ALL BACKUPSET 'DM_ARCH_BAK_01'; 操作已执行 已用时间: 00:00:04.407. 执行号:603. 16:34:49 SYSDBA@LOCALHOST:5236 SQL> BACKUP ARCHIVE LOG ALL BACKUPSET 'DM_ARCH_BAK_02'; 操作已执行 已用时间: 00:00:04.284. 执行号:604. 16:34:55 SYSDBA@LOCALHOST:5236 SQL> BACKUP ARCHIVE LOG ALL BACKUPSET 'DM_ARCH_BAK_04'; 操作已执行 已用时间: 00:00:04.279. 执行号:605. 16:35:02 SYSDBA@LOCALHOST:5236 SQL> BACKUP ARCHIVE LOG ALL BACKUPSET 'DM_ARCH_BAK_03'; 操作已执行 已用时间: 00:00:04.279. 执行号:606. 16:35:10 SYSDBA@LOCALHOST:5236 SQL> BACKUP ARCHIVE LOG ALL BACKUPSET 'DM_ARCH_BAK_05'; 操作已执行 已用时间: 00:00:04.300. 执行号:607. 16:35:16 SYSDBA@LOCALHOST:5236 SQL> BACKUP ARCHIVE LOG ALL BACKUPSET 'DM_ARCH_BAK_06'; 操作已执行 已用时间: 00:00:04.335. 执行号:608. 16:35:23 SYSDBA@LOCALHOST:5236 SQL> BACKUP ARCHIVE LOG ALL BACKUPSET 'DM_ARCH_BAK_07'; 操作已执行 已用时间: 00:00:04.294. 执行号:609. 16:35:30 SYSDBA@LOCALHOST:5236 SQL> BACKUP ARCHIVE LOG ALL BACKUPSET 'DM_ARCH_BAK_08'; 操作已执行 已用时间: 00:00:04.304. 执行号:610. 16:35:37 SYSDBA@LOCALHOST:5236 SQL> BACKUP ARCHIVE LOG ALL BACKUPSET 'DM_ARCH_BAK_09'; 操作已执行 已用时间: 00:00:04.299. 执行号:611. 16:35:44 SYSDBA@LOCALHOST:5236 SQL> BACKUP ARCHIVE LOG ALL BACKUPSET 'DM_ARCH_BAK_10'; 操作已执行 已用时间: 00:00:04.275. 执行号:612.一次没有报错,说明解决方法有效。
五、问题解决
问题的根源在于,达梦的联机备份归档机制与自动归档清理策略产生了冲突,导致备份所需的归档日志文件丢失,将ARCH_SPACE_LIMIT适当提高,避免异步归档线程和SQL执行线程冲突的概率。