ITPub博客

首页 > 数据库 > Oracle > odu的truncate恢复

odu的truncate恢复

原创 Oracle 作者:dotaddjj 时间:2012-08-03 00:02:47 0 删除 编辑

用老熊的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 IND$'s obj# 19

found IND$'s dataobj#:2,ts#:0,file#:1,block#:144,tab#:3

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 IND$'s obj# 19

found IND$'s dataobj#:2,ts#:0,file#:1,block#:144,tab#:3

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/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: odu的drop恢复
请登录后发表评论 登录
全部评论
  • 博文量
    220
  • 访问量
    1662977