Oracle 邏輯備份之EXPDP精講

531968912發表於2016-05-06
Oracle 10g引入了最新的資料泵(data dump)技術,它使得dba或應用開發人員可以將資料庫的後設資料快速的移動到另一個Oracle資料庫中。


資料泵匯入匯出的作用
***資料泵匯出匯入可以實現邏輯備份和邏輯恢復
***資料泵匯出匯入可以在資料庫使用者之間移動物件
***資料泵匯出匯入可以在資料庫之間移動物件


***資料泵匯出匯入可以實現表空間搬遷
 
資料泵匯出匯入與傳統的匯出匯入的區別:
***EXP和IMP是客戶端的工具程式,它們既可以在客戶端使用,也可以在伺服器端使用。
***EXPDP和IMPDP是伺服器端的工具程式,它們只能在ORACLE伺服器端使用,而不能再Oracle客戶端使用
***IMP只適用於EXP匯出檔案,而不適用於EXPDP匯出檔案;IMPDP只適用於EXPDP匯出檔案,而不適合用於EXP匯出檔案。


資料泵是Oracle 10g新增加的功能,它是指利用實用工具EXPDP將資料庫物件的後設資料(物件結構)或資料匯出到轉儲檔案中。資料泵匯出包括匯出表、匯出方案、匯出表空間、匯出資料庫四種方式。


如何呼叫EXPDP:
EXPDP是伺服器端工具,該工具只能在Oracle伺服器端使用,而不能再Oracle客戶端使用。包括匯出表、匯出方案、匯出表空間、匯出資料庫四種模式。當使用EXPDP工具時,其轉儲檔案只能被存放在DIRECTORY物件所對應的OS目錄中,而不能指定轉儲檔案所在的OS目錄。因此,當使用EXPDP工具時,必須首先建立DIRECTORY物件,並且需要為資料庫使用者授予DIRECTORY物件的許可權。示例如下:


