使用ODU恢復oracle被truncate的表資料
使用ODU恢復oracle被truncate的表資料
1。ODU 介紹
ODU全稱為Oracle Database Unloader,是類似於Oracle的DUL的軟體,用於直接從Oracle資料庫的資料檔案中獲取表資料。在各種原因造成的資料庫不能開啟時,用於搶救資料,最大限度地減少資料丟失。
支援的Oracle資料庫版本包括8i,9i,10g,11g,12c
今天是在ORACLE11G下測試完成了透過ODU對TRUNCATE的表資料如何進行恢復;
2。ODU 版本及下載
Windows版本:odu_309_win32.zip (770KB)
Linux版本:odu_308_linux_x86.tar.gz (1064KB)
Solaris版本:odu_306_sol_x86.tar.gz (766KB)
AIX版本:odu_308_aix53.tar.gz (1344KB)
HP PA-RISC2.0版本:odu_308_hppa.tar.gz (926KB)
HP IA64版本:odu_308_hp_ia64.tar.gz (896KB)
3。使用及配置
config.txt檔案是ODU的配置檔案,我們不需要理會;
control.txt檔案是ODU的資料檔案資訊檔案。你可以理解為類似於Oracle資料庫的控制檔案,存放了ODU匯出資料時需要的Oracle資料檔案資訊。這個檔案需要我們自己配置(手工把資料檔案塊等資訊加入這個配置檔案,以便ODU進行讀取)
control.txt檔案中的資料格式為:
表空間號 檔案號 相對檔案號 檔名 塊大小
透過V$DATAFILE 找到相應的資訊,加入配置檔案,只需要前4列就好了。
#ts #fno #rfno filename
0 1 1 /u01/app/oracle/oradata/PROD1/system01.dbf
7 6 6 /u01/app/oracle/oradata/PROD1/TS_TEST
查詢資訊,新增到control檔案中
select tablespace_name from dba_tables where table_name='TEST';
SYS@PROD1> select ts#,name from v$tablespace;
TS# NAME
---------- ------------------------------
0 SYSTEM
1 SYSAUX
2 UNDOTBS1
4 USERS
3 TEMP
6 EXAMPLE
7 TS_TEST
7 rows selected.
select file#,ts#, RFILE#,NAME from v$datafile where ts#=7;
[oracle@enmoedu1 odu]$ vi control.txt
#ts fno rfno filename block_size is_big_file header_offset blocks
0 1 1 /u01/app/oracle/oradata/PROD1/system01.dbf
7 6 6 /u01/app/oracle/oradata/PROD1/TS_TEST
4。恢復方法
對於ODU來說, 4.1.3版本及以後,恢復方法比較簡單,具體操作如下:下面以TEST表進行測試:
檢查TEST表資料,
然後對於表進行TRUNCATE 操作,truncate table test.此時資料已經被清空,我們需要進行恢復/
4.1):把TEST表所在的表空間進行OFFLINE操作:alter tablespace TS_TEST offline;
4.2):啟動ODU,啟動介面如圖所示,進行讀取配置:
4.3):輸入:unload dict;進行掃描,結果如下圖:
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# 568
found TABPART$'s dataobj#:568,ts#:0,file#:1,block#:3872,tab#:0
found INDPART$'s obj# 573
found INDPART$'s dataobj#:573,ts#:0,file#:1,block#:3912,tab#:0
found TABSUBPART$'s obj# 580
found TABSUBPART$'s dataobj#:580,ts#:0,file#:1,block#:3976,tab#:0
found INDSUBPART$'s obj# 585
found INDSUBPART$'s dataobj#:585,ts#:0,file#:1,block#:4016,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# 601
found LOBFRAG$'s dataobj#:601,ts#:0,file#:1,block#:4144,tab#:0
4.4):scan extent ,根據資料檔案塊多少等,時間稍微有點長,結果如下
ODU> scan extent
scan extent start: 2015-10-23 10:26:22
scanning extent...
scanning extent finished.
scan extent completed: 2015-10-23 10:26:32
4.5):透過自動恢復,進行恢復表資料:unload table username.tablename object auto
ODU> unload table linfy.test object 80907
Unloading table: TEST,object ID: 80907
Unloading segment,storage(Obj#=80907 DataObj#=80907 TS#=7 File#=6 Block#=68738 Cluster=0)
1 rows unloaded
4.6):設定表空間ONLINE ALTER TABLESPACE TS_TEST ONLINE;
執行完此命令後,會在data目錄下生成三個檔案:
LINFY_TEST.ctl是用於sqlldr裝入資料所需要的控制檔案,LINFY_TEST.sql是建表SQL指令碼,LINFY_TEST.txt是匯出的資料。
我們可以用sql檔案建表,然後使用sqlldr裝入資料。
sqlldr linfy/linfy control=LINFY_TEST.ctl
1。ODU 介紹
ODU全稱為Oracle Database Unloader,是類似於Oracle的DUL的軟體,用於直接從Oracle資料庫的資料檔案中獲取表資料。在各種原因造成的資料庫不能開啟時,用於搶救資料,最大限度地減少資料丟失。
支援的Oracle資料庫版本包括8i,9i,10g,11g,12c
今天是在ORACLE11G下測試完成了透過ODU對TRUNCATE的表資料如何進行恢復;
2。ODU 版本及下載
Windows版本:odu_309_win32.zip (770KB)
Linux版本:odu_308_linux_x86.tar.gz (1064KB)
Solaris版本:odu_306_sol_x86.tar.gz (766KB)
AIX版本:odu_308_aix53.tar.gz (1344KB)
HP PA-RISC2.0版本:odu_308_hppa.tar.gz (926KB)
HP IA64版本:odu_308_hp_ia64.tar.gz (896KB)
3。使用及配置
config.txt檔案是ODU的配置檔案,我們不需要理會;
control.txt檔案是ODU的資料檔案資訊檔案。你可以理解為類似於Oracle資料庫的控制檔案,存放了ODU匯出資料時需要的Oracle資料檔案資訊。這個檔案需要我們自己配置(手工把資料檔案塊等資訊加入這個配置檔案,以便ODU進行讀取)
control.txt檔案中的資料格式為:
表空間號 檔案號 相對檔案號 檔名 塊大小
透過V$DATAFILE 找到相應的資訊,加入配置檔案,只需要前4列就好了。
#ts #fno #rfno filename
0 1 1 /u01/app/oracle/oradata/PROD1/system01.dbf
7 6 6 /u01/app/oracle/oradata/PROD1/TS_TEST
查詢資訊,新增到control檔案中
select tablespace_name from dba_tables where table_name='TEST';
SYS@PROD1> select ts#,name from v$tablespace;
TS# NAME
---------- ------------------------------
0 SYSTEM
1 SYSAUX
2 UNDOTBS1
4 USERS
3 TEMP
6 EXAMPLE
7 TS_TEST
7 rows selected.
select file#,ts#, RFILE#,NAME from v$datafile where ts#=7;
[oracle@enmoedu1 odu]$ vi control.txt
#ts fno rfno filename block_size is_big_file header_offset blocks
0 1 1 /u01/app/oracle/oradata/PROD1/system01.dbf
7 6 6 /u01/app/oracle/oradata/PROD1/TS_TEST
4。恢復方法
對於ODU來說, 4.1.3版本及以後,恢復方法比較簡單,具體操作如下:下面以TEST表進行測試:
檢查TEST表資料,
然後對於表進行TRUNCATE 操作,truncate table test.此時資料已經被清空,我們需要進行恢復/
4.1):把TEST表所在的表空間進行OFFLINE操作:alter tablespace TS_TEST offline;
4.2):啟動ODU,啟動介面如圖所示,進行讀取配置:
4.3):輸入:unload dict;進行掃描,結果如下圖:
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# 568
found TABPART$'s dataobj#:568,ts#:0,file#:1,block#:3872,tab#:0
found INDPART$'s obj# 573
found INDPART$'s dataobj#:573,ts#:0,file#:1,block#:3912,tab#:0
found TABSUBPART$'s obj# 580
found TABSUBPART$'s dataobj#:580,ts#:0,file#:1,block#:3976,tab#:0
found INDSUBPART$'s obj# 585
found INDSUBPART$'s dataobj#:585,ts#:0,file#:1,block#:4016,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# 601
found LOBFRAG$'s dataobj#:601,ts#:0,file#:1,block#:4144,tab#:0
4.4):scan extent ,根據資料檔案塊多少等,時間稍微有點長,結果如下
ODU> scan extent
scan extent start: 2015-10-23 10:26:22
scanning extent...
scanning extent finished.
scan extent completed: 2015-10-23 10:26:32
4.5):透過自動恢復,進行恢復表資料:unload table username.tablename object auto
ODU> unload table linfy.test object 80907
Unloading table: TEST,object ID: 80907
Unloading segment,storage(Obj#=80907 DataObj#=80907 TS#=7 File#=6 Block#=68738 Cluster=0)
1 rows unloaded
4.6):設定表空間ONLINE ALTER TABLESPACE TS_TEST ONLINE;
執行完此命令後,會在data目錄下生成三個檔案:
LINFY_TEST.ctl是用於sqlldr裝入資料所需要的控制檔案,LINFY_TEST.sql是建表SQL指令碼,LINFY_TEST.txt是匯出的資料。
我們可以用sql檔案建表,然後使用sqlldr裝入資料。
sqlldr linfy/linfy control=LINFY_TEST.ctl
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/543979/viewspace-1815830/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用ODU恢復被truncate表的資料
- Oracle Truncate表恢復(ODU)Oracle
- Oracle中truncate table後的資料恢復(Oracle資料恢復工具-ODU)Oracle資料恢復
- Oracle Delete表恢復(ODU)Oracledelete
- 恢復被執行truncate table的表資料
- Oracle Drop表(purge)恢復(ODU)Oracle
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- 使用hellodba的工具恢復truncate表的資料
- 【北亞資料恢復】誤操作導致雲伺服器表被truncate,表內資料被delete的資料恢復資料恢復伺服器delete
- TRUNCATE資料恢復資料恢復
- oracle logminer恢復truncate table的資料Oracle
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- 【資料庫資料恢復】oracle資料庫誤truncate table怎麼恢復資料?資料庫資料恢復Oracle
- 表資料被誤操作的恢復
- oracle恢復表delete/truncate/drop的方法總結Oracledelete
- RMAN恢復單個表空間或被DROP/DELETE/TRUNCATE的表delete
- 【北亞資料恢復】oracle資料庫執行truncate table命令怎麼恢復資料?資料恢復Oracle資料庫
- 循序漸進oracle第8章:Oracle的閃回特性之恢復truncate刪除表的資料Oracle
- truncate表後恢復方法總結
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- truncate table 誤刪除資料後的恢復
- [Oracle]Oracle資料庫資料被修改或者刪除恢復資料Oracle資料庫
- 【資料庫資料恢復】HP-UX系統ORACLE資料庫被誤刪除的資料恢復資料庫資料恢復UXOracle
- 伺服器資料恢復—雲伺服器mysql資料庫表資料被delete的資料恢復案例伺服器資料恢復MySql資料庫delete
- 使用logmnr分析歸檔日誌恢復被drop掉的資料表
- 一次truncate table 後的資料恢復[轉帖]資料恢復
- 【北亞資料恢復】sqlserver資料庫被加密的資料恢復案例分享資料恢復SQLServer資料庫加密
- ORACLE資料恢復Oracle資料恢復
- 使用Flashback Transaction方法來恢復資料表資料
- 6_Oracle truncate異常恢復之bbed修復Oracle
- 7_Oracle truncate異常恢復之plsql修復OracleSQL
- logminer來恢復在表DDL之前被刪除的資料
- oracle資料庫災難挽救應急方案之DDL誤操作恢復(truncate)Oracle資料庫
- ORACLE-資料恢復Oracle資料恢復
- 【資料庫資料恢復】SQL server資料庫被加密怎麼辦?如何恢復?資料庫資料恢復SQLServer加密
- 資料庫資料恢復—SQLserver資料庫中勒索病毒被加密怎麼恢復資料?資料庫資料恢復SQLServer加密
- rman恢復資料檔案 恢復表空間