DM归档的修复及应用场景

本文详细介绍了DM数据库中归档日志不完整的情况及其修复方法。通过实例展示了在数据库正常和异常关闭场景下,如何进行表空间的备份、恢复以及归档日志的修复。在数据库异常关闭时,由于部分redo日志未写入归档文件,可能导致归档日志不完整,此时需要执行归档修复来确保数据一致性。总结强调了归档修复的重要性以及在不同关闭场景下的应用策略。
摘要由CSDN通过智能技术生成

在DM数据库还原中很多时候需要应用归档将数据库恢复到最新状态或指定时间点,但有时可能会报归档日志不完整的错误,此时我们需要使用到归档修复。

归档日志修复

表空间还原会自动应用归档日志,我们以DMHR表空间的备份还原为例,演示造成归档日志不完整的原因,及修复方法。

DM8只能联机备份表空间,执行如下命令备份DMHR表空间。

SQL> backup tablespace dmhr backupset '/dm8/backup/TS_DMHR_FULL_20201015';

此时,在指定的备份集目录下生成备份集文件。可以看出联机表空间备份只产生一个.bak备份文件,这是因为表空间备份只备份数据,不备份redo日志。

也可以使用show backupset命令查看备份集数据,执行如下命令:

RMAN>show backupset '/dm8/backup/TS_DMHR_FULL_20201015';

查看结果显示如下:

备份后我们做一些数据操作,产生重做日志(注意,最后一个插入未提交数据):

执行rm DMHR.DBF删除数据文件。

数据库正常关闭场景

使用shutdown immediate正常关闭数据库。

执行表空间还原操作:

RMAN>restore database '/dm8/data/DAMENG/dm.ini' tablespace dmhr frombackupset '/dm8/backup/TS_DMHR_FULL_20201015';

执行如下命令进行表空间恢复,表空间恢复会自动加载应用归档日志文件(dmarch.ini中配置的归档日志路径)恢复到最新的时间点:

RMAN>recover database '/dm8/data/DAMENG/dm.ini' tablespace dmhr;

恢复后启动数据库,查询表数据,可以看到已提交的数据已恢复,未提交的数据已回退。

数据库异常关闭场景

如何数据库不是正常关闭,而是异常关闭的,比如使用shutdown abort命令强制关闭数据库(或者kill -9结束数据库进程)。

执行表空间还原:

还原后执行表空间恢复,报错[-8216]:归档日志不完整。

这是因为数据库异常关闭,部分已提交的数据产生的redo日志还未写入归档文件(已写入联机日志文件)。

此时可以执行如下命令进行归档修复:

RMAN>repair archivelog database '/dm8/data/DAMENG/dm.ini';

再进行表空间恢复操作,表空间正常恢复,并应用归档日志恢复到最新时刻。

恢复后启动数据库,查询表数据,可以看到已提交的数据已恢复,未提交的数据已回退。

总结:

归档日志修复是利用联机日志修复dmarch.ini中配置的本地归档日志目录中的归档文件,执行修复时,目标库不能处于运行状态。

数据库正常关闭场景下,一般不需要归档修复,除非删除了历史归档日志造成归档日志不连续([-718]:收集到的归档日志不连续),此时需要从归档的备份中还原归档日志文件。

一般建议在数据库故障(非正常关闭)情况下,应立即执行归档修复,否则可能因为部分redo日志未及时写入本地归档文件,导致归档日志中REDO日志缺失(归档日志不连续),届时如果下次数据库故障需要还原和恢复,利用归档文件将无法恢复到故障前的最新状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值