SQL> conn /as sysdba
--已連線。
SQL> create DIRECTORY dump AS '/datas/logic';
--目錄已建立。
SQL> grant read,write on directory dump to scott;
--授權成功。
Expdp匯出的四種模式:
***匯出表:
1
expdp scott/tiger DIRECTORY=dump DUMPFILE=tab.dmp TABLES=dept,emp
***匯出方案:
1
expdp system/manager DIRECTORY=dump DUMPFILE=schema.dmp SCHEMAS=system,scott
***匯出表空間:
1
expdp system/manager DIRECTORY=dump DUMPFILE=tablespace.dmp TABLESPACES=user01,user02
***匯出資料庫:
注意:當匯出資料庫時,不會匯出SYS,ORDSYS,ORDPLUGINS,CTXSYS,MDSYS,LBACSYS及XDB等方案的物件
1
expdp system/manager DIRECTORY=dump DUMPFILE=full.dmp FULL=Y
EXPDP命令列選項:
(1):ATTACH。該選項用於在客戶與已存在匯出作業之間建立關聯。語法如下:
ATTACH = [schema_name.] job_name
如上所示:schema_name用於指定方案名,job_name用於指定匯出作業名。注意,如果要使用ATTACH選項,那麼在命令列除了連線字串和ATTACH選項外,不能指定任何其他 選項。示例如下:
Expdp scott/tiger ATTACH=scott.export_job
(2)CONTENT。該選項用於指定要匯出的內容,其預設值為ALL。語法如下:
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
如上所示,當設定為ALL時,會匯出物件定義及其所有資料;當設定為DATA_ONLY時,只會匯出物件資料;當設定為METADATA_ONLY時,只會匯出物件定義。示例如下:
Expdp scott/tiger DIRECTORY=dump DUMPFILE=scott.dmp CONTENT=METADATA_ONLY
(3)DIRECTORY。該選項用於指定轉儲檔案和日誌檔案所在的位置。語法如下:
DIRECTORY=directory_object
如上所示:directory_object用於指定目錄物件名稱。注意,目錄物件是使用CREATE DIRECTORY語句所建立的物件,而不是OS目錄。示例如下:
Expdp scott/tiger DIRECTORY=dump DUMPFILE=scott.dmp
(4)DUMPFILE。該選項用於指定轉儲檔案的名稱。
(5)ESTIMATE。用於指定估算被匯出表所佔用磁碟空間的方法,預設值為BLOCKS。語法如下:
ESTIMATE={BLOCKS | STATISTICS}
如上所示,當設定該選項為BLOCKS時,Oracle會按照目標物件所佔用的資料塊個數乘以資料塊尺寸估算物件佔用的空間;當設定該選項為STATISTICS時,Oracle會根據最近的統計值估算物件佔用的空間。示例如下;
expdp scott/tiger tables=emp estimate=statistics directory=dump dumpfile=scott.dmp
(6)ESTIMATE_ONLY。該選項用於指定是否只估算匯出作業所佔用的磁碟空間,預設值為N。語法如下:
ESTIMATE_ONLY={Y | N}
如上所示:當設定該選項為Y時,匯出作業只會估算物件所佔用的磁碟空間,而不會執行匯出操作;當設定為N時,匯出作業既會估算物件所佔用的磁碟空間,又會執行匯出操作。示例如下:
Expdp scott/tiger ESTIMATE_ONLY=y NOLOGFILE=y
(7)EXCLUDE。用於指定當執行匯出操作時要排除的物件型別或相關物件。語法如下:
EXCLUDE=object_type[:name_clause][,….]
如上所示,object_type用於指定要排除的物件型別,name_clause用於指定要排除的具體物件。注意,EXCLUDE和INCLUDE不能同時使用。示例如下;
Expdp scott/tiger DIRECTORY=dump DUMPFILE=scott.dmp EXCLUDE
(8)FILESIZE。該選項用於指定匯出檔案的最大尺寸,其預設值為0(標識檔案尺寸無限制)。語法如下:
FILESIZE=integet[B | K | M | G]
如上所示,B用於標識位元組,K用於標識千位元組,M用於標識兆位元組,G用於標識億位元組。如果要將資料庫物件及其資料匯出到多個檔案中,必須設定該選項。示例如下:
Expdp scott/tiger DIRECTORY=dump DUMPFILE=scott_3m.dmp FILESIZE=3M
(9)FLASHBACK_SCN。該選項用於指定特定SCN時刻的表資料。語法如下:
FLASHBACK_SCN=scn_value
如上所示,scn_value用於標識SCN值。當設定該選項時,Oracle會啟用FlashBack特徵。
注意:FLASHBACK_SCN和FLASHBACK_TIME不能同時使用。示例如下:
Expdp soctt/tiger DIRECTORY=dump DUMPFILE=scott.dmp FLASHBACK_SCN=385823
(10)FLASHBACK_TIME。該選項用於指定匯出特定時間點的表資料。語法如下:
FLASHBACK_TIME=”TO_TIMESTAMP(time-value)”
如上所示,time_value用於制定日期時間值。當設定該選項時,Oracle會啟用FlashBack特徵。注意,FLASHBACK_TIME和FLASHBACK_SCN不能同時使用。示例如下:
Expdp scott/tiger DIRECTORY=dump DUMPFILE=scott.dmp FLASHBACK_TIME=”TO_TIMESTAMP(’07-12-2012 14:35:00’,’DD-MM-YYYY HH24:MT:SS’)”
(11)FULL。該選項用於指定資料庫模式匯出,其預設值為N。語法如下:
FULL={Y | N}
(12)HELP。該選項用於制定是否顯示EXPDP命令列選項的幫助資訊,其預設值為N。語法如下:
HELP={y | n}
如上所示,當設定該選項為Y時,會顯示匯出選項的幫助資訊。示例如下:
Expdp help=y
(13)INCLUDE。該選項用於指定要匯出的物件型別及相關物件。示例如下:
INCLUDE = object_type[:name_clause][,..]
如上所示,object_type用於指定要匯出的物件型別,name_clause用於指定要匯出的物件名。注意,INCLUDE和EXCLUDE選項不能同時使用。示例如下:
Expdp scott/tiger DIRECTORY=dump DUMPFILE=scott.dmp INCLUDE=table
(14)JOB_NAME。該選項用於指定匯出作業的名稱,預設名稱為SYS_xxx。語法如下:
JOB_NAME=jobname_string
如上所示,jobname_string用於制定匯出作業的名稱。注意,作業名不能超過30個字元。示例如下:
Expdp scott/tiger DIRECTORY=dump DUMPFILE=scott.dmp JOB_NAME=scott_job
(15)LOGFILE。該選項用於指定匯出日誌檔案的名稱,預設名稱為export.log。語法如下:
LOGFILE=[directory_object:]file_name
如上所示,directory_object用於指定目錄物件名稱,file_name用於指定匯出日誌檔名。
注意:如果不指定directory_object,那麼匯出作業會自動使用DIRECTORY的相應選項值。示例如下:
Expdp scott/tiger DIRECTORY=dump DUMPFILE=scott.dmp logfile=scott_exp.log
(16)NETWORK_LINK。用於指定資料庫鏈名。如果要將資料庫物件匯出到本地例程的轉儲檔案中,則必須設定該選項。語法如下:
NETWORK_LINK=source_database_link
如上所示,source_database_link用於制定資料庫鏈名。注意,物件表不支援遠端匯出。示例如下:
Expdp scott/tiger DIRECTORY=dump DUMPFILE=scott.dmp NETWORK_LINK=orcl
(17)NOLOGFILE。該選項用於指定禁止生成匯出日誌檔案,預設值為N。語法如下:
NOLOGFILE={y | n}
如上所示,當設定該選項為Y時,匯出操作不會生成日誌檔案。示例如下:
Expdp scott/tiger DUMPFILE=dump:scott.dmp NOLOGFILE=Y
(18)PARALLEL。該選項用於制定執行匯出操作的並行程式個數,預設值為1。語法如下:
PARALLEL = integer
如上所示,integer用於指定並行程式的個數。透過執行並行匯出操作,可以加快匯出速度。
注意:該選項只適用於Oracle Database 10g Enterprise Edition。示例如下:
Expdp scott/tiger DIRECTORY=dump DUMPFILE=scott.dmp PARALIEL=3
(19)PARFILE。該選項用於指定匯出引數檔案的名稱。語法如下:
PARFILE=[directory_path]file_name
如上所示,directory_path用於指定引數檔案所在目錄,file_name用於指定引數檔名。引數檔案示例如下:
TABLES=dept,emp
DIRECTORY=dump
DUMPFILE=tab.dmp
注意:在expdp引數檔案中不能包含PARFILE選項。另外,如果在使用引數檔案時不指定directory_path,那麼匯出工具會將當前目錄作為引數檔案得路徑。使用引數檔案的示例如下:
Expdp scott/tiger PARFILE=/datas/parm.txt
(20)QUERY。該選項用於指定過濾匯出資料的WHERE條件。語法如下:
QUERY = [schema.][table_name;]query_clause
如上所示,schema用於指定方案名,table_name用於制定表明,query_clause用於制定條件限制子句。注意:QUERY選項不能與CONNECT=METADATA_ONLY、ESTIMATE_ONLY、TRANSPORT_TABLESPACES等選項同時使用。示例如下:
expdp scott/tiger DIRECTORY=dump DUMPFILE=scott.dmp TABLES=emp query=' "WHERE deptno=20" '
(21)SCHEMAS。該選項用於指定執行方案模式匯出,預設為當前使用者方案。語法如下:
SCHEMAS = schema_name[,....]
如上所示,schema_name用於指定方案名。使用者可以匯出自身方案,但如果要匯出其他方案,則要求使用者必須具有EXP_FULL_DATABASE角色或DBA角色。示例如下:
expdp system/manager DIRECTORY=dump DUMPFILE=st_sc.dmp SCHEMAS=scott,system
(22)STATUS。該選項用於指定顯示匯出作業程式的詳細狀態,其預設值為0.語法如下:
STATUS=integer
如上所示,integer用於指定顯示匯出作業狀態的時間間隔(單位:秒)。當指定了該選項之後,每隔特定時間間隔就會顯示作業完成的百分比。示例如下:
expdp system/manager DIRECTORY=dump DUMPFILE=system.dmp FULL=y status=30
(23)TABLES。該選項用於指定表模式匯出。語法如下:
TABLES=[schema_name.]table_name[:partition_name][,...]
如上所示,schema_name用於指定方案名,table_name用於制定要匯出的表明,partition_name用於指定要匯出的分割槽名。注意,使用者可以直接匯出其自身方案的表,但如果要匯出其他方案的表,則要求使用者必須具有EXP_FULL_DATABASE角色或DBA角色。示例如下:
expdp system/manager directory=dump dumpfile=scott.dmp tables=scott.dept,scott.emp
(24)TABLESPACES。該選項用於指定要匯出的表空間列表。語法如下:
TABLESPACES=tablespace_name[,...]
如上所示,tablespace_name用於指定要匯出的表空間。當指定該選項時,會匯出該表空間的所有表。示例如下:
expdp system/manager DIRECTORY=dump DUMPFILE=user01.dmp tablespaces=user01
(25)TRANSPORT_FULL_CHECK。該選項用於指定被搬移表空間和未搬移表空間關聯關係的檢查方式,其預設值為N。語法如下:
TRANSPORT_FULL_CHECK={Y | N}
如上所示,當設定該選項為Y時,匯出作業會檢查表空間之間的完整關聯關係,如果表所在表空間或其索引所在表空間只有一個表空間被搬移,則會顯示錯誤資訊;當設子該選項為N時,匯出作業只會檢查單端依賴,如果要搬移索引所在表空間,但是未搬移表所在表空間,那麼會顯示錯誤資訊,如果要搬移表所在表空間,未搬移索引所在表空間,則不會顯示錯誤資訊。示例如下:
expdp system/manager DIRECTORY=dump DUMPFILE=system.dmp TRANSPORT_FULL_CHECK=user01 TRANSPORT_FULL_CHECK=Y
(26)VERSION。該選項用於指定被匯出物件的資料庫版本,其預設值為COMPATIBLE。語法如下:
VERSION={COMPATIBLE | LATEST | version_string}
如上所示,當設定為COMPATIBLE時,會根據初始化引數COMPATIBLE生成物件後設資料;當設定該想想為LATEST時,會根據資料庫的實際版本生成物件後設資料;version_string用於指定資料庫版本字串(不能低於9.2)。示例如下:
expdp scott/tiger DIRECTORY=dump DUMPFILE=55linux.dmp VERSION=LATEST

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-2094985/,如需轉載,請註明出處,否則將追究法律責任。

相關文章