DM8多次故障恢复后使用不同数据库归档恢复

本章介绍DM8数据库在多次故障恢复后,最新的数据库没有备份,如何使用以前的备份文件恢复到数据库的最新状态。

多次故障恢复后使用不同归档恢复

01

备份数据库

想要数据库故障时能还原恢复,必须要有备份文件,这里制造一个最原始的数据库备份文件,可以使用DMRMAN备份,也可以是联机的备份文件。这里以联机备份为例。

查询数据库魔数:

SQL> select db_magic;

行号     DB_MAGIC            

---------- --------------------

1          2098604336

备份数据库:

SQL> backup database full backupset 'DMAMENGFULL_DMRMAN0716';

02

制造数据,生成归档日志1

使用DMHR连接登录数据库,使用如下命令创建表t_table1,此过程生成归档日志1。

SQL> create table dmhr.t_table1 as select * from dmhr.employee;

03

模拟故障,删除数据文件

模拟故障,执行rm DMHR.DBF删除数据文件

04

使用备份文件和归档日志恢复数据库

到最新状态(故障前的状态)

停止数据库,使用DMRMAN还原、恢复数据库和更新数据库魔数。如下三步是数据库单故障使用归档文件还原和恢复的典型方式。

RMAN> restore database '/dm8/data/DAMENG/dm.ini' from backupset 'DMAMENGFULL_DMRMAN0716';RMAN> recover database  '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/arch';RMAN> recover database  '/dm8/data/DAMENG/dm.ini' update db_magic;
05

打开数据库,制造数据,生成

数据库恢复后的归档日志2

打开数据库,查询数据库中DMHR下t_table1存在,数据正确,说明数据库已经恢复到最新状态。执行如下命令查看DB_MAGIC,可以看到DB_MAGIC已经发生变化。

SQL> select db_magic;

行号     DB_MAGIC            

---------- --------------------

1          813815328

使用DMHR连接登录数据库,创建t_table2表,生成数据库恢复后的归档日志2。

SQL> create table dmhr.t_table2 as select * from dmhr.employee;

06

模拟故障,删除数据文件

模拟故障,执行rm DMHR.DBF删除数据文件

07

根据步骤1备份文件和两次的

归档日志还原和恢复数据库

由于第一次还原后我们没有备份,所以只能基于步骤1中产生的备份文件还原,当然如果第一次故障后我们在步骤4恢复后正常做了备份,那此时的恢复也会非常简单,直接使用步骤4单故障恢复方式操作就行。但因为只有步骤1的备份文件,中间经历了两次故障,所以我们就涉及跨库(跨数据库魔数)恢复,恢复步骤如下:

①使用步骤1的备份文件还原

执行如下命令使用步骤1的备份文件还原数据库到备份时状态:

RMAN> restore database '/dm8/data/DAMENG/dm.ini' from backupset 'DMAMENGFULL_DMRMAN0716';

②使用步骤2生成的归档日志1恢复到第一次故障状态

执行如下命令,指定with archivedir参数使用归档恢复,从归档恢复时,默认使用目标库的db_magic,此时目标库db_magic值被替换为步骤1备份集源库db_magic,所以使用的是步骤2产生的归档日志。

RMAN> recover database  '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/arch';

③利用步骤5产生的归档日志2还原到最新状态

执行如下命令,使用use db_magic参数,指定db_magic值为待恢复归档的db_magic值(即使用步骤5的db_magic,使用步骤5生成的归档恢复),使数据还原到步骤6故障前的状态。

RMAN> recover database  '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/arch' use db_magic 813815328;

④更新数据库魔数

执行如下命令更新数据库魔数db_magic信息。

RMAN> recover database  '/dm8/data/DAMENG/dm.ini' update db_magic;

此时,数据库恢复完成,打开数据库,可以看到dmhr下t_table2表存在并且数据准确。如果查询数据库魔数,可以看到db_magic已更新。

使用dmrachk工具查看db_magic信息

实际在现网数据库中,多次数据库故障后无法启动,我们可能不知道每次的数据库魔数信息。可以使用dmrachk工具查看每次故障前产生的归档日志文件中的db_magic信息。执行dmrachk help可查看该工具使用方法。

执行如下命令查看归档日志信息,其中红色部分为数据库魔数。

dmrachk arch_fil=ARCHIVE_LOCAL1_0x51FA5B48[0]_2020-07-16_14-49-56.log

查看了归档日志的db_magic信息,再执行第7步的③使用use magic即可指定该数据库魔数的归档日志文件恢复。

好,以上是本次分享内容。

总结:

在多次故障恢复时,可以多次指定use db_magic参数多次恢复数据库,直到恢复到最新状态。

在使用归档恢复时需要注意保证归档日志文件的连续性,如果数据库在中间关闭了归档后又重新开启归档,或者归档日志文件丢失等原因造成了归档日志不连续,将无法恢复数据库到最新状态。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值