为巩固达梦数据库备份恢复的原理及操作,在近期做了相关的测试,发现一个比较有意思的地方,那就是system.dbf损坏与其它数据文件损坏的恢复方式有区别,特在此分享。
非system.dbf数据文件损坏模拟:
停止数据库:
[dmdba@damengdb bin]$ ./DmServiceDMSERVERB stop
Stopping DmServiceDMSERVERB: [ OK ]
备份数据库:
[dmdba@damengdb bin]$ ./dmrman
dmrman V8
RMAN> backup database '/dm8/data/DAMENGB/dm.ini';
backup database '/dm8/data/DAMENGB/dm.ini';
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[38972], file_lsn[38972]
Processing backupset /dm8/data/DAMENGB/bak/DB_DAMENGB_FULL_20230707_110829_183889
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
backup successfully!
time used: 00:00:03.246
RMAN> exit
time used: 0.265(ms)
模拟MAIN.DBF丢失:
[dmdba@damengdb bin]$ mv /dm8/data/DAMENGB/MAIN.DBF /dm8/data/DAMENGB/MAIN.DBFBAK
恢复MAIN.DBF:
[dmdba@damengdb bin]$ ./dmrman
dmrman V8
RMAN> restore database '/dm8/data/DAMENGB/dm.ini' tablespace main from backupset '/dm8/data/DAMENGB/bak/DB_DAMENGB_FULL_20230707_110829_183889';
restore database '/dm8/data/DAMENGB/dm.ini' tablespace main from backupset '/dm8/data/DAMENGB/bak/DB_DAMENGB_FULL_20230707_110829_183889';
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
begin redo pwr log collect, last ckpt lsn: 38972 ...
redo pwr log collect finished
EP[0]'s cur_lsn[38972], file_lsn[38972]
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.472
RMAN> EXIT
time used: 0.357(ms)
恢复成功:
[dmdba@damengdb bin]$ ll /dm8/data/DAMENGB/MAIN.DBF
-rw-r--r-- 1 dmdba dinstall 134217728 7月 7 11:12 /dm8/data/DAMENGB/MAIN.DBF
system.dbf数据文件损坏模拟:
模拟SYSTEM.DBF丢失:
[dmdba@damengdb bin]$ mv /dm8/data/DAMENGB/SYSTEM.DBF /dm8/data/DAMENGB/SYSTEM.DBFBAK
恢复SYSTEM.DBF:
[dmdba@damengdb bin]$ ./dmrman
dmrman V8
RMAN> restore database '/dm8/data/DAMENGB/dm.ini' tablespace system from backupset '/dm8/data/DAMENGB/bak/DB_DAMENGB_FULL_20230707_110829_183889';
restore database '/dm8/data/DAMENGB/dm.ini' tablespace system from backupset '/dm8/data/DAMENGB/bak/DB_DAMENGB_FULL_20230707_110829_183889';
file dm.key not found, use default license!
/dm8/data/DAMENGB/SYSTEM.DBF not exist
/dm8/data/DAMENGB/SYSTEM.DBF not exist
可以看到,用恢复普通数据文件的方式恢复SYSTEM.DBF会报SYSTEM.DBF不存在的错。
解决方法:
RMAN> restore database to '/dm8/data/DAMENGB/' overwrite from backupset '/dm8/data/DAMENGB/bak/DB_DAMENGB_FULL_20230707_110829_183889';
restore database to '/dm8/data/DAMENGB/' overwrite from backupset '/dm8/data/DAMENGB/bak/DB_DAMENGB_FULL_20230707_110829_183889';
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.718
RMAN> exit
time used: 0.243(ms)
[dmdba@damengdb bin]$ ./DmServiceDMSERVERB start
Starting DmServiceDMSERVERB: [ OK ]
文章
阅读量
获赞