首页 > 数据库 > Oracle > odu的truncate恢复
用老熊的odu又试着做了一下truncate表的恢复,一切都还算很轻松的实现了。
SQL>
create table odu_xiaoyu02 as select * from dba_Objects;
Table
created
SQL>
insert into odu_xiaoyu02 select * from odu_xiaoyu02;
71940
rows inserted
SQL>
/
143880
rows inserted
SQL>
/
287760
rows inserted
SQL>
/
575520
rows inserted
SQL>
/
1151040
rows inserted
SQL>
select count(*) from odu_xiaoyu02;
COUNT(*)
----------
2302080
SQL>
truncate table odu_xiaoyu02;
Table
truncated
Truncate和drop其底层都只是在数据文件的块头标记该exten为0,也就是可以被后续的事务重用,所以第一步是offline该表空间放置数据被过多的覆盖。
SQL>
alter tablespace users offline;
Tablespace altered
配置好config.ctl文件后开始用odu抽取
load control file
'config.txt' successful
loading default
control file ......
ts#
fn rfn bsize blocks bf offset filename
---- ---- ----
----- -------- -- ------ ---------------------------
----
0
1 1 8192
87040 N 0
F:APPORADATAXIAOYUsystem01.dbf
4
4 4 8192
45760 N 0
F:APPORADATAXIAOYUUSER01.dbf
load control file
'control.txt' successful
loading dictionary
data......
ODU> unload dict
CLUSTER C_USER#
file_no: 1 block_no: 208
TABLE OBJ$ file_no:
1 block_no: 240
CLUSTER C_OBJ#
file_no: 1 block_no: 144
CLUSTER C_OBJ#
file_no: 1 block_no: 144
found
found
found TABPART$'s
obj# 576
found TABPART$'s
dataobj#:576,ts#:0,file#:1,block#:3824,tab#:0
found INDPART$'s
obj# 581
found INDPART$'s
dataobj#:581,ts#:0,file#:1,block#:3872,tab#:0
found TABSUBPART$'s
obj# 588
found TABSUBPART$'s
dataobj#:588,ts#:0,file#:1,block#:3928,tab#:0
found INDSUBPART$'s
obj# 593
found INDSUBPART$'s
dataobj#:593,ts#:0,file#:1,block#:3968,tab#:0
found
found
found LOB$'s obj#
80
found LOB$'s
dataobj#:2,ts#:0,file#:1,block#:144,tab#:6
found LOBFRAG$'s
obj# 609
found LOBFRAG$'s
dataobj#:609,ts#:0,file#:1,block#:4096,tab#:0
ODU> desc
xiaoyu.odu_xiaoyu02
Object ID:73631
Storage(Obj#=73631
DataObj#=73632 TS#=4 File#=4 Block#=698 Cluster=
NO. SEG INT Column Name Null? Type
--- --- ---
------------------------------ --------- --------------
---
1
1 1 OWNER
VARCHAR2(30)
2
2 2 OBJECT_NAME VARCHAR2(128)
3
3 3 SUBOBJECT_NAME VARCHAR2(30)
4
4 4 OBJECT_ID NUMBER
5
5 5 DATA_OBJECT_ID NUMBER
6
6 6 OBJECT_TYPE VARCHAR2(19)
7
7 7 CREATED DATE
8
8 8 LAST_DDL_TIME DATE
9
9 9 TIMESTAMP VARCHAR2(19)
10
10 10 STATUS VARCHAR2(7)
11
11 11 TEMPORARY VARCHAR2(1)
12
12 12 GENERATED VARCHAR2(1)
13
13 13 SECONDARY VARCHAR2(1)
14
14 14 NAMESPACE NUMBER
15
15 15 EDITION_NAME VARCHAR2(30)
ODU> scan extent
tablespace 4
scan extent start:
2012-08-02 23:49:26
scanning extent...
scanning extent
finished.
scan extent
completed: 2012-08-02 23:49:33
scan扫描这个tablespace 4然后抽取。
ODU> unload
table xiaoyu.odu_xiaoyu02 object auto
Auto mode truncated
table.
Unloading table:
ODU_XIAOYU02,object ID: 73631
Unloading
segment,storage(Obj#=73631 DataObj#=73631 TS#=4 File#=4 Block#=698 Clu
ster=0)
2302080 rows unloaded
接下来用sqlldr导入即可,像odu的工具还有oracle的dul和dcba写的aul抽取,都是从底层抽取数据的方式,有新的测试用例后面会陆续分享给大家。
[@more@]
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25362835/viewspace-1059071/ ,如需转载,请注明出处,否则将追究法律责任。