还原恢复常用于数据文件丢失或损坏、数据迁移等场景中,在日常运维中属于比较常用的恢复手段,具体操作也并不复杂,利用备份集+归档进行数据库恢复,对备份集和归档的校验也是很重要的工作,尤其是核心系统恢复前要确保操作可行性,所以建议大家恢复前做好充分的校验工作。
主备环境如果备库宕机时间较长,一定要确认备库可恢复到的最大lsn要大于主库的最小lsn,确保备库加入集群后数据能够正常追赶。
测试操作:
先清空一个数据文件:> TEST_SPACE.DBF
查看日志数据库服务由于数据文件被修改已经停止。
利用实例校验工具检查数据库完整性,此工具用于数据库实例正常关闭情况下,由于本次数据库实例非正常关闭,本次无法使用。
./dmdbchk PATH=/home/dmdba/dm/dmdbms/bin/dm.ini
##假如如果正常停库再移走数据文件这类能正常停止实例的情况下,会有类似如下的打印:
针对备份集校验,常用RMAN check,如果想打印备份集详细信息,可以用show查看。
RMAN> CHECK BACKUPSET ‘/dbbak/dmbak/db_full_bak_01’;
RMAN> SHOW BACKUPSET ‘/dbbak/dmbak/db_full_bak_01’;
归档校验工具dmrachk,用于查看归档文件可用性。
./dmrachk ARCH_PATH=/dbarch/dmarch/
如果归档不连贯,就要看归档可用的clsn是否包含备份集的end_lsn。
还原恢复操作并不复杂也不过多赘述。
还原数据库
RMAN>RESTORE DATABASE ‘/home/dmdba/dm/dmdbms/bin/dm.ini’ FROM BACKUPSET ‘/dbbak/dmbak/db_full_bak_01’;
恢复数据库
RMAN>RECOVER DATABASE ‘/home/dmdba/dm/dmdbms/bin/dm.ini’ FROM BACKUPSET ‘/dbbak/dmbak/db_full_bak_01’;
归档恢复
RECOVER DATABASE ‘/home/dmdba/dm/dmdbms/bin/dm.ini’ WITH ARCHIVEDIR ‘/dbarch/dmarch/’;
(达梦8需要update dm_magic, update db_magic会导致增量备份任务失效,是由于数据库改变了db_magic与备份集中的db_magic并不对应,需要先进行一次全量备份。
RECOVER DATABASE ‘/home/dmdba/dm/dmdbms/bin/dm.ini’ update db_magic;)
至此数据库实例正常恢复。
在主备环境中需要确认归档情况,确认恢复后备库的LSN远大于主库最小LSN的归档文件,如果距离主库最小LSN较近,则先调整主库归档清理策略dmarch.ini,避免主库的归档被刷掉,保障实例启动后能正常追数。在备库实例恢复前判断的话,可以用备份集检查、归档检查工具进行lsn查看。
查看当前LSN
SELECT CKPT_LSN from V$RLOG;
查看归档LSN
SELECT NAME,FIRST_CHANGE#,NEXT_CHANGE# FROM V$ARCHIVED_LOG;
文章
阅读量
获赞