oracle --工具 ODU


一,什么是ODU

ODU全稱為Oracle Data ba se Unloader ,是用於Oracle 數據庫緊急恢復的軟件,在各種原因
造成的數據庫不能打開或數據刪除后沒有備份時,使用ODU搶救數據,最大限度地減少數
據丟失。 
 
現實中總會有很多的意外,數據被意外刪除、硬件問題導致數據庫損壞、錯誤地格式化了
ASM磁盤等等,在沒有備份的情況下,ODU能夠通過直接訪問Oracle 數據庫數據文件或直
接訪問ASM磁盤,恢復出所有完好的數據,以避免所有數據丟失造成的損失。 

二,odu功能特點

 

01, 不需要運行Oracle 數據庫軟件,ODU直接讀取數據庫文件和ASM磁盤進行數據解析。
在由於硬件問題或人為誤操作引起數據損壞時,Oracle 數據庫軟件為遵行數據完整性和
一致性原則,往往不能打開數據庫對數據庫進行訪問,而ODU可以繞過Oracle 數據庫
軟件,直接從Oracle 數據庫文件和ASM磁盤中解析數據,從而恢復數據。 
02, 支持ASM,能夠直接從ASM磁盤中解析數據。即使Oracle 數據文件存儲在ASM磁盤 中,ODU仍然能夠直接從ASM磁盤中讀取數據,即使由於硬件或錯誤地FORMAT 導 致ASM磁盤頭部數據損壞而導致ASM 磁盤組不能加載時,ODU仍然能夠從ASM中 恢復數據。 03, 支持從ASM磁盤組中直接抽取出數據文件和其他任意存儲在ASM磁盤組中的文件, 並保存為文件。比如可以將ASM磁盤組中的在線日志文件、控制文件等文件抽取出來 保存到文件系統中。 04, 多版本Oracle 支持,支持的Oracle 數據庫版本包括7, 8i,
9i, 10g, 11g 。 05, 自動檢測數據文件的表空間號和文件號,在只知道數據文件名而不知道數據文件所屬表 空間等信息時,ODU能夠自動獲取這些信息。 06, 在有SYSTEM 表空間的情況下,自動解析和獲取數據字典信息。這樣使用ODU恢復 的數據能夠生成與原來一樣的用戶名以及列類型。 07, 支持各種類型的表,包括普通的HEAP 表,IOT 表和聚簇(CLUSTER)表。 08, 支持類似於SQLPLUS 的DESC 命令,以顯示表的列定義。 09, 支持10g 及以上的大文件(BigFile) 表空間。 10, 可以列出表的分區和子分區,並能夠指定只需要恢復的分區和子分區。 11, 支持表被Truncate 后的數據恢復。由於表被Truncate 之后,只能使用備份或database 級的flashb ac k(10 g 以上的新功能)才能恢復Truncate 的數據。在沒有備份、備份不可 用或Data base Fl ashb ack 沒有開啟時,將不能使用正常的方法來恢復數據。ODU可以在 Truncat e 的表的空間沒有被占用的情況下恢復出Trunca t e 之前的數據。 12, 支持表被Drop 之后的數據恢復,如果表被Drop 同時Drop 的表之前的空間沒有被占用, 則可以使用ODU恢復被Drop 的表之前的數據。 13, 支持壓縮表,ODU能夠恢復Oracle 壓縮表的數據。 14, 支持在沒有SYSTEM 表空間和數據字典損壞的情況下恢復數據,在沒有數據字典可用 時,ODU能夠自動判斷數據的類型。 15,支持IOT 表的恢復: 9 支持普通IOT 表 9 支持壓縮IOT 表 9 支持IOT 表溢出段 9 支持IOT 表分區(包括子分區) 16,支持多種平台的數據庫和跨平台數據恢復,包括AIX 、LI NUX、HPU X 、SOLARI S 、 WINDOWS所有主流的操作系統和平台。這里包括有兩種含義,第一是ODU有多個平 台的版本,能夠在所有主流的操作系統上運行;其二是能夠在一個平台上恢復其他平台 上的Oracle 數據庫數據,比如在可以將AIX 系統上的Oracle 數據文件復制到Li nu x 系 統上,然后使用Li nux 系統的ODU來恢復,反之亦然。 17,支持的數據類型包括:NUMBER, CHAR, VARCHAR2, NCHAR,NVARHCAR2, LONG, DATE, RAW, LONG RAW, BLOB, CLOB, TIMESTAMP (9i+) , BINARY FLOAT, BINARY DO UBLE (10g +) 。 18,恢復的數據能夠以純文本和DMP文件兩種格式存儲。以純文本導出時,能夠自動生成 建表所需的SQL 語句和SQLLDR 導入所需的CONTROL 文件(.CTL) ,以DMP文件 格式存儲的數據,能夠使用Oracle 自帶的imp 命令導入到數據庫中。 19,支持同一個庫中不同的塊大小的數據文件。 全面支持LOB 字段: 9 支持CLOB、NCLOB和BLOB 9 CLOB 支持Bi g En di an 和Little E n di an 字節序 9 支持LOB 分區,子分區 9 支持同一個表中,不同LOB 列使用不同CHUNK SIZE 的情況 9 CLOB 數據可以導出到與其他列相同的文件中,或存儲到單獨的文件中 9 LOB 列在沒有SYSTEM 表空間的情況下仍然能夠導出 20, 支持多種字符集之間的轉換,能夠正確的轉換CLOB 、NCLOB、NVARCHAR2 列類型 的數據到與數據庫相同的字符集。 ODU全面支持64 位系統,支持超過4G大小的數據文件。 21, 支持復制操作系統命令不能復制的壞文件。由於存儲硬件問題導致數據庫中數據文件 部分損壞,並且此時操作系統的相關操作不能正常讀取該文件時,可以使用ODU復制 這樣的文件到其他位置,以替換掉損壞的文件或存儲陣列。

