千家信息网

使用fy_recover_data恢复truncate表的数据

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,1. @/home/oracle/FY_Recover_Data.SQL 创建需要的package[oracle@localhost oradata]$ sqlplus / as sysdbaSQL*
千家信息网最后更新 2025年02月05日使用fy_recover_data恢复truncate表的数据

1. @/home/oracle/FY_Recover_Data.SQL
创建需要的package
[oracle@localhost oradata]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu May 17 00:43:59 2018

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> @/home/oracle/FY_Recover_Data.SQL

Package created.

Package body created.

2. 创建测试数据:
create table scott.test_emp tablespace users as select * from scott.emp;
truncate table scott.test_emp

3. 执行脚本:
注意路径:"/u01/app/oracle/oradata/orcl/"最后的"/"不能缺少
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 := 'TEST_EMP'; --table name

datapath := '/u01/app/oracle/oradata/orcl/'; --必须和test.t1表所在的数据文件的目录相同

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;

执行完成之后,会看到scott用户下多了表:
SQL> select table_name, tablespace_name from dba_tables where owner = 'SCOTT';

TABLE_NAME TABLESPACE_NAME

------------------------------ ------------------------------

DEPT USERS

EMP USERS

BONUS USERS

SALGRADE USERS

TEST_EMP$ FY_REC_DATA

TEST_EMP$$ FY_RST_DATA

TEST_EMP USERS

7 rows selected.

将TEST_EMP$$插回TEST_EMP

FY_Recover_Data.sql


参考:http://www.hellodba.com/reader.php?ID=191&lang=cn

0