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数据库频道!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值