三,安裝使用

  01,初步使用

   軟件下載:https://files.cnblogs.com/files/kingle-study/odu_433_linux_x86.tar.gz

  解壓軟件

tar zxvf odu_433_linux_x86.tar.gz
[oracle@standby2 odu]$ ll
total 2272
-rwxrwxrwx 1 oracle oinstall      87 May 24 15:46 asmdisk.txt
-rwxrwxrwx 1 oracle oinstall     559 Apr  7  2011 config.txt
-rwxrwxrwx 1 oracle oinstall     118 Mar 22  2011 control.txt
drwxr-xr-x 2 oracle oinstall    4096 May 15  2009 data
-rwxr-xr-x 1 oracle oinstall 2306912 Apr  7  2014 odu 
 
ODU軟件解壓后,通常有下列文件和目錄: 
odu ODU 可執行文件,這是ODU主程序。 
config txt  ODU 配置文件。 
control.txt ODU 控制文件,用於在數據恢復時指定使用的Oracle 數據庫文件。 
asmdisk.txt ASM 磁盤信息設置文件,用於在數據恢復時指定使用的ASM磁盤組磁盤。 
lib ODU 軟件庫文件目錄,在某些平台上沒有此目錄。 
data ODU 默認的數據目錄,用於存儲ODU恢復出來的數據。 

  02,軟件使用

    編輯文件

[oracle@standby2 odu]$ cat control.txt
#ts fno   rfno     filename                                          block_size  is_big_file header_offset blocks

0 0 0 /oradata/oracle01/sysaux01.dbf
0 0 0 /oradata/oracle01/system01.dbf
0 0 0 /oradata/oracle01/temp01.dbf
0 0 0 /oradata/oracle01/undotbs01.dbf
0 0 0 /oradata/oracle01/users01.dbf

    寫上數據文件的路徑 

    然后運行odu主程序

[oracle@standby2 odu]$ ./odu

Oracle Data Unloader:Release 4.3.3

Copyright (c) 2008-2014 XiongJun. All rights reserved.

Web: http://www.oracleodu.com
Email: magic007cn@gmail.com

loading default config.......

byte_order little
block_size  8192
block_buffers 1024
db_timezone -7
Invalid db timezone:-7
client_timezone 8
Invalid client timezone:8
asmfile_extract_path   /asmfile
data_path   data
lob_path    /odu/data/lob
charset_name US7ASCII
ncharset_name AL16UTF16
output_format text
lob_storage infile
clob_byte_order big
trace_level 1
delimiter |
unload_deleted no
file_header_offset 0
is_tru64 no
record_row_addr no
convert_clob_charset yes
use_scanned_lob  yes
trim_scanned_blob yes
lob_switch_dir_rows 20000
db_block_checksum yes
db_block_checking yes
rdba_file_bits 10
compatible 10
load config file 'config.txt' successful
loading default asm disk file ......


grp# dsk# bsize ausize disksize diskname        groupname       path
---- ---- ----- ------ -------- --------------- --------------- --------------------------------------------

load asm disk file 'asmdisk.txt' successful
loading default control file ......


 ts#   fn  rfn bsize   blocks bf offset filename
---- ---- ---- ----- -------- -- ------ --------------------------------------------
   1    2    2  8192    76800 N       0 /oradata/oracle01/sysaux01.dbf
   0    1    1  8192    89600 N       0 /oradata/oracle01/system01.dbf
   3    1    1  8192     7552 N       0 /oradata/oracle01/temp01.dbf
   2    3    3  8192    73600 N       0 /oradata/oracle01/undotbs01.dbf
   4    4    4  8192      640 N       0 /oradata/oracle01/users01.dbf
load control file 'control.txt' successful
loading dictionary data......done

loading scanned data......done

ODU>
ODU> save control

The file write completed.
ODU> exit
ODU>


保存文件,這時候在在目錄下面生成一個新的文件
[oracle@standby2 odu]$ ls
asmdisk.txt  config.txt  control.txt  data  odu  oductl.txt  odu_trace.txt

 

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM