Oracle Database Unloader快速上手

http://tech.it168.com/a2009/0727/613/000000613065_1.shtml

本文將以ODU 2.1.0 for Windows版,介紹如何使用ODU。本文只是一個快速上手指南,以後將詳細介紹ODU的使用。

在本網站下載到ODU的Windows版本,是一個ZIP壓縮文件,解壓縮到一個目錄,比如解壓到d:/,將會看到d:/odu目錄下有如下的文件和目錄:

D:/odu>dir
驅動器 D 中的卷沒有標籤。
卷的序列號是 045E-00DE

D:/odu 的目錄

2009-02-08  22:12    <DIR>          .
2009-02-08  22:12    <DIR>          ..
2009-02-08  01:16               218 config.txt
2009-02-08  01:16                99 control.txt
2009-02-08  22:12    <DIR>          data
2004-10-14  00:08           978,432 libiconv2.dll
2009-02-08  19:00           135,168 odu.exe
               4 個文件      1,113,917 字節
               3 個目錄  1,738,174,464 可用字節

D:/odu>

如果沒有data目錄,請手工新建一個。

config.txt文件是ODU的配置文件,默認的配置數據如下:

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

默認的配置基本能滿足大部分的需求。

control.txt文件是ODU的數據文件信息文件。你可以理解爲類似於Oracle數據庫的控制文件,存放了ODU導出數據時需要的Oracle數據文件信息。

control.txt文件中的數據格式爲:

表空間號 文件號 相對文件號 文件名 塊大小 是否大文件表空間

每列之間用空白分隔,可以只需要前四列,即塊大小和是否大文件表空間可省略,塊大小省略時,數據文件的默認塊大小爲config.txt中block_size的大小。下面是一個示例的數據:

#ts #fno   #rfno     filename                                          block_size    bigfile
        0          1          1 D:/ORACLE/ORADATA/XJ/SYSTEM01.DBF              4096    
        1          2          2 D:/ORACLE/ORADATA/XJ/UNDOTBS01.DBF             4096
        3          3          3 D:/ORACLE/ORADATA/XJ/DRSYS01.DBF               4096
        4          4          4 D:/ORACLE/ORADATA/XJ/EXAMPLE01.DBF             4096
        5          5          5 D:/ORACLE/ORADATA/XJ/INDX01.DBF                4096
        6          6          6 D:/ORACLE/ORADATA/XJ/ODM01.DBF                 4096
        7          7          7 D:/ORACLE/ORADATA/XJ/TOOLS03.DBF               4096
        7          8          8 D:/ORACLE/ORADATA/XJ/TOOLS02.DBF               4096
        9          9          9 D:/ORACLE/ORADATA/XJ/XDB01.DBF                 4096
       11         10         10 D:/ORACLE/ORADATA/XJ/TEST01.DBF                2048
       14         11         11 D:/ORACLE/ORADATA/XJ/K16.DBF                  16384

如果數據文件頭是完好的,則ODU會自動從文件頭裏面獲取表空間號,文件號,相對文件號,文件塊大小等。表空間號,文件號和相對文件號可以寫爲0。
注意:ODU將檢查control.txt文件中的第一個數據文件是否爲SYSTEM表空間文件,所以要將SYSTEM表空間的第1個文件放在control.txt文件中的第一行。否則將不能自動獲得數據字典數據。

運行odu命令,顯示如下的信息:

Oracle Data Unloader:Release 2.1.0

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

Web: http://www.laoxiong.net
Email: [email protected]

loading default config…….

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

load control file ‘config.txt’ successful
loading default control file ……

load control file ‘config.txt’ successful
loading default control file ……

 ts#   fn  rfn bsize   blocks bf filename
