暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Truncate异常恢复二之DBMS恢复

原创 肖杰 2021-11-30
1106

Truncate异常恢复一之Truncate前后对比
Truncate异常恢复二之DBMS恢复
Truncate异常恢复三之GDUL恢复
Truncate异常恢复四之BBED恢复
Truncate异常恢复四之BBED恢复

构建测试表

SQL> create table test_trun as select * from dba_objects; Table created. SQL> select count(*) from test_trun; COUNT(*) ---------- 72885

创建DBMS包

SQL> @FY_Recover_Data.pck Enter value for files: recover Package created. Package body created.

恢复测试

SQL> truncate table devin.test_trun; Table truncated. SQL> exec fy_recover_data.recover_truncated_table('devin','test_trun'); 17:02:57: Use existing Directory Name: FY_DATA_DIR 17:02:59: Recover Table: DEVIN.TEST_TRUN$ 17:02:59: Restore Table: DEVIN.TEST_TRUN$$ 17:03:05: Copy file of Recover Tablespace: FY_REC_DATA_COPY.DAT 17:03:05: begin to recover table DEVIN.TEST_TRUN 17:03:05: Use existing Directory Name: TMP_HF_DIR 17:03:05: Recovering data in datafile /u01/app/oracle/oradata/HKORA/datafile/o1_mf_devin_hwyb1byq_.dbf 17:03:05: Use existing Directory Name: TMP_HF_DIR 17:04:09: 1426 truncated data blocks found. 17:04:09: 72885 records recovered in backup table DEVIN.TEST_TRUN$$ 17:04:09: Total: 1426 truncated data blocks found. 17:04:09: Total: 72885 records recovered in backup table DEVIN.TEST_TRUN$$ 17:04:09: Recovery completed. 17:04:09: Data has been recovered to DEVIN.TEST_TRUN$$ PL/SQL procedure successfully completed. SQL> select count(*) from devin.test_trun$$; COUNT(*) ---------- 72885 SQL> insert into devin.test_trun select * from devin.test_trun$$; 72885 rows created. SQL> commit; Commit complete. SQL> select count(*) from devin.test_trun; COUNT(*) ---------- 72885

离线数据文件恢复测试

新版fy_recover_data支持离线数据文件扫描恢复,测试如下:

SQL> create table devin.test_trun as select * from dba_objects; Table created. SQL> select count(*) from devin.test_trun; COUNT(*) ---------- 72901 SQL> select table_name,tablespace_name from dba_tables where table_Name='TEST_TRUN'; TABLE_NAME TABLESPACE_NAME -------------------------------------------------------- TEST_TRUN DEVIN SQL> truncate table devin.test_trun; Table truncated. SQL> !cp /u01/app/oracle/oradata/HKORA/datafile/o1_mf_devin_hwyb1byq_.dbf /tmp/datafile_devin.dbf SQL> exec fy_recover_data.recover_truncated_table('DEVIN','TEST_TRUN',1,'/tmp','/tmp/datafile_devin.dbf'); 17:10:53: Use existing Directory Name: FY_DATA_DIR 17:10:54: Recover Table: DEVIN.TEST_TRUN$ 17:10:54: Restore Table: DEVIN.TEST_TRUN$$ 17:10:59: Copy file of Recover Tablespace: FY_REC_DATA_COPY.DAT 17:10:59: begin to recover table DEVIN.TEST_TRUN 17:11:00: Use existing Directory Name: TMP_HF_DIR 17:11:00: Recovering data in datafile /tmp/datafile_devin.dbf 17:11:00: Use existing Directory Name: FY_DATA_DIR 17:12:08: 1421 truncated data blocks found. 17:12:08: 72901 records recovered in backup table DEVIN.TEST_TRUN$$ 17:12:08: Total: 1421 truncated data blocks found. 17:12:08: Total: 72901 records recovered in backup table DEVIN.TEST_TRUN$$ 17:12:08: Recovery completed. 17:12:08: Data has been recovered to DEVIN.TEST_TRUN$$ PL/SQL procedure successfully completed. SQL> select count(*) from devin.test_trun; COUNT(*) ---------- 0 SQL> select count(*) from devin.test_trun$$; COUNT(*) ---------- 72901 SQL> insert into devin.test_trun select * from devin.test_trun$$; 72901 rows created. SQL> commit; Commit complete. SQL> select count(*) from devin.test_trun; COUNT(*) ---------- 72901
最后修改时间:2021-11-30 08:40:03
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论