DM8数据库基于时间点的恢复
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。并记录下删除表时的系统时间。04使用备份和归档日志将数据库恢复到指定时间点t_table表被删除要想找回此表的数据只能将数据库恢复到表删除的前一刻。恢复步骤参考如下①使用备份文件还原数据库执行如下命令停止数据库[dmdbalocalhost bin]$ DmServiceDMTESTSERVER stop复制使用步骤1的备份文件将数据库还原到备份时状态RMAN restore database /dm8/data/DMTEST/dm.ini from backupset DMTESTFULL_ONLINE0723;复制②使用归档日志将数据库恢复到指定时间点执行如下命令指定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%。③更新数据库魔数执行如下命令更新数据库魔数db_magic信息。RMAN recover database /dm8/data/DMTEST/dm.ini update db_magic;复制此时数据库恢复完成。执行DmServiceDMTESTSERVER start启动数据库连接数据库查询test用户下t_table表数据可以看到t_test表已恢复。