---- ---- ---- ----- -------- -- --------------------------------------------
   0    1    1  4096   128000 N  D:/ORACLE/ORADATA/XJ/SYSTEM01.DBF
   1    2    2  4096    51200 N  D:/ORACLE/ORADATA/XJ/UNDOTBS01.DBF
   3    3    3  4096     5120 N  D:/ORACLE/ORADATA/XJ/DRSYS01.DBF
   4    4    4  4096    37280 N  D:/ORACLE/ORADATA/XJ/EXAMPLE01.DBF
   5    5    5  4096     6400 N  D:/ORACLE/ORADATA/XJ/INDX01.DBF
   6    6    6  4096     5120 N  D:/ORACLE/ORADATA/XJ/ODM01.DBF
   7    7    7  4096     5120 N  D:/ORACLE/ORADATA/XJ/TOOLS03.DBF
   7    8    8  4096      512 N  D:/ORACLE/ORADATA/XJ/TOOLS02.DBF
   9    9    9  4096     9760 N  D:/ORACLE/ORADATA/XJ/XDB01.DBF
  11   10   10  2048    56655 N  D:/ORACLE/ORADATA/XJ/TEST01.DBF
  14   11   11 16384      256 N  D:/ORACLE/ORADATA/XJ/K16.DBF
load control file ‘control.txt’ successful
loading dictionary data……

ODU>

顯示完上面的信息後,將會顯示如sqlplus類似的提示符“ODU >”,在此提示符下,輸入命令。

輸入命令unload dict,將從SYSTEM表空間中導出數據字典,並存儲在.odu文件中。下次打開odu時,odu會自動從生成的文件中裝入數據字典。unload dict命令顯示的結果如下:

ODU> unload dict
CLUSTER C_USER# file_no: 1 block_no: 177
TABLE OBJ$ file_no: 1 block_no: 241
CLUSTER C_OBJ# file_no: 1 block_no: 49
CLUSTER C_OBJ# file_no: 1 block_no: 49
found IND$’s obj# 19
found IND$’s dataobj#:2,ts#:0,file#:1,block#:49,tab#:3
found TABPART$’s obj# 230
found TABPART$’s dataobj#:230,ts#:0,file#:1,block#:3313,tab#:0
found INDPART$’s obj# 234
found INDPART$’s dataobj#:234,ts#:0,file#:1,block#:3377,tab#:0
found TABSUBPART$’s obj# 240
found TABSUBPART$’s dataobj#:240,ts#:0,file#:1,block#:3473,tab#:0
found INDSUBPART$’s obj# 245
found INDSUBPART$’s dataobj#:245,ts#:0,file#:1,block#:3553,tab#:0
found IND$’s obj# 19
found IND$’s dataobj#:2,ts#:0,file#:1,block#:49,tab#:3
found LOB$’s obj# 156
found LOB$’s dataobj#:2,ts#:0,file#:1,block#:49,tab#:6
found LOBFRAG$’s obj# 258
found LOBFRAG$’s dataobj#:258,ts#:0,file#:1,block#:3761,tab#:0
ODU>

輸入HELP命令可以查看ODU支持的命令列表:

ODU> help
help      ----   get command list
exit      ----   exit from odu
spool     ----   spool information to file
host      ----   enter os terminal
load config ----   load config information from file
open      ----   load database filename list from file
osdump    ----   dump file format hex
dump      ----   dump oracle datafile block
rowid     ----   decode rowid components
unload    ----   unload data
list      ----   list schema object,partition,datafile
charset   ----   get or list supported charset name

輸入命令unload table test.t1,即可導出TEST用戶下的T1表:

ODU> unload table test.t1

Unloading table: T1,object ID: 31388
Unloading segment,storage(Obj#=31388 DataObj#=31388 TS#=11 File#=10 Block#=1465 Cluster=0)

執行完此命令後,會在data目錄下生成三個文件:

TEST_T1.ctl
TEST_T1.sql
TEST_T1.txt

TEST_T1.ctl是用於sqlldr裝入數據所需要的控制文件,TEST_T1.sql是建表SQL腳本,TEST_T1.txt是導出的數據。
我們可以用sql文件建表,然後使用sqlldr裝入數據。
      原文見老熊的網站:www.laoxiong.net

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章