这一:问题说明: Oracle数据库 和 达梦数据库每天都有定时物理备份如果分别将Oracle和达梦的所有REDO LOG FILE删除并关闭实例为什么Oracle有数据丢失风险而达梦没有Oracle数据库 和 达梦数据库每天都有定时物理备份如果分别将Oracle和达梦的所有REDO LOG FILE删除并关闭实例为什么Oracle有数据丢失风险而达梦没有二:原因分析:因为Oracle和达梦在 REDO、归档 处理机制上有根本区别:达梦数据库采用“边写边归档”的策略日志在写入在线日志的同时也被实时写入归档日志。Oracle数据库采用“写满切换再归档”的策略归档完全依赖于在线日志文件成功切换是异步进行的。这就导致了:达梦归档日志包含至故障发生前最后一刻的所有事务可实现零数据丢失。Oracle当前在线日志文件损坏其内容直接丢失其中记录的所有事务数据永 久丢失。三:实验验证:1.达梦数据库启动归档:SQL select PARA_NAME,PARA_VALUE,DEFAULT_VALUE from v$dm_ini where para_name LIKE ‘%ARCH_INI%’;行号 PARA_NAME PARA_VALUE DEFAULT_VALUE1 ARCH_INI 0 0已用时间: 7.122(毫秒). 执行号:603.SQL Select * from varchstatus;未选定行已用时间:0.809(毫秒).执行号:604.SQLALTERDATABASEMOUNT;操作已执行已用时间:2.126(毫秒).执行号:0.SQLALTERDATABASEARCHIVELOG;操作已执行已用时间:7.726(毫秒).执行号:0.SQLALTERDATABASEADDARCHIVELOG′DEST/dm8/arch,TYPELOCAL,FILESIZE200,SPACELIMIT10240′;操作已执行已用时间:1.377(毫秒).执行号:0.SQLALTERDATABASEOPEN;操作已执行已用时间:10.472(毫秒).执行号:0.SQLSelect∗fromvarch_status; 未选定行 已用时间: 0.809(毫秒). 执行号:604. SQL ALTER DATABASE MOUNT; 操作已执行 已用时间: 2.126(毫秒). 执行号:0. SQL ALTER DATABASE ARCHIVELOG; 操作已执行 已用时间: 7.726(毫秒). 执行号:0. SQL ALTER DATABASE ADD ARCHIVELOG DEST/dm8/arch, TYPELOCAL, FILE_SIZE200, SPACE_LIMIT10240; 操作已执行 已用时间: 1.377(毫秒). 执行号:0. SQL ALTER DATABASE OPEN; 操作已执行 已用时间: 10.472(毫秒). 执行号:0. SQL Select * from varchs​tatus;未选定行已用时间:0.809(毫秒).执行号:604.SQLALTERDATABASEMOUNT;操作已执行已用时间:2.126(毫秒).执行号:0.SQLALTERDATABASEARCHIVELOG;操作已执行已用时间:7.726(毫秒).执行号:0.SQLALTERDATABASEADDARCHIVELOG′DEST/dm8/arch,TYPELOCAL,FILES​IZE200,SPACEL​IMIT10240′;操作已执行已用时间:1.377(毫秒).执行号:0.SQLALTERDATABASEOPEN;操作已执行已用时间:10.472(毫秒).执行号:0.SQLSelect∗fromvarch_status;行号 ARCH_TYPE ARCH_DEST ARCH_STATUS ARCH_SRC1 LOCAL /dm8/arch VALID CJC已用时间: 1.014(毫秒). 执行号:605.2.检查REDO信息:SQL select GROUP_ID,FILE_ID,PATH from v$rlogfile;行号 GROUP_ID FILE_ID PATH1 2 0 /dm8/redo/dm_redo01.log2 2 1 /dm8/redo/dm_redo02.log已用时间: 1.034(毫秒). 执行号:601.SQL host ls -lrth /dm8/redo/total 512M-rw-r–r-- 1 dmdba dinstall 256M May 22 10:19 dm_redo02.log-rw-r–r-- 1 dmdba dinstall 256M May 22 10:58 dm_redo01.log3.备份数据库启动DMAP[rootcjc-db-11 ~]# /dm8/dbms/bin/service_template/DmAPService startStarting DmAPService: Last login: Fri May 22 10:59:21 CST 2026 on pts/2[ OK ]备份:SQL backup database backupset ‘/dm8/bak/full/20260522’;操作已执行已用时间: 00:02:39.236. 执行号:615.4.创建测试数据SQL create table cjc.t0522(id int,name varchar(10));操作已执行已用时间: 8.151(毫秒). 执行号:616.SQL insert into cjc.t0522 values(1,‘x’);影响行数 1已用时间: 0.868(毫秒). 执行号:617.SQL commit;操作已执行已用时间: 1.036(毫秒). 执行号:618.SQL select * from cjc.t0522;行号 id name1 1 x已用时间: 0.897(毫秒). 执行号:619.5.模拟误删除[dmdbacjc-db-11 redo]$ ls -lrthtotal 512M-rw-r–r-- 1 dmdba dinstall 256M May 22 10:19 dm_redo02.log-rw-r–r-- 1 dmdba dinstall 256M May 22 14:30 dm_redo01.log[dmdbacjc-db-11 redo]$ rm -f dm_redo0*.log6.影响范围短时间内还可以正常读写数据。SQL select * from cjc.t0522;行号 id name1 1 x已用时间: 0.897(毫秒). 执行号:619.SQL select * from cjc.t0522;行号 id name1 1 x已用时间: 0.527(毫秒). 执行号:620.SQL insert into cjc.t0522 values(2,‘y’);影响行数 1已用时间: 0.517(毫秒). 执行号:621.SQL commit;操作已执行已用时间: 1.017(毫秒). 执行号:622.SQL select * from cjc.t0522;行号 id name1 1 x2 2 y已用时间: 0.293(毫秒). 执行号:623.检查文件SQL sp_file_sys_check();DMSQL 过程已成功完成已用时间: 4.271(毫秒). 执行号:624.告警日志:2026-05-22 14:32:56.335 [ERROR] database P0000002785 T0000000000000003338 [EID:49]fil_sys check file [/dm8/redo/dm_redo01.log] fail, Can’t find file2026-05-22 14:32:56.335 [ERROR] database P0000002785 T0000000000000003338 [EID:49]fil_sys check file [/dm8/redo/dm_redo02.log] fail, Can’t find file此时仍然可以读写数据SQL select * from cjc.t0522;行号 id name1 1 x2 2 y已用时间: 0.264(毫秒). 执行号:626.SQL insert into cjc.t0522 values(3,‘z’);影响行数 1已用时间: 0.530(毫秒). 执行号:627.SQL commit;操作已执行已用时间: 1.081(毫秒). 执行号:628.SQL select * from cjc.t0522;行号 id name1 1 x2 2 y3 3 z已用时间: 0.311(毫秒). 执行号:629.如果实例没有关闭可以使用文件句柄进行恢复:[dmdbacjc-db-11 redo]$ ps -ef|grep dms|grep -v grepdmdba 2785 1 0 12:08 pts/0 00:00:10 /dm8/dbms/bin/dmserver path/dm8/data/CJC/dm.ini -noconsole[dmdbacjc-db-11 redo]$ ls -lrth /proc/2785/fd|grep delelrwx------ 1 dmdba dinstall 64 May 22 10:19 9 - /dm8/redo/dm_redo02.log (delted)lrwx------ 1 dmdba dinstall 64 May 22 10:19 8 - /dm8/redo/dm_redo01.log (delted)本次主要讲解实例已经关闭并且无法启动通过备份进行恢复关闭数据库SQL shutdown immediate;操作已执行已用时间: 1.038(毫秒). 执行号:0.启动数据库启动失败[dmdbacjc-db-11 ~]$ DmServiceCJC startStarting DmServiceCJC: [ FAILED ]后台报错:026-05-22 14:38:16.108 [FATAL] database P0000005274 T0000000000000005274 /dm8/redo/dm_redo01.log not exist,can not startup7.恢复:覆盖前备份[dmdbacjc-db-11 dm8]$ cp -r data/ data_bak还原RMAN restore database ‘/dm8/data/CJC/dm.ini’ from backupset ‘/dm8/bak/full/20260522’;restore database ‘/dm8/data/CJC/dm.ini’ from backupset ‘/dm8/bak/full/20260522’;Normal of FASTNormal of DEFAULTNormal of RECYCLENormal of KEEPNormal of ROLL [Percent:100.00%][Speed:0.00M/s][Cost:00:00:53][Remaining:00:00:00]restore successfully.time used: 00:00:53.936可以看到 restore database会将redo文件还原回来也就是达梦的backup database会备份redo log file:[dmdbacjc-db-11 ~]$ ls -lrth /dm8/redo/total 512M-rw-r–r-- 1 dmdba dinstall 256M May 22 15:12 dm_redo01.log-rw-r–r-- 1 dmdba dinstall 256M May 22 15:12 dm_redo02.log8.恢复这里是完全恢复和Oracle不同:RMAN recover database ‘/dm8/data/CJC/dm.ini’ with archivedir ‘/dm8/arch’;recover database ‘/dm8/data/CJC/dm.ini’ with archivedir ‘/dm8/arch’;Database mode 2, oguid 0Normal of FASTNormal of DEFAULTNormal of RECYCLENormal of KEEPNormal of ROLLEP[0]s cur_lsn[770990721], file_lsn[770990721] [Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]recover successfully!time used: 655.023(ms)更新db_magic:RMAN recover database ‘/dm8/data/CJC/dm.ini’ update db_magic;recover database ‘/dm8/data/CJC/dm.ini’ update db_magic;Database mode 2, oguid 0Normal of FASTNormal of DEFAULTNormal of RECYCLENormal of KEEPNormal of ROLLEP[0]s cur_lsn[770996956], file_lsn[770996956]recover successfully!time used: 00:00:01.1819.启动数据库:启动成功[dmdbacjc-db-11 ~]$ DmServiceCJC startStarting DmServiceCJC: [ OK ]10.检查数据:数据没有丢失[dmdbacjc-db-11 ~]$ sh conn.sh服务器[LOCALHOST:5238]:处于普通打开状态登录使用时间 : 6.457(ms)disql V8SQL select * from cjc.t0522;行号 id name1 1 x2 2 y3 3 z已用时间: 1.297(毫秒). 执行号:501.里写自定义目录标题)quenceDiagram.html