注册
DM8数据库基于时间点的恢复
专栏/技术分享/ 文章详情 /

DM8数据库基于时间点的恢复

Azarias 2025/08/01 134 0 0
摘要

01备份数据库

数据库故障还原的前提是要有备份文件,这里创建一个原始的数据库备份文件,可以使用DMRMAN脱机备份文件,也可以是联机备份文件。这里以联机备份为例(在联机备份之前,需要保证数据库已开启并配置归档)。使用SYSDBA用户登录数据库,执行如下语句备份数据库:

SQL> backup database full backupset 'DMTESTFULL_ONLINE0723';

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

创建test用户,并在test用户下创建表t_table并插入数据,此过程生成归档日志。

SQL> create user test IDENTIFIED by dameng123 DEFAULT TABLESPACE main;
SQL> create table test.t_table as select * from SYSOBJECTS;

03模拟故障,删除表

模拟故障,删除test用户下表t_table。并记录下删除表时的系统时间。
image.png

04使用备份和归档日志将数据库恢复到指定时间点

t_table表被删除,要想找回此表的数据,只能将数据库恢复到表删除的前一刻。恢复步骤参考如下:①使用备份文件还原数据库执行如下命令停止数据库:

[dmdba@localhost bin]$ DmServiceDMTESTSERVER stop

使用步骤1的备份文件将数据库还原到备份时状态:

RMAN> restore database '/dm8/data/DMTEST/dm.ini' from backupset 'DMTESTFULL_ONLINE0723';

image.png
②使用归档日志将数据库恢复到指定时间点执行如下命令,指定with archivedir参数使用归档恢复,并指定until time参数将数据库还原到删除表之前的时间,由步骤3得知,我们大概在2020-07-23 10:48:53之前的时间删除了表数据,这里将数据库恢复到2020-07-23 10:48:40的时间(时间越精确越好,无法精确的情况下预估)

RMAN> recover database '/dm8/data/DMTEST/dm.ini' with archivedir '/dm8/data/DMTEST/arch' until time '2020-07-23 10:48:40';

从下面的截图可以看出,归档的恢复并不是100%(因为是不完全恢复,并没有完全重做所有归档日志),只是恢复到93%。
image.png
③更新数据库魔数执行如下命令更新数据库魔数db_magic信息。

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

image.png
此时,数据库恢复完成。执行DmServiceDMTESTSERVER start启动数据库,连接数据库查询test用户下t_table表数据,可以看到t_test表已恢复。
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服