使用已备份完成的数据文件及重做日志文件进行恢复,CURRENT状态的日志文件中的数据会丢失。
Step 1:备份前加载测试表及数据
gSQL> CREATE TABLE INC_TEST ( C1 INT, C2 DATE, C3 VARCHAR(50) );
gSQL> INSERT INTO INC_TEST VALUES (1, sysdate, 'INCREMENTAL BACKUP TEST');
gSQL> COMMIT;
Step 2:执行增量备份
gSQL> ALTER DATABASE BACKUP INCREMENTAL LEVEL 0;
Database altered.
gSQL> !ls /home/sunje/product/Sundb_data/backup
controlD20200203T155000L0S5.inc databaseD20200203T154959L0S5.inc README
Step 3:切换6次联机日志(redofile)产生归档文件,模拟生产环境(该步骤可选)
gSQL> ALTER SYSTEM SWITCH LOGFILE;
--执行6次或多次
Step 4:再向测试表中插入2条数据
gSQL> INSERT INTO INC_TEST VALUES (2, sysdate, 'INCREMENTAL BACKUP TEST');
gSQL> COMMIT;
gSQL> INSERT INTO INC_TEST VALUES (3, sysdate, 'INCREMENTAL BACKUP TEST');
Step 5:模拟服务异常终止
gSQL> shutdown abort
Step 6:删除数据文件与重做日志文件
[sunje@gs01 Sundb_data]$ pwd
/home/sunje/product/Sundb_data
[sunje@gs01 Sundb_data]$ rm -f db/*.dbf
[sunje@gs01 Sundb_data]$ rm -f wal/*.log
Step 7:恢复重做日志文件
[sunje@gs01 Sundb_data]$ cd archive_log/
[sunje@gs01 archive_log]$ pwd
/home/sunje/product/Sundb_data/archive_log
[sunje@gs01 archive_log]$ ls
archive_0.log archive_1.log archive_2.log archive_3.log
[sunje@gs01 archive_log]$ gdump log archive_3.log |grep LOG_GROUP_ID
LOG_GROUP_ID : 3
[sunje@gs01 archive_log]$ gdump log archive_2.log |grep LOG_GROUP_ID
LOG_GROUP_ID : 2
[sunje@gs01 archive_log]$ gdump log archive_1.log |grep LOG_GROUP_ID
LOG_GROUP_ID : 1
[sunje@gs01 archive_log]$ gdump log archive_0.log |grep LOG_GROUP_ID
LOG_GROUP_ID : 0
[sunje@gs01 archive_log]$ cp archive_3.log /home/sunje/product/Sundb_data/wal/redo_3_0.log
[sunje@gs01 archive_log]$ cp archive_2.log /home/sunje/product/Sundb_data/wal/redo_2_0.log
[sunje@gs01 archive_log]$ cp archive_1.log /home/sunje/product/Sundb_data/wal/redo_1_0.log
[sunje@gs01 archive_log]$ cp archive_0.log /home/sunje/product/Sundb_data/wal/redo_0_0.log
Step 8:恢复并启动实例
[sunje@gs01 Sundb_data]$ gs
gSQL> startup mount
Startup success
gSQL> ALTER DATABASE RESTORE;
Database altered.
gSQL> ALTER DATABASE BEGIN INCOMPLETE RECOVERY;
ERR-01000(14104): Warning: suggestion '/home/sunje/product/Sundb_data/archive_log/archive_3.log'
ERR-01000(14103): Warning: media recovery needs a logfile including log (Lsn 180674)
Database altered.
gSQL> ALTER DATABASE RECOVER AUTOMATICALLY;
ERR-01000(14104): Warning: suggestion '/home/sunje/product/Sundb_data/archive_log/archive_4.log'
ERR-01000(14103): Warning: media recovery needs a logfile including log (Lsn 180676)
Database altered.
gSQL> ALTER DATABASE END INCOMPLETE RECOVERY;
Database altered.
gSQL> ALTER SYSTEM OPEN DATABASE RESETLOGS;
System altered.
Step 9:查看INC_TEST表的数据
gSQL> SELECT * FROM INC_TEST;
C1 C2 C3
-- ---------- -----------------------
1 2020-02-03 INCREMENTAL BACKUP TEST
1 row selected.
已提交数据为2条,当前表中有1条,已提交的数据缺失1条是由于重做日志全部丢失所致,测试结果与预期一致,恢复完成。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




