注册
通过归档还原到指定时间的数据
技术分享/ 文章详情 /

通过归档还原到指定时间的数据

阳春白雪 2022/04/22 2872 0 0

例如,用户在下午19:14:06点做了一个误操作,删除了某些重要数据;我们可以指定恢复时
间点到下午19:12:06分,恢复被误删除的数据。
下面以联机数据库备份为例说明如何恢复数据库到指定的时间点/LSN。

  1. 准备数据;
    SQL>CREATE TABLE TAB_FOR_RECOVER_01(C1 INT);
    SQL>INSERT INTO TAB_FOR_RECOVER_01 VALUES(1);
    SQL>COMMIT;
  2. 备份数据库;
    SQL>BACKUP DATABASE BACKUPSET ‘/home/dmdba/dm_bak/db_full_bak_for_time_lsn’;
  3. 正确操作数据库,产生一些归档;
    SQL>CREATE TABLE TAB_FOR_RECOVER_02(C1 INT);
    SQL>INSERT INTO TAB_FOR_RECOVER_02 VALUES(1);
    SQL>COMMIT;
    使用 SELECT SYSDATE 命令查询此时的时间为:2022-04-20 19:12:06。
    使用 SELECT FILE_LSN FROM V$RLOG 命令查询此时的 LSN 为:1787861。
  4. 误操作数据库。此步骤误删除了表 TAB_FOR_RECOVER_01 中数据;
    SQL>DELETE FROM TAB_FOR_RECOVER_01;
    SQL>COMMIT;
    操作步骤同步骤 3),此时的时间和 LSN 分别为:2022-04-20 19:14:06、1787865。
  5. 还原数据库。步骤 4)为误操作,因此我们需要将数据库恢复到步骤 3)的状态。
    首先需要关闭数据库实例,然后利用 DMRMAN 工具还原数据库:
    RMAN> RESTORE DATABASE ‘/home/dmdba/dmdbms/data/test/dm.ini’ FROM BACKUPSET ‘/home/dmdba/dm_bak/db_full_bak_for_time_lsn’;
  6. 恢复数据库到指定时间点/LSN。还原后数据库的数据与备份时一致,如果要恢复
    数据库至步骤 3)的状态可以指定 UNTIL TIME 或 UNTIL LSN 参数重做部分归档。
    使用 RECOVER DATABASE…UNTIL TIME 命令恢复到指定的时间:
    RMAN>RECOVER DATABASE ‘/home/dmdba/dmdbms/data/test/dm.ini’ WITH ARCHIVEDIR ‘/home/dmdba/dmdbms/data/test/bak’ UNTIL TIME ‘2022-04-20 19:12:06’;
    或者使用 RECOVER DATABASE…UNTIL TIME 命令恢复到指定的 LSN:
    RMAN>RECOVER DATABASE ‘/home/dmdba/dmdbms/data/test/dm.ini’ WITH ARCHIVEDIR ‘/home/dmdba/dmdbms/data/test/bak’ UNTIL LSN 1787861;
    7)恢复成功后更新副本DB_MAGIC。
    RECOVER DATABASE ‘/home/dmdba/dmdbms/data/test/dm.ini’ UPDATE DB_MAGIC;
    8)启动数据库服务
    systemctl start DmServiceDMSERVER.service

社区地址:https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服