Oracle 表数据恢复 truncate
Oracle 恢复truncate
1.解压下载下来的FY_Recover_Data.pck
from :https://hellodba.com/reader.php?ID=217&lang=CN
2.使用sys用户执行解压后的脚本
SQL> @E:\huifu\FY_Recover_Data.SQL
这个脚本实际是在sys用户下创建了一个名为FY_Recover_Data的package
3.查找表的磁盘位置
SQL> select file_name from dba_data_files f inner join dba_tables t on t.tablespace_name = f.tablespace_name where t.owner='用户名' and t.table_name='表名' ;
--/usr/oracle/oradata/pbcpcr/users01.dbf;
4.用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 := '用户名'; --table owner
tgttable := '表名'; --table name
datapath := 'F:\oradata'; --必须和被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;
4.使用sys用户把恢复的数据从pbcpcr.a$$中插回pbcpcr.a表
SQL> insert into 表名.a select * from 表名.a$$;
13 rows created.
5.使用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.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