odu在aix raw环境下恢复truncate数据测试

发布于:2025-08-01 ⋅ 阅读:(16) ⋅ 点赞:(0)

aix6.1+oracle10.2.0.5+raw

查询表所在的数据文件:
select file_name,file_id from dba_data_files where file_id in (select distinct file_id from dba_extents where segment_name='TEST');

注意有偏移量问题,4096.

另外也可以通过rman copy datafile 'xxx' to 'xxx'来恢复提取数据。
$ ./odu

Oracle Data Unloader:Release 3.0.8

Copyright (c) 2008,2009 XiongJun. All rights reserved.

Web: http://www.laoxiong.net
Email: magic007cn@gmail.com

loading default config.......

byte_order big
block_size  8192
data_path   data
lob_path    lob
charset_name ZHS16GBK
ncharset_name AL16UTF16
output_format text
lob_storage infile
clob_byte_order little
trace_level 1
delimiter |
file_header_offset 4096


load control file 'config.txt' successful
loading default control file ......


 ts#   fn  rfn bsize   blocks bf offset filename
---- ---- ---- ----- -------- -- ------ --------------------------------------------
   0    1    1  8192   131072 N    4096 /dev/rora_system
   1    2    2  8192   153600 N    4096 /dev/rora_undo01
   2    3    3  8192   131072 N    4096 /dev/rora_sysaux
   4    4    4  8192   153600 N    4096 /dev/rora_undo02
   5    5    5  8192   131072 N    4096 /dev/rora_users01
   5    6    6  8192   131072 N    4096 /dev/rora_users02
load control file 'control.txt' successful
loading dictionary data......

ODU> unload dict
CLUSTER C_USER# file_no: 1 block_no: 89
TABLE OBJ$ file_no: 1 block_no: 121
CLUSTER C_OBJ# file_no: 1 block_no: 25
CLUSTER C_OBJ# file_no: 1 block_no: 25
found IND$'s obj# 19
found IND$'s dataobj#:2,ts#:0,file#:1,block#:25,tab#:3
found TABPART$'s obj# 266
found TABPART$'s dataobj#:266,ts#:0,file#:1,block#:2121,tab#:0
found INDPART$'s obj# 271
found INDPART$'s dataobj#:271,ts#:0,file#:1,block#:2161,tab#:0
found TABSUBPART$'s obj# 278
found TABSUBPART$'s dataobj#:278,ts#:0,file#:1,block#:2217,tab#:0
found INDSUBPART$'s obj# 283
found INDSUBPART$'s dataobj#:283,ts#:0,file#:1,block#:2257,tab#:0
found IND$'s obj# 19
found IND$'s dataobj#:2,ts#:0,file#:1,block#:25,tab#:3
found LOB$'s obj# 151
found LOB$'s dataobj#:2,ts#:0,file#:1,block#:25,tab#:6
found LOBFRAG$'s obj# 299
found LOBFRAG$'s dataobj#:299,ts#:0,file#:1,block#:2393,tab#:0
ODU> desc jyc.test


Object ID:52190
Storage(Obj#=52190 DataObj#=52382 TS#=5 File#=6 Block#=75 Cluster=0)

NO. SEG INT Column Name                    Null?     Type                         
--- --- --- ------------------------------ --------- ------------------------------
  1   1   1 USERNAME                       NOT NULL  VARCHAR2(30)                 
  2   2   2 USER_ID                        NOT NULL  NUMBER                       
  3   3   3 PASSWORD                                 VARCHAR2(30)                 
  4   4   4 ACCOUNT_STATUS                 NOT NULL  VARCHAR2(32)                 
  5   5   5 LOCK_DATE                                DATE                         
  6   6   6 EXPIRY_DATE                              DATE                         
  7   7   7 DEFAULT_TABLESPACE             NOT NULL  VARCHAR2(30)                 
  8   8   8 TEMPORARY_TABLESPACE           NOT NULL  VARCHAR2(30)                 
  9   9   9 CREATED                        NOT NULL  DATE                         
 10  10  10 PROFILE                        NOT NULL  VARCHAR2(30)                 
 11  11  11 INITIAL_RSRC_CONSUMER_GROUP              VARCHAR2(30)                 
 12  12  12 EXTERNAL_NAME                            VARCHAR2(4000)               

ODU> unload table jyc.test object auto
Auto mode truncated table.

Unloading table: TEST,object ID: 52190
Unloading segment,storage(Obj#=52190 DataObj#=52193 TS#=5 File#=6 Block#=75 Cluster=0)
0 rows unloaded

ODU> scan extent tablespace 5

scan extent start: 2012-11-14 09:21:06
scanning extent...
scanning extent finished.
scan extent completed: 2012-11-14 09:23:52

ODU> unload table jyc.test object auto
Auto mode truncated table.

Unloading table: TEST,object ID: 52190
Unloading segment,storage(Obj#=52190 DataObj#=52193 TS#=5 File#=6 Block#=75 Cluster=0)
22 rows unloaded

ODU> exit
$ ls
col.odu      control.txt  db.txt       ind.odu      lobfrag.odu  odu          t.txt        user.odu
config.txt   data         ext.odu      lob.odu      obj.odu      segment.txt  tab.odu
$ cd data
$ ls
JYC_TEST.ctl  JYC_TEST.log  JYC_TEST.sql  JYC_TEST.txt
$ sqlldr jyc/jyc control=JYC_TEST.ctl                    

SQL*Loader: Release 10.2.0.5.0 - Production on Wed Nov 14 17:25:22 2012

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

Commit point reached - logical record count 22
$ sqlplus /nolog

SQL*Plus: Release 10.2.0.5.0 - Production on Wed Nov 14 17:25:27 2012

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

SQL> conn /as sysdba
Connected.
SQL> select count(*) from jyc.test;

  COUNT(*)
----------
        22

SQL>