【EXP/IMP】從exp工具生成的不完整備份檔案中快速獲取資料庫表空間建立語句
這是一個鮮為人知的技巧,分享在此,希望對大家有幫助。
結論是這樣的:使用exp工具的“full=y”引數生成的備份檔案中,最先寫入的是資料庫表空間的定義資訊,即使在匯出的過程中遇到故障,這部分最先匯出的資料依然可以被imp工具識別並抽取出其中的SQL語句。
實際驗證一下這個過程。
1.使用exp工具生成備份檔案
注意這裡使用exp工具的“full=y”選項對system使用者進行備份。
ora10g@secdb /db_backup$ exp system/oracle file=export_system.dmp full=y
Export: Release 10.2.0.1.0 - Production on Thu Mar 31 22:18:30 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Export done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set
About to export the entire database ...
. exporting tablespace definitions
. exporting profiles
. exporting user definitions
. exporting roles
. exporting resource costs
. exporting rollback segment definitions
. exporting database links
. exporting sequence numbers
. exporting directory aliases
. exporting context namespaces
. exporting foreign function library names
. exporting PUBLIC type synonyms
EXP-00008: ORACLE error 1013 encountered
ORA-01013: user requested cancel of current operation
EXP-00000: Export terminated unsuccessfully
在剛剛啟動備份的一瞬間,我們使用“Ctrl+C”快捷鍵終止匯出任務,獲得如上的提示資訊。
如果等待整個匯出過程完成將非常耗時,也不是很有必要。
2.確認生成的備份檔案
ora10g@secdb /db_backup$ ls -l export_system.dmp
-rw-r--r-- 1 oracle oinstall 48K Mar 31 22:18 export_system.dmp
這裡顯示出檔案僅有48K大小,顯然包含的資訊很有限。
3.使用imp工具讀取備份檔案中的SQL語句
ora10g@secdb /db_backup$ imp system/oracle file=export_system.dmp show=y log=export_system.log full=y
Import: Release 10.2.0.1.0 - Production on Thu Mar 31 22:20:28 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Export file created by EXPORT:V10.02.01 via conventional path
import done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set
. importing SYSTEM's objects into SYSTEM
"CREATE UNDO TABLESPACE "UNDOTBS1" BLOCKSIZE 8192 DATAFILE '/oracle/ora10gR"
"2/oradata/ora10g/undotbs01.dbf' SIZE 293601280 AUTOEXTEND ON NEXT 524"
"2880 MAXSIZE 32767M EXTENT MANAGEMENT LOCAL "
"CREATE TABLESPACE "SYSAUX" BLOCKSIZE 8192 DATAFILE '/oracle/ora10gR2/orada"
"ta/ora10g/sysaux01.dbf' SIZE 346030080 AUTOEXTEND ON NEXT 10485760 M"
"AXSIZE 32767M EXTENT MANAGEMENT LOCAL AUTOALLOCATE ONLINE PERMANENT SEGM"
"ENT SPACE MANAGEMENT AUTO"
"CREATE TEMPORARY TABLESPACE "TEMP" BLOCKSIZE 8192 TEMPFILE '/oracle/ora10g"
"R2/oradata/ora10g/temp01.dbf' SIZE 26214400 AUTOEXTEND ON NEXT 655360"
" MAXSIZE 32767M EXTENT MANAGEMENT LOCAL UNIFORM. SIZE 1048576"
"CREATE TABLESPACE "USERS" BLOCKSIZE 8192 DATAFILE '/oracle/ora10gR2/oradat"
"a/ora10g/users01.dbf' SIZE 5242880 AUTOEXTEND ON NEXT 1310720 MAXSIZ"
"E 32767M EXTENT MANAGEMENT LOCAL AUTOALLOCATE ONLINE PERMANENT SEGMENT S"
"PACE MANAGEMENT AUTO"
"CREATE TABLESPACE "TBS_SEC_D" BLOCKSIZE 8192 DATAFILE '/oracle/ora10gR2/or"
"adata/ora10g/tbs_sec_d_01.dbf' SIZE 10485760 AUTOEXTEND ON NEXT 8192 "
" MAXSIZE 32767M EXTENT MANAGEMENT LOCAL AUTOALLOCATE ONLINE PERMANENT SE"
"GMENT SPACE MANAGEMENT AUTO"
……省略其他輸出資訊
IMP-00009: abnormal end of export file
Import terminated successfully with warnings.
細心觀察螢幕輸出的資訊(或檢視最終生成的export_system.log日誌檔案),資料庫的表空間建立語句盡收眼底。與此同時在日誌的最後丟擲了“IMP-00009”錯誤,表明備份檔案本身是不完整的。
重要結論得以證明:不完整的備份檔案依然可以被順利地識別,並獲得其中的SQL定義資訊。
4.小結
在這個重要結論的前提下,我們能做的還有很多,可以使用這個小技巧快速地獲得資料庫系統中的預先匯出的定義資訊。
在真正匯出表資料之前exp工具主要完成了以下資料庫定義內容的匯出:
. exporting tablespace definitions
. exporting profiles
. exporting user definitions
. exporting roles
. exporting resource costs
. exporting rollback segment definitions
. exporting database links
. exporting sequence numbers
. exporting directory aliases
. exporting context namespaces
. exporting foreign function library names
. exporting PUBLIC type synonyms
. exporting private type synonyms
. exporting object type definitions
. exporting system procedural objects and actions
. exporting pre-schema procedural objects and actions
. exporting cluster definitions
資料庫中以上內容均可以使用這個技巧快速的獲得其SQL定義指令碼。
Good luck.
secooler
11.03.30
-- The End --
結論是這樣的:使用exp工具的“full=y”引數生成的備份檔案中,最先寫入的是資料庫表空間的定義資訊,即使在匯出的過程中遇到故障,這部分最先匯出的資料依然可以被imp工具識別並抽取出其中的SQL語句。
實際驗證一下這個過程。
1.使用exp工具生成備份檔案
注意這裡使用exp工具的“full=y”選項對system使用者進行備份。
ora10g@secdb /db_backup$ exp system/oracle file=export_system.dmp full=y
Export: Release 10.2.0.1.0 - Production on Thu Mar 31 22:18:30 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Export done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set
About to export the entire database ...
. exporting tablespace definitions
. exporting profiles
. exporting user definitions
. exporting roles
. exporting resource costs
. exporting rollback segment definitions
. exporting database links
. exporting sequence numbers
. exporting directory aliases
. exporting context namespaces
. exporting foreign function library names
. exporting PUBLIC type synonyms
EXP-00008: ORACLE error 1013 encountered
ORA-01013: user requested cancel of current operation
EXP-00000: Export terminated unsuccessfully
在剛剛啟動備份的一瞬間,我們使用“Ctrl+C”快捷鍵終止匯出任務,獲得如上的提示資訊。
如果等待整個匯出過程完成將非常耗時,也不是很有必要。
2.確認生成的備份檔案
ora10g@secdb /db_backup$ ls -l export_system.dmp
-rw-r--r-- 1 oracle oinstall 48K Mar 31 22:18 export_system.dmp
這裡顯示出檔案僅有48K大小,顯然包含的資訊很有限。
3.使用imp工具讀取備份檔案中的SQL語句
ora10g@secdb /db_backup$ imp system/oracle file=export_system.dmp show=y log=export_system.log full=y
Import: Release 10.2.0.1.0 - Production on Thu Mar 31 22:20:28 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Export file created by EXPORT:V10.02.01 via conventional path
import done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set
. importing SYSTEM's objects into SYSTEM
"CREATE UNDO TABLESPACE "UNDOTBS1" BLOCKSIZE 8192 DATAFILE '/oracle/ora10gR"
"2/oradata/ora10g/undotbs01.dbf' SIZE 293601280 AUTOEXTEND ON NEXT 524"
"2880 MAXSIZE 32767M EXTENT MANAGEMENT LOCAL "
"CREATE TABLESPACE "SYSAUX" BLOCKSIZE 8192 DATAFILE '/oracle/ora10gR2/orada"
"ta/ora10g/sysaux01.dbf' SIZE 346030080 AUTOEXTEND ON NEXT 10485760 M"
"AXSIZE 32767M EXTENT MANAGEMENT LOCAL AUTOALLOCATE ONLINE PERMANENT SEGM"
"ENT SPACE MANAGEMENT AUTO"
"CREATE TEMPORARY TABLESPACE "TEMP" BLOCKSIZE 8192 TEMPFILE '/oracle/ora10g"
"R2/oradata/ora10g/temp01.dbf' SIZE 26214400 AUTOEXTEND ON NEXT 655360"
" MAXSIZE 32767M EXTENT MANAGEMENT LOCAL UNIFORM. SIZE 1048576"
"CREATE TABLESPACE "USERS" BLOCKSIZE 8192 DATAFILE '/oracle/ora10gR2/oradat"
"a/ora10g/users01.dbf' SIZE 5242880 AUTOEXTEND ON NEXT 1310720 MAXSIZ"
"E 32767M EXTENT MANAGEMENT LOCAL AUTOALLOCATE ONLINE PERMANENT SEGMENT S"
"PACE MANAGEMENT AUTO"
"CREATE TABLESPACE "TBS_SEC_D" BLOCKSIZE 8192 DATAFILE '/oracle/ora10gR2/or"
"adata/ora10g/tbs_sec_d_01.dbf' SIZE 10485760 AUTOEXTEND ON NEXT 8192 "
" MAXSIZE 32767M EXTENT MANAGEMENT LOCAL AUTOALLOCATE ONLINE PERMANENT SE"
"GMENT SPACE MANAGEMENT AUTO"
……省略其他輸出資訊
IMP-00009: abnormal end of export file
Import terminated successfully with warnings.
細心觀察螢幕輸出的資訊(或檢視最終生成的export_system.log日誌檔案),資料庫的表空間建立語句盡收眼底。與此同時在日誌的最後丟擲了“IMP-00009”錯誤,表明備份檔案本身是不完整的。
重要結論得以證明:不完整的備份檔案依然可以被順利地識別,並獲得其中的SQL定義資訊。
4.小結
在這個重要結論的前提下,我們能做的還有很多,可以使用這個小技巧快速地獲得資料庫系統中的預先匯出的定義資訊。
在真正匯出表資料之前exp工具主要完成了以下資料庫定義內容的匯出:
. exporting tablespace definitions
. exporting profiles
. exporting user definitions
. exporting roles
. exporting resource costs
. exporting rollback segment definitions
. exporting database links
. exporting sequence numbers
. exporting directory aliases
. exporting context namespaces
. exporting foreign function library names
. exporting PUBLIC type synonyms
. exporting private type synonyms
. exporting object type definitions
. exporting system procedural objects and actions
. exporting pre-schema procedural objects and actions
. exporting cluster definitions
資料庫中以上內容均可以使用這個技巧快速的獲得其SQL定義指令碼。
Good luck.
secooler
11.03.30
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-691344/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- exp/imp備份與還原oracle資料庫Oracle資料庫
- Oracle 傳輸表空間-EXP/IMPOracle
- imp/EXP 表空間轉換問題
- 使用exp/imp來移動表空間到另一個資料庫中的例子資料庫
- 【IMP】使用imp工具的show選項獲取超大備份檔案中的SQL語句將非常耗時SQL
- Oracle資料庫 Exp/Imp工具效能調優Oracle資料庫
- exp/imp工具
- exp imp資料
- oracle資料庫備份之exp增量備份Oracle資料庫
- 【EXP】在備份檔案上留下“時間烙印”
- exp,imp 不同表空間大欄位處理方法
- exp/imp工具的使用
- 通過oracle10g exp/imp在不同表空間間遷移資料Oracle
- exp/imp對資料庫版本的要求資料庫
- 【IMP】使用IMP的SHOW引數輕鬆獲取EXP命令的DUMP檔案內容
- Oracle獲取資料庫中的物件建立語句Oracle資料庫物件
- ORACLE備份和恢復 - 邏輯備份 exp/impOracle
- Oracle資料庫備份與恢復之匯出/匯入(EXP/IMP)、熱備份和冷備份Oracle資料庫
- 【EXP/IMP】使用EXP /IMP工具“模糊”匯出和匯入
- exp,imp 遷移資料
- imp/exp資料遷移
- Oracle備份與恢復系列 五 續 EXP/IMP遷移、複製資料庫Oracle資料庫
- 使用exp/imp匯出匯入資料(邏輯備份恢復)
- 【exp】快速檢測資料檔案壞塊
- oracle資料庫 exp/imp命令詳解(轉)Oracle資料庫
- 使用SQL語句從資料庫一個表中隨機獲取資料SQL資料庫隨機
- exp_imp_遷移_同使用者_不同表空間的小記
- 大表exp/imp遷移
- Oracle資料庫備份與恢復之exp/imp(匯出與匯入裝庫與卸庫)Oracle資料庫
- Backup And Recovery User's Guide-備份資料庫-使用RMAN備份表空間和資料檔案GUIIDE資料庫
- 用exp/imp把遠端資料匯入到本地資料庫中資料庫
- Oracle imp/expOracle
- Oracle 11g 預設不給空表分配空間,exp匯出備份不匯出空表!Oracle
- 表空間級資料庫備份恢復資料庫
- 資料匯入匯出EXP/IMP
- exp/imp匯出匯入資料
- Oracle資料庫備份與恢復之一:exp/imp(匯出與匯入裝庫與卸庫)Oracle資料庫
- Oracle 資料庫備份與恢復總結-exp/imp (匯出與匯入裝庫與卸庫)Oracle資料庫