一、备份还原前准备工作
1.创建归档目录并授权
mkdir -p /dmdata/data/test5240/arch
chown -R dmdba:dmdba /dmdata/data/test5240/arch
chmod -R 750 /dmdata/data/test5240/arch
2.修改 dm.ini配置
cd /home/dmdba/dmdbms/bin
vi /dmdata/data/test5240/dm.ini
修改为ARCH_INI=1
3.编写 dmarch.ini 归档配置
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/data/test5240/arch # 归档文件存放路径,提前建好
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 10240
二、备份还原操作
1.联机全库备份、增量备份、归档备份
(1)联机全库备份
创建表test,向表中加入20w行数据
进行全库备份,命令:BACKUP DATABASE BACKUPSET ‘DB_FULL_20260728’;
检验备份完整性,命令: ./dmrman CTLSTMT=“CHECK BACKUPSET ‘/dmdata/data/test5240/bak/DB_FULL_20260728’”
(2)增量备份
修改表test内容
进行增量备份:BACKUP DATABASE INCREMENT BASE ON BACKUPSET ‘DB_FULL_20260728’ BACKUPSET ‘DB_INC_20260728’;
校验备份完整性,命令:./dmrman CTLSTMT=“CHECK BACKUPSET ‘/dmdata/data/test5240/bak/DB_INC_20260728’”
(3)归档备份
BACKUP ARCHIVE LOG BACKUPSET ‘ARCH_BAK_20260728’;
校验备份完整性,命令:./dmrman CTLSTMT=“CHECK BACKUPSET ‘/dmdata/data/test5240/bak/ARCH_BAK_20260727’”
2.脱机全库备份、增量备份
(1)关闭数据库
./DmServiceDMTEST stop
(2)脱机全库备份
./dmrman CTLSTMT=“BACKUP DATABASE ‘/dmdata/data/DMTEST/dm.ini’ BACKUPSET ‘BACKUP_FILE_01_20260727’”
验证完整性, ./dmrman CTLSTMT=“CHECK BACKUPSET ‘/dmdata/data/DMTEST/bak/BACKUP_FILE_01_20260727’”
增量备份
./dmrman CTLSTMT=“BACKUP DATABASE ‘/dmdata/data/DMTEST/dm.ini’ INCREMENT BASE ON BACKUPSET ‘BACKUP_FILE_01_20260727’ BACKUPSET ‘BACKUP_FILE_INC_01_20260727’”
3.使用全库备份还原
只需要恢复到全备备份时间点,不需要后续增量、归档
脱机备份后的脱机还原
./dmrman CTLSTMT=“RESTORE DATABASE ‘/dmdata/data/DMTEST/dm.ini’ FROM BACKUPSET ‘/dmdata/data/DMTEST/bak/BACKUP_FILE_01_20260727’”
./dmrman CTLSTMT=“RECOVER DATABASE ‘/dmdata/data/DMTEST/dm.ini’ UPDATE DB_MAGIC”
4.使用全库备份+增量备份集+归档还原到指定时间点
(1)脱机还原联机全库备份
./dmrman CTLSTMT=“RESTORE DATABASE ‘/dmdata/data/test5240/dm.ini’ FROM BACKUPSET ‘/dmdata/data/test5240/bak/DB_FULL_20260728’”
./dmrman CTLSTMT=“RECOVER DATABASE ‘/dmdata/data/test5240/dm.ini’ FOR STANDBY FROM BACKUPSET ‘/dmdata/data/test5240/bak/DB_FULL_20260728’”
./dmrman CTLSTMT=“RECOVER DATABASE ‘/dmdata/data/test5240/dm.ini’ UPDATE DB_MAGIC”
检验全库还原成功
(2)脱机还原联机全库+增量备份
./dmrman CTLSTMT=“RESTORE DATABASE ‘/dmdata/data/test5240/dm.ini’ FROM BACKUPSET ‘/dmdata/data/test5240/bak/DB_FULL_20260728’”
./dmrman CTLSTMT=“RESTORE DATABASE ‘/dmdata/data/test5240/dm.ini’ FROM BACKUPSET ‘/dmdata/data/test5240/bak/DB_INC_20260728’”
./dmrman CTLSTMT=“RECOVER DATABASE ‘/dmdata/data/test5240/dm.ini’ FOR STANDBY FROM BACKUPSET ‘/dmdata/data/test5240/bak/DB_INC_20260728’”
./dmrman CTLSTMT=“RECOVER DATABASE ‘/dmdata/data/test5240/dm.ini’ UPDATE DB_MAGIC”
验证
(3)归档还原,恢复到指定时间点
9.17更新数据库
9.19更新数据库
还原全库备份
./dmrman CTLSTMT=“RESTORE DATABASE ‘/dmdata/data/test5240/dm.ini’ FROM BACKUPSET ‘/dmdata/data/test5240/bak/DB_FULL_20260728’”
还原增量备份
./dmrman CTLSTMT=“RESTORE DATABASE ‘/dmdata/data/test5240/dm.ini’ FROM BACKUPSET ‘/dmdata/data/test5240/bak/DB_INC_20260728’”
恢复到9.18
./dmrman CTLSTMT=“RECOVER DATABASE ‘/dmdata/data/test5240/dm.ini’ WITH ARCHIVEDIR ‘/dmdata/data/test5240/arch’ UNTIL TIME ‘2026-01-31 9:18:00’”
更新数据库魔数
./dmrman CTLSTMT=“RECOVER DATABASE ‘/dmdata/data/test5240/dm.ini’ UPDATE DB_MAGIC”
验证
5.归档日志还原与恢复
恢复这些归档日志文件本身(比如把它们恢复到某个目录下,用于后续的数据库恢复)
./dmrman CTLSTMT=“RESTORE ARCHIVELOG FROM BACKUPSET ‘/dmdata/data/test5240/bak/ARCH_BAK_20260728’ TO ARCHIVEDIR ‘/dmdata/arch/’”
6.表空间级备份与恢复
(1)表空间备份(只能联机)
BACKUP TABLESPACE “TESTA” FULL BACKUPSET ‘/dmdata/data/test5240/bak/TESTA_FULL_20260728’;
(2)脱机还原表空间
./dmrman CTLSTMT=“RESTORE DATABASE ‘/dmdata/data/test5240/dm.ini’ TABLESPACE TESTA FROM BACKUPSET ‘/dmdata/data/test5240/bak/TESTA_FULL_20260728’”
./dmrman CTLSTMT="RECOVER DATABASE ‘/dmdata/data/test5240/dm.ini’ TABLESPACE TESTA "
三、其他
特别提醒:因为脱机备份没有产生任何 REDO 日志,所以在脱机还原脱机备份时省略恢复数据库的操作步骤。
文章
阅读量
获赞
