使用已备份的控制文件和数据文件完成恢复即可,已提交的数据不会丢失。
Step 1:备份前加载测试表及数据
gSQL> drop table HOT_TEST;
gSQL> COMMIT;
gSQL> CREATE TABLE HOT_TEST ( C1 INT, C2 DATE, C3 VARCHAR(50) );
gSQL> INSERT INTO HOT_TEST VALUES (1, sysdate, 'HOT BACKUP TEST');
gSQL> COMMIT;
Step 2:执行在线备份,期间插入一条数据
gSQL> ALTER DATABASE BEGIN BACKUP;
gSQL> quit
[sunje@gs01 ~]$ cd $SUNDB_DATA/
[sunje@gs01 Sundb_data]$ cp db/* backup/
[sunje@gs01 Sundb_data]$ cp wal/* backup/
[sunje@gs01 Sundb_data]$ gs
gSQL> INSERT INTO HOT_TEST VALUES (2, sysdate, 'HOT BACKUP TEST');
gSQL> COMMIT;
gSQL> ALTER DATABASE END BACKUP;
Step 3:切换6次联机日志(redofile)产生归档文件,模拟生产环境(该步骤可选)
gSQL> ALTER SYSTEM SWITCH LOGFILE;
--执行6次
Step 4:再向测试表中插入两条数据
gSQL> INSERT INTO HOT_TEST VALUES (3, sysdate, 'HOT BACKUP TEST');
gSQL> COMMIT;
gSQL> INSERT INTO HOT_TEST VALUES (4, sysdate, 'HOT BACKUP TEST');
Step 5:模拟服务异常终止,同时删除控制文件和数据文件
gSQL> shutdown abort
gSQL> quit
[sunje@gs01 Sundb_data]$ pwd
/home/sunje/product/Sundb_data
[sunje@gs01 Sundb_data]$ rm -f wal/*.ctl
[sunje@gs01 Sundb_data]$ rm -f db/*.dbf
Step 6:将已备份完成的控制文件和数据文件拷贝至指定路径
[sunje@gs01 Sundb_data]$ pwd
/home/sunje/product/Sundb_data
[sunje@gs01 Sundb_data]$ cp backup/*.ctl wal/
[sunje@gs01 Sundb_data]$ cp backup/*.dbf db/
Step 7:启动及恢复实例
[sunje@gs01 Sundb_data]$ gs
gSQL> startup mount
Startup success
gSQL> ALTER DATABASE BEGIN INCOMPLETE RECOVERY;
ERR-01000(14104): Warning: suggestion '/home/sunje/product/Sundb_data/archive_log/archive_0.log'
ERR-01000(14103): Warning: media recovery needs a logfile including log (Lsn 180840)
Database altered.
gSQL> ALTER DATABASE RECOVER AUTOMATICALLY;
ERR-01000(14104): Warning: suggestion '/home/sunje/product/Sundb_data/archive_log/archive_7.log'
ERR-01000(14103): Warning: media recovery needs a logfile including log (Lsn 180865)
Database altered.
gSQL> select FILE_NAME,GROUP_STATE from v$logfile where GROUP_STATE='CURRENT';
FILE_NAME GROUP_STATE
---------------------------------------------------- -----------
/home/sunje/product/Sundb_data/wal/redo_2_0.log CURRENT
1 row selected.
gSQL> ALTER DATABASE RECOVER '/home/sunje/product/Sundb_data/wal/redo_2_0.log';
ERR-01000(14104): Warning: suggestion '/home/sunje/product/Sundb_data/archive_log/archive_7.log'
ERR-01000(14103): Warning: media recovery needs a logfile including log (Lsn 180865)
Database altered.
gSQL> ALTER DATABASE END INCOMPLETE RECOVERY;
Database altered.
gSQL> ALTER SYSTEM OPEN DATABASE RESETLOGS;
System altered.
Step 8:查看数据
gSQL> SELECT * FROM HOT_TEST;
C1 C2 C3
-- ---------- ---------------
1 2020-01-31 HOT BACKUP TEST
2 2020-01-31 HOT BACKUP TEST
3 2020-01-31 HOT BACKUP TEST
3 rows selected.
已提交数据为3条,当前表中有3条数据与预期一致,恢复完成。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




