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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

oracle表还原truncate,Oracle数据库之Oracle表恢复(truncate)

發布時間:2024/9/19 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle表还原truncate,Oracle数据库之Oracle表恢复(truncate) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要向大家介紹了Oracle數據庫之Oracle表恢復(truncate),通過具體的內容向大家展現,希望對大家學習Oracle數據庫有所幫助。

一、模擬truncate操作:

SQL> conn scott/tiger

SQL> select count(*) from t;

COUNT(*)

----------

13

SQL> truncate table t;

二、恢復truncate表的數據

1.下載hellodba的恢復工具到數據庫服務器

linux下使用終端,如下:

windows下輸入以下網址:

http://www.hellodba.com/Download/FY_Recover_Data.zip

2.解壓下載下來的FY_Recover_Data.pck

[oracle@rac1 ~]$ unzip FY_Recover_Data.zip

解壓后得到一個文件FY_Recover_Data.SQL

以下3-7步操作均用sys用戶執行

3.使用sys用戶執行解壓后的腳本(我這里解壓后的文件在/home/oracle/)

SQL> @/home/oracle/FY_Recover_Data.SQL

這個腳本實際是在sys用戶下創建了一個名為FY_Recover_Data的package

4.使用sys用戶找出存放truncate表的數據文件路徑,下一步會用到這個文件路徑

SQL> select file_name from dba_data_files f, dba_tables t where t.owner='SCOTT' and t.table_name='T' and t.tablespace_name = f.tablespace_name;

查得結果是/u01/oracle/oradata/orcl/users01.dbf

5.使用sys用戶執行以下操作開始恢復:

declare

tgtowner varchar2(30);

tgttable varchar2(30);

datapath varchar2(4000);

datadir varchar2(30);

rects varchar2(30);

recfile varchar2(30);

rstts varchar2(30);

rstfile varchar2(30);

blksz number;

rectab varchar2(30);

rsttab varchar2(30);

copyfile varchar2(30);

begin

tgtowner := 'SCOTT'; --table owner

tgttable := 'T';??--table name

datapath := '/u01/oracle/oradata/orcl/';? ? --必須和被truncate表所在的數據文件的目錄相同

datadir := 'FY_DATA_DIR';? ?? ???--oracle中目錄的名字,可以修改

Fy_Recover_data.prepare_files(tgtowner, tgttable, datapath, datadir, rects, recfile, rstts, rstfile, blksz);

Fy_Recover_data.fill_blocks(tgtowner, tgttable, datadir, rects, recfile, rstts, 8, tgtowner, tgtowner, rectab, rsttab, copyfile);

Fy_Recover_data.recover_table(tgtowner, tgttable, tgtowner, rectab, tgtowner, rsttab, datadir, datadir, recfile,datadir, copyfile, blksz);

end;

/

注:執行上的SQL產生2個表空間FY_REC_DATA、FY_RST_DATA,還有1個copy文件。

6.使用sys用戶把恢復的數據從scott.t$$中插回scott.t表

注:scott.t$$中是scott.t表truncate之前的數據

SQL> insert into scott.t select * from scott.t$$;

13 rows created.

SQL> commit;

Commit complete.

SQL> select count(*) from t;

COUNT(*)

----------

13

可以看到被truncate的數據已經恢復。

7.使用sys用戶刪除恢復時產生的2個表空間及數據文件

SQL> drop tablespace fy_rec_data including contents and datafiles;

Tablespace dropped.

SQL> drop tablespace fy_rst_data including contents and datafiles;

Tablespace dropped.

本文由職坐標整理并發布,希望對同學們學習Oracle有所幫助,更多內容請關注職坐標數據庫Oracle數據庫頻道!

總結

以上是生活随笔為你收集整理的oracle表还原truncate,Oracle数据库之Oracle表恢复(truncate)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。