Oracle表恢複(truncate)

來源:互聯網
上載者:User

標籤:

一、類比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
[[email protected] ~]$ 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表恢複(truncate)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.