日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

使用Fy_Recover_data恢复被truncate的表

發(fā)布時(shí)間:2023/12/29 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Fy_Recover_data恢复被truncate的表 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

參考文檔:

Fy_Recover_Data ———— 用于數(shù)據(jù)恢復(fù)的PLSQL包 [HelloDBA.COM]

移花接木————利用Oracle表掃描機(jī)制恢復(fù)被Truncate的數(shù)據(jù) [HelloDBA.COM]?

?詳細(xì)的原理,可以看以上的兩個(gè)文檔,以上兩個(gè)文檔是作者的文檔。

-- 創(chuàng)建測(cè)試表,并將其truncate掉?

conn / as sysdba create table test as select * from dba_objects ; select count(*) from test;SQL> select count(*) from test;COUNT(*) ----------73019SQL>

-- truncate掉表?

truncate table test; select count(*) from test;SQL> truncate table test;表被截?cái)唷QL> select count(*) from test;COUNT(*) ----------0SQL>

-- 導(dǎo)入FY_Recover_Data.pck包?

sqlplus /nolog conn / as sysdba @d:\FY_Recover_Data.pckSQL> @d:\FY_Recover_Data.pck 輸入 files 的值: 30 原值 30: -- 1. Temp Restore and Recover tablespace & files --- 新值 30: -- 1. Temp Restore and Recover tablespace 30 ---程序包已創(chuàng)建。程序包體已創(chuàng)建。SQL>

-- 開始執(zhí)行恢復(fù),輸入?yún)?shù)schema,table_name ,如果出現(xiàn)無法寫入文件的報(bào)錯(cuò),建立對(duì)應(yīng)的文件夾,這里報(bào)錯(cuò)無法創(chuàng)建'c:\temp\FY_REC_DATA.DAT,手工創(chuàng)建c:\temp后執(zhí)行成功

set serveroutput on exec fy_recover_data.recover_truncated_table('SYS','TEST');D:\app\19c\OPatch>sqlplus /nologSQL*Plus: Release 19.0.0.0.0 - Production on 星期六 7月 9 16:21:56 2022 Version 19.15.0.0.0Copyright (c) 1982, 2021, Oracle. All rights reserved.SQL> conn / as sysdba 已連接。 SQL> set serveroutput on SQL> exec fy_recover_data.recover_truncated_table('SYS','TEST'); 16:23:51: Use existing Directory Name: FY_DATA_DIR 16:23:52: Recover Tablespace: FY_REC_DATA; Data File: FY_REC_DATA.DAT 16:23:52: Restore Tablespace: FY_RST_DATA; Data File: FY_RST_DATA.DAT 16:23:52: Recover Table: SYS.TEST$ 16:23:53: Restore Table: SYS.TEST$$ 16:24:01: Copy file of Recover Tablespace: FY_REC_DATA_COPY.DAT 16:24:01: begin to recover table SYS.TEST 16:24:02: New Directory Name: TMP_HF_DIR 16:24:03: Recovering data in datafile D:\APP\ZHAOBINBIN\ORADATA\TESTWIN\SYSTEM01.DBF 16:24:03: Use existing Directory Name: TMP_HF_DIR 16:25:09: 1408 truncated data blocks found. 16:25:09: 72713 records recovered in backup table SYS.TEST$$ 16:25:09: Total: 1408 truncated data blocks found. 16:25:09: Total: 72713 records recovered in backup table SYS.TEST$$ 16:25:09: Recovery completed. 16:25:09: Data has been recovered to SYS.TEST$$PL/SQL 過程已成功完成。SQL>

-- 從上面的記錄中,可以看到表被恢復(fù)為sys.test$$?

SQL> select count(*) from test$;COUNT(*) ----------0SQL> select count(*) from test$$;COUNT(*) ----------72713SQL>

-- 將恢復(fù)出來的表的數(shù)據(jù),插入到test表中

insert into test select * from test$$ ; select count(*) from test$$;SQL> insert into test select * from test$$ ;已創(chuàng)建 72713 行。SQL> commit;提交完成。SQL> select count(*) from test$$;COUNT(*) ----------72713SQL>

-- drop掉表test$,test$$,對(duì)test表無影響

SQL> drop table test$ purge;表已刪除。SQL> drop table test$$ purge;表已刪除。SQL> select count(*) from test;COUNT(*) ----------72713SQL>

備注(從網(wǎng)上看到的,自己未測(cè)試):
1 如果truncate后,表又被寫入數(shù)據(jù),有新的數(shù)據(jù)進(jìn)入,則無法用該方法還原出來。
2 如果表數(shù)據(jù)文件塊被覆蓋了。則無法恢復(fù)出完整的數(shù)據(jù)
建議: 表被truncate后,迅速將表所在的表空間或者文件read only。防止數(shù)據(jù)寫入進(jìn)去,然后再使用該方法恢復(fù)。

END

總結(jié)

以上是生活随笔為你收集整理的使用Fy_Recover_data恢复被truncate的表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。