odu恢复truncate 表

Posted liang545621

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了odu恢复truncate 表相关的知识,希望对你有一定的参考价值。

生成测试表
conn liang/chengce243
create table tab_01(id int,name VARCHAR2(128));
insert into tab_01
select OBJECT_ID,OBJECT_NAME
from dba_objects where rownum<=10000;
commit;
 
create table tab_03 as select * from tab_01;
truncate table tab_03;
 
 
恢复的步骤为:
OFFLINE表所在的表空间
生成数据字典:unload dict
扫描数据:scan extent
恢复表:unload table username.tablename object auto
ONLINE表所在的表空间
 
set linesize 180
col FILE_NAME for a50
col VALUE for a8
select ts#,file_id fno#,file_id rfno#,file_name,value
 from V$tablespace t,dba_data_files d,v$parameter p
 where t.name=d.tablespace_name
 and p.name=‘db_block_size‘;
把查询结果贴到control.txt;
 
修改配置文件config.txt output_format 为 DMP
[oracle@hncdf odu]$ cat config.txt 
byte_order little
block_size 8192
db_timezone -7
client_timezone 8
data_path data
charset_name ZHS16GBK
ncharset_name AL16UTF16
output_format DMP
lob_storage infile
clob_byte_order little
 
 
OFFLINE表所在的表空间
SQL> alter tablespace users offline;
 
做一个Checkpoint,让ODU能够读到最新的数据字典数据。
SQL> alter system checkpoint;
 
 
ODU> unload dict
 
 
ODU> scan extent tablespace 4
 
ODU> unload table liang.tab_03 object auto
Auto mode truncated table.
 
Unloading table: TAB_03,object ID: 87361
Unloading segment,storage(Obj#=87361 DataObj#=87361 TS#=4 File#=4 Block#=218 Cluster=0)
10000 rows unloaded
 
 
将测试表所在的users表空间online:
SQL> alter tablespace users online;
 
使用imp导入数据
imp liang/chengce243 file=data/LIANG_TAB_03.dmp
 
 生成测试表
conn liang/chengce243
create table tab_01(id int,name VARCHAR2(128));
insert into tab_01
select OBJECT_ID,OBJECT_NAME
from dba_objects where rownum<=10000;
commit;
 
create table tab_03 as select * from tab_01;
truncate table tab_03;
 
 
恢复的步骤为:
OFFLINE表所在的表空间
生成数据字典:unload dict
扫描数据:scan extent
恢复表:unload table username.tablename object auto
 
 
set linesize 160
col name for a40
select ts#,file#,rfile#,name from v$datafile;
把查询结果贴到control.txt;
 
修改配置文件config.txt output_format 为 DMP
[oracle@hncdf odu]$ cat config.txt 
byte_order little
block_size 8192
db_timezone -7
client_timezone 8
data_path data
charset_name ZHS16GBK
ncharset_name AL16UTF16
output_format DMP
lob_storage infile
clob_byte_order little
 
 
OFFLINE表所在的表空间
SQL> alter tablespace users offline;
 
做一个Checkpoint,让ODU能够读到最新的数据字典数据。
SQL> alter system checkpoint;
 
 
ODU> unload dict
 
 
ODU> scan extent tablespace 4
 
ODU> unload table liang.tab_03 object auto
Auto mode truncated table.
 
Unloading table: TAB_03,object ID: 87361
Unloading segment,storage(Obj#=87361 DataObj#=87361 TS#=4 File#=4 Block#=218 Cluster=0)
10000 rows unloaded
 
 
将测试表所在的users表空间online:
SQL> alter tablespace users online;
 
使用imp导入数据
imp liang/chengce243 file=data/LIANG_TAB_03.dmp fromuser=liang touser=liang
 
参考文档:http://www.laoxiong.net/category/odu
 
 

以上是关于odu恢复truncate 表的主要内容,如果未能解决你的问题,请参考以下文章

truncate表恢复

Oracle表恢复(truncate)

TRUNCATE TABLE恢复系列一:深层剖析内部原理

oracle针对truncate截断表之后要如何恢复数据?急啊!

数据库数据恢复华为云mysql数据库表被truncate,部分表数据被delete的数据恢复案例

deletetruncatedrop区别