程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> EXPDP/IMPDP

EXPDP/IMPDP

編輯:Oracle教程

EXPDP/IMPDP


SQL> select * from v$version where rownum=1;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

SQL> !cat /etc/issue
Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)
Kernel \r on an \m

數據泵技術是11g提供的數據庫邏輯備份和恢復工具,oracle建議使用數據泵來代替EXP/IMP.數據泵技術有很多優點,如可以恢復中斷的作業,從一個會話中監控數據泵取作業,在作業執行過程中修改作業屬性,以及重啟一個失敗的數據泵取作業等等。在啟動數據泵導入或者導出的程序時,在數據庫服務器端啟動相應的服務器進程,完成數據的導入或者導出,數據泵技術是基於oracle數據庫服務器的。傳統的EXP是一個普通的本地用戶進程,它將備份的數據寫入本地磁盤空間,EXP是普通會話的一部分,它從服務器進程中獲得要備份的數據。數據泵(EXPDP)啟動數據庫服務器端的服務器進程,服務器進程完成數據的備份並將備份文件寫入數據庫服務器端的計算機磁盤空間,文件格式是filename.dat。導出的備份文件在導入時只能通過數據泵(impdp)完成。注意:在使用數據泵導出備份數據時,只能將備份的數據寫入磁盤文件,而無法寫入磁帶設備,如果需要則借助第三方工具。
使用數據泵技術的優點如下:
1.斷點記錄。在數據泵進行中,主表(Master Table)起到了關鍵作用。在主表中保存了整個數據泵運行過程中的相關信息,包括要處理的所有對象信息,正在處理的對象信息等。在啟動數據泵時,如果我們指定了任務名稱,則該MT表的名稱等於任務名稱,如果用戶下面不存在這個名稱的對象,則失敗。如果沒有指定任務名稱,數據泵會自動為MT表生成一個名稱。由於MT的存在,我們可以重新啟動被終止的任務。
2.通過數據庫鏈接db link,將遠程數據庫導出到轉儲文件。
3.通過采樣,可以導出部分數據。
4.可以進行並行操作。
5.只導出元數據(例如表結構),不導出實際結構,可以指定是否進行壓縮。
6.在導入時,可以修改導入數據所在的schema名稱,表空間名稱以及數據文件名稱。
7.通過數據庫鏈接db link,直接將遠程的,位於其他主機的數據庫裡的數據導入到當前數據庫中,從而實現跨平台的數據遷移。
8.不實際導出的情況下,估計整個導出工作需要占用的磁盤空間。
9.可以處理某些對象,或者不處理某些對象,或者只處理某些對象下面滿足條件的數據等。

數據泵作業在數據庫服務器上創建所有的備份文件,而oracle要求數據泵必須使用目錄對象,以防止用戶誤操作數據庫服務器上特定目錄下的操作系統文件。目錄對象對應於os上的一個指定目錄。
如果當前用戶時DBA用戶,可以使用默認的目錄對象而不必要再去創建數據泵操作的工作目錄。此時,數據泵作業會將備份文件,日志文件以及sql文件存儲該目錄下,下面我們查找默認目錄:
SQL> select * from dba_directories where directory_name='DATA_PUMP_DIR';


OWNER DIRECTORY_NAME
------------------------------ ------------------------------
DIRECTORY_PATH
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SYS DATA_PUMP_DIR
/u01/app/oracle/admin/orcl3939/dpdump/

該文件對應的目錄就是DBA用戶使用數據泵導出數據時的存儲目錄。
如果用戶使用數據泵,但是沒有可用的目錄,也不具備創建目錄的權限,則提示錯誤。oracle找不到目錄對象,無法啟動數據泵作業:
[oracle@localhost ~]$ expdp hr/hr
Export: Release 11.2.0.1.0 - Production on 星期日 6月 14 19:29:38 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
連接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-39002: 操作無效
ORA-39070: 無法打開日志文件。
ORA-39145: 必須指定目錄對象參數且不能為空

創建目錄對象:
SQL> create directory hr_expimp_dir as '/mnt/pump';
create directory hr_expimp_dir as '/mnt/pump'
*
第 1 行出現錯誤:
ORA-01031: 權限不足
用戶需要自己創建目錄對象時,則需要具有create any directory權限
授權:
SQL> grant create any directory to hr;
授權成功。

SQL> create directory hr_expimp_dir as '/mnt/pump'; 目錄已創建。
注意:/mnt/pump是在os上創建的目錄,注意oracle用戶一定要有對該目錄有w的權限,否則expdp程序啟動失敗,這個權限對於directory非常重要!
此時我們創建的目錄,可以給其他用戶使用,但是必須將讀寫該目錄的權限賦予用戶:

SQL> grant read on directory hr_expimp_dir to diy_os;

授權成功。



[oracle@localhost ~]$ expdp hr/hr directory=hr_expimp_dir
Export: Release 11.2.0.1.0 - Production on 星期日 6月 14 19:53:24 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
連接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
啟動 "HR"."SYS_EXPORT_SCHEMA_01": hr/******** directory=hr_expimp_dir
正在使用 BLOCKS 方法進行估計...
處理對象類型 SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 128 KB
處理對象類型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
處理對象類型 SCHEMA_EXPORT/SEQUENCE/SEQUENCE
處理對象類型 SCHEMA_EXPORT/TABLE/TABLE
處理對象類型 SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理對象類型 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理對象類型 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理對象類型 SCHEMA_EXPORT/TABLE/COMMENT
處理對象類型 SCHEMA_EXPORT/VIEW/VIEW
處理對象類型 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
處理對象類型 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . 導出了 "HR"."T" 5.031 KB 3 行
. . 導出了 "HR"."TT" 5.007 KB 2 行
. . 導出了 "HR"."COUNTRIES" 0 KB 0 行
. . 導出了 "HR"."DEPARTMENTS" 0 KB 0 行
. . 導出了 "HR"."EMPLOYEES" 0 KB 0 行
. . 導出了 "HR"."JOBS" 0 KB 0 行
. . 導出了 "HR"."JOB_HISTORY" 0 KB 0 行
. . 導出了 "HR"."LOCATIONS" 0 KB 0 行
. . 導出了 "HR"."REGIONS" 0 KB 0 行
已成功加載/卸載了主表 "HR"."SYS_EXPORT_SCHEMA_01"
******************************************************************************
HR.SYS_EXPORT_SCHEMA_01 的轉儲文件集為:
/mnt/pump/expdat.dmp
作業 "HR"."SYS_EXPORT_SCHEMA_01" 已於 19:55:21 成功完成


[oracle@localhost ~]$ ls /mnt/pump
expdat.dmp export.log

EXPDP:
[oracle@localhost ~]$ expdp help=yes


Export: Release 11.2.0.1.0 - Production on 星期日 6月 14 19:59:59 2015


Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.




數據泵導出實用程序提供了一種用於在 Oracle 數據庫之間傳輸
數據對象的機制。該實用程序可以使用以下命令進行調用:


示例: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp


您可以控制導出的運行方式。具體方法是: 在 'expdp' 命令後輸入
各種參數。要指定各參數, 請使用關鍵字:


格式: expdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
示例: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
或 TABLES=(T1:P1,T1:P2), 如果 T1 是分區表


USERID 必須是命令行中的第一個參數。


------------------------------------------------------------------------------


以下是可用關鍵字和它們的說明。方括號中列出的是默認值。

ATTACH
連接到現有作業。
例如, ATTACH=job_name。

COMPRESSION
減少轉儲文件大小。
有效的關鍵字值為: ALL, DATA_ONLY, [METADATA_ONLY] 和 NONE。

CONTENT
指定要卸載的數據。
有效的關鍵字值為: [ALL], DATA_ONLY 和 METADATA_ONLY。(說明導出的是元數據還是數據,或者包括元數據和數據)

DATA_OPTIONS
數據層選項標記。
有效的關鍵字值為: XML_CLOBS。

DIRECTORY
用於轉儲文件和日志文件的目錄對象。

DUMPFILE
指定目標轉儲文件名的列表 [expdat.dmp]。
例如, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp

ENCRYPTION
加密某個轉儲文件的一部分或全部。
有效的關鍵字值為: ALL, DATA_ONLY, ENCRYPTED_COLUMNS_ONLY, METADATA_ONLY 和 NONE。

ENCRYPTION_ALGORITHM
指定加密的方式。
有效的關鍵字值為: [AES128], AES192 和 AES256。

ENCRYPTION_MODE
生成加密密鑰的方法。
有效的關鍵字值為: DUAL, PASSWORD 和 [TRANSPARENT]。

ENCRYPTION_PASSWORD
用於在轉儲文件中創建加密數據的口令

ESTIMATE
計算作業估計值。
有效的關鍵字值為: [BLOCKS] 和 STATISTICS。(計算expdp導出作業的導出文件大小,選項blocks基於數據庫塊大小的倍數計算備份文件大小,而選項statistics使用當前對象的統計量來計算到導出的備份文件的大小)

ESTIMATE_ONLY
計算作業估計值而不執行導出。

EXCLUDE
排除特定對象類型。
例如, EXCLUDE=SCHEMA:"='HR'"。

FILESIZE
以字節為單位指定每個轉儲文件的大小。

FLASHBACK_SCN
用於重置會話快照的 SCN。

FLASHBACK_TIME
用於查找最接近的相應 SCN 值的時間。

FULL
導出整個數據庫 [N]。

HELP
顯示幫助消息 [N]。

INCLUDE
包括特定對象類型。
例如, INCLUDE=TABLE_DATA。

JOB_NAME
要創建的導出作業的名稱。

LOGFILE
指定日志文件名 [export.log]。

NETWORK_LINK
源系統的遠程數據庫鏈接的名稱。

NOLOGFILE
不寫入日志文

PARALLEL
更改當前作業的活動 worker 的數量。

PARFILE (說明在導出作業時最大的線程數,實現導出作業的並行處理,也可以在作業運行中使用attach,如果設置多個工作線程,則要指定相同數量的備份文件,這 樣多個線程可以同時寫多個備份文件。)
指定參數文件名。

QUERY
用於導出表的子集的謂詞子句。
例如, QUERY=employees:"WHERE department_id > 10"。

REMAP_DATA
指定數據轉換函數。
例如, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。

REUSE_DUMPFILES
覆蓋目標轉儲文件 (如果文件存在) [N]。

SAMPLE
要導出的數據的百分比。

SCHEMAS
要導出的方案的列表 [登錄方案]。

SOURCE_EDITION
用於提取元數據的版本。

STATUS
監視作業狀態的頻率, 其中
默認值 [0] 表示只要有新狀態可用, 就立即顯示新狀態。

TABLES
標識要導出的表的列表。
例如, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995。

TABLESPACES
標識要導出的表空間的列表。

TRANSPORTABLE
指定是否可以使用可傳輸方法。
有效的關鍵字值為: ALWAYS 和 [NEVER]。

TRANSPORT_FULL_CHECK
驗證所有表的存儲段 [N]。

TRANSPORT_TABLESPACES
要從中卸載元數據的表空間的列表。

VERSION
要導出的對象版本。
有效的關鍵字值為: [COMPATIBLE], LATEST 或任何有效的數據庫版本。
------------------------------------------------------------------------------
下列命令在交互模式下有效。
注: 允許使用縮寫。

ADD_FILE
將轉儲文件添加到轉儲文件集。(向導出備份文件夾中增加文件以增加目錄空間。如在一個作業中運行期間輸入ctrl +c切換到交互式導出提示:export>.如果該作業因為備份空間不足導致停止,使用add_file命令增加文件到導出目錄中.如:
export>add_file=data_file_dir:expdata02.dmp)


CONTINUE_CLIENT
返回到事件記錄模式。如果處於空閒狀態, 將重新啟動作業。

EXIT_CLIENT
退出客戶機會話並使作業保持運行狀態。

FILESIZE
用於後續 ADD_FILE 命令的默認文件大小 (字節)。

HELP
匯總交互命令。

KILL_JOB
分離並刪除作業。(殺死客戶機進程和數據泵作業(服務器進程))

PARALLEL
更改當前作業的活動 worker 的數量。

REUSE_DUMPFILES
覆蓋目標轉儲文件 (如果文件存在) [N]。

START_JOB
啟動或恢復當前作業。
有效的關鍵字值為: SKIP_CURRENT。

STATUS
監視作業狀態的頻率, 其中
默認值 [0] 表示只要有新狀態可用, 就立即顯示新狀態。

STOP_JOB
按順序關閉作業執行並退出客戶機。
有效的關鍵字值為: IMMEDIATE。

導出 整個數據庫:

SQL> grant read on directory hr_expimp_dir to system;
授權成功。

[oracle@localhost ~]$ expdp system/manager dumpfile=database.dmp directory=hr_expimp_dir job_name=diy_os full=y
Export: Release 11.2.0.1.0 - Production on 星期日 6月 14 20:37:41 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
連接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
啟動 "SYSTEM"."DIY_OS": system/******** dumpfile=database.dmp directory=hr_expimp_dir job_name=diy_os full=y
正在使用 BLOCKS 方法進行估計...
處理對象類型 DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 148.3 MB
處理對象類型 DATABASE_EXPORT/TABLESPACE
處理對象類型 DATABASE_EXPORT/PROFILE
處理對象類型 DATABASE_EXPORT/SYS_USER/USER
處理對象類型 DATABASE_EXPORT/SCHEMA/USER
處理對象類型 DATABASE_EXPORT/ROLE
處理對象類型 DATABASE_EXPORT/GRANT/SYSTEM_GRANT/PROC_SYSTEM_GRANT
處理對象類型 DATABASE_EXPORT/SCHEMA/GRANT/SYSTEM_GRANT
處理對象類型 DATABASE_EXPORT/SCHEMA/ROLE_GRANT
處理對象類型 DATABASE_EXPORT/SCHEMA/DEFAULT_ROLE
處理對象類型 DATABASE_EXPORT/SCHEMA/TABLESPACE_QUOTA
處理對象類型 DATABASE_EXPORT/RESOURCE_COST
處理對象類型 DATABASE_EXPORT/TRUSTED_DB_LINK
處理對象類型 DATABASE_EXPORT/SCHEMA/SEQUENCE/SEQUENCE
處理對象類型 DATABASE_EXPORT/SCHEMA/SEQUENCE/GRANT/OWNER_GRANT/OBJECT_GRANT
處理對象類型 DATABASE_EXPORT/DIRECTORY/DIRECTORY
處理對象類型 DATABASE_EXPORT/DIRECTORY/GRANT/OWNER_GRANT/OBJECT_GRANT
處理對象類型 DATABASE_EXPORT/CONTEXT
處理對象類型 DATABASE_EXPORT/SCHEMA/PUBLIC_SYNONYM/SYNONYM
處理對象類型 DATABASE_EXPORT/SCHEMA/SYNONYM
處理對象類型 DATABASE_EXPORT/SCHEMA/TYPE/INC_TYPE
處理對象類型 DATABASE_EXPORT/SCHEMA/TYPE/TYPE_SPEC
處理對象類型 DATABASE_EXPORT/SCHEMA/TYPE/GRANT/OWNER_GRANT/OBJECT_GRANT

.......
.......
[oracle@localhost ~]$ ls /mnt/pump/database.dmp
/mnt/pump/database.dmp


導出一個模式:
[oracle@localhost ~]$ expdp hr/hr directory=hr_expimp_dir dumpfile=hrschema.dmp


Export: Release 11.2.0.1.0 - Production on 星期日 6月 14 20:55:55 2015


Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.


連接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
啟動 "HR"."SYS_EXPORT_SCHEMA_01": hr/******** directory=hr_expimp_dir dumpfile=hrschema.dmp
正在使用 BLOCKS 方法進行估計...
處理對象類型 SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 128 KB
處理對象類型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
處理對象類型 SCHEMA_EXPORT/SEQUENCE/SEQUENCE
處理對象類型 SCHEMA_EXPORT/TABLE/TABLE
處理對象類型 SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理對象類型 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理對象類型 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理對象類型 SCHEMA_EXPORT/TABLE/COMMENT
處理對象類型 SCHEMA_EXPORT/VIEW/VIEW
處理對象類型 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
處理對象類型 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . 導出了 "HR"."T" 5.031 KB 3 行
. . 導出了 "HR"."TT" 5.007 KB 2 行
. . 導出了 "HR"."COUNTRIES" 0 KB 0 行
. . 導出了 "HR"."DEPARTMENTS" 0 KB 0 行
. . 導出了 "HR"."EMPLOYEES" 0 KB 0 行
. . 導出了 "HR"."JOBS" 0 KB 0 行
. . 導出了 "HR"."JOB_HISTORY" 0 KB 0 行
. . 導出了 "HR"."LOCATIONS" 0 KB 0 行
. . 導出了 "HR"."REGIONS" 0 KB 0 行
已成功加載/卸載了主表 "HR"."SYS_EXPORT_SCHEMA_01"
******************************************************************************
HR.SYS_EXPORT_SCHEMA_01 的轉儲文件集為:
/mnt/pump/hrschema.dmp
作業 "HR"."SYS_EXPORT_SCHEMA_01" 已於 20:57:07 成功完成


導出特定的表:

[oracle@localhost ~]$ expdp hr/hr dumpfile=hrttt.dmp tables=t directory=hr_expimp_dir
Export: Release 11.2.0.1.0 - Production on 星期日 6月 14 20:59:27 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
連接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
啟動 "HR"."SYS_EXPORT_TABLE_01": hr/******** dumpfile=hrttt.dmp tables=t directory=hr_expimp_dir
正在使用 BLOCKS 方法進行估計...
處理對象類型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 64 KB
處理對象類型 TABLE_EXPORT/TABLE/TABLE
處理對象類型 TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . 導出了 "HR"."T" 5.031 KB 3 行
已成功加載/卸載了主表 "HR"."SYS_EXPORT_TABLE_01"
******************************************************************************
HR.SYS_EXPORT_TABLE_01 的轉儲文件集為:
/mnt/pump/hrttt.dmp
作業 "HR"."SYS_EXPORT_TABLE_01" 已於 20:59:38 成功完成


[oracle@localhost ~]$ ls /mnt/pump/hrttt.dmp
/mnt/pump/hrttt.dmp


導出指定的表空間:

[oracle@localhost ~]$ expdp system/manager directory=hr_expimp_dir dumpfile=expdpusers.dmp tablespaces=users;
Export: Release 11.2.0.1.0 - Production on 星期日 6月 14 21:03:38 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

連接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
啟動 "SYSTEM"."SYS_EXPORT_TABLESPACE_01": system/******** directory=hr_expimp_dir dumpfile=expdpusers.dmp tablespaces=users
正在使用 BLOCKS 方法進行估計...
處理對象類型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 832 KB
處理對象類型 TABLE_EXPORT/TABLE/TABLE
處理對象類型 TABLE_EXPORT/TABLE/INDEX/INDEX
處理對象類型 TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理對象類型 TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理對象類型 TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
處理對象類型 TABLE_EXPORT/TABLE/TRIGGER
處理對象類型 TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . 導出了 "ORACLE"."QUEST_SOO_EVENT_CATEGORIES" 93.27 KB 1641 行
. . 導出了 "HR"."T" 5.031 KB 3 行
. . 導出了 "HR"."TT" 5.007 KB 2 行
. . 導出了 "LIBRARY"."BOOKINFO" 9.437 KB 19 行
. . 導出了 "LIBRARY"."BOOKTYPE" 6.382 KB 7 行
. . 導出了 "LIBRARY"."LIBRARY_ORDER" 7.843 KB 9 行
. . 導出了 "LIBRARY"."OPERATER" 8.593 KB 20 行
. . 導出了 "LIBRARY"."READER" 12.46 KB 18 行
. . 導出了 "ORACLE"."QUEST_SOO_PARSE_TIME_TRACK" 5.453 KB 1 行
. . 導出了 "ORACLE"."QUEST_SOO_SCHEMA_VERSIONS" 5.453 KB 1 行
. . 導出了 "ORACLE"."QUEST_SOO_VERSION" 11.73 KB 1 行
. . 導出了 "SYSTEM"."T" 5.031 KB 3 行
. . 導出了 "LIBRARY"."BORROW" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_AT_APPNAME" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_AT_EXECUTION_PLAN" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_AT_OPERATIONS" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_AT_PARSE_CURSOR" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_AT_PARSE_ERROR" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_AT_PARSE_WAITS" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_AT_SESSION_ID" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_AT_SQL_BINDS" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_AT_SQL_EXECUTIONS" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_AT_SQL_EXEC_ERROR" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_AT_SQL_FETCH" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_AT_SQL_STATEMENT" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_AT_SQL_STMT_PIECES" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_AT_SQL_WAITS" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_AT_TRACE_FILE" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_AT_WAIT_NAMES" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_BUFFER_BUSY" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_LOCK_TREE" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_PLAN_TABLE" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_SB_BUFFER_BUSY" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_SB_EVENT" 0 KB 0 行
. . 導出了 "ORACLE"."QUEST_SOO_SB_IO_STAT" 0 KB 0 行
已成功加載/卸載了主表 "SYSTEM"."SYS_EXPORT_TABLESPACE_01"
******************************************************************************
SYSTEM.SYS_EXPORT_TABLESPACE_01 的轉儲文件集為:
/mnt/pump/expdpusers.dmp
作業 "SYSTEM"."SYS_EXPORT_TABLESPACE_01" 已於 21:03:53 成功完成

[oracle@localhost ~]$ ls /mnt/pump/expdpusers.dmp
/mnt/pump/expdpusers.dmp

導出數據行:
[oracle@localhost ~]$ expdp hr/hr dumpfile=datarow.dmp directory=hr_expimp_dir full=y content=data_only


Export: Release 11.2.0.1.0 - Production on 星期日 6月 14 21:11:29 2015


Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.


連接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-31631: 需要權限
ORA-39161: 完整數據庫作業需要權限

此時需要授權:
SQL> GRANT DATAPUMP_EXP_FULL_DATABASE TO HR;
授權成功。

[oracle@localhost pump]$ expdp hr/hr dumpfile=datarow.dmp directory=hr_expimp_dir full=y content=data_only


Export: Release 11.2.0.1.0 - Production on 星期日 6月 14 21:21:03 2015


Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.


連接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
啟動 "HR"."SYS_EXPORT_FULL_01": hr/******** dumpfile=datarow.dmp directory=hr_expimp_dir full=y content=data_only
正在使用 BLOCKS 方法進行估計...
處理對象類型 DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 148.3 MB
. . 導出了 "SH"."CUSTOMERS" 9.853 MB 55500 行
. . 導出了 "PM"."ONLINE_MEDIA" 7.854 MB 9 行
. . 導出了 "APEX_030200"."WWV_FLOW_PAGE_PLUGS" 5.211 MB 7417 行
. . 導出了 "APEX_030200"."WWV_FLOW_STEP_ITEMS" 3.505 MB 9673 行
. . 導出了 "APEX_030200"."WWV_FLOW_STEP_PROCESSING" 2.188 MB 2239 行
. . 導出了 "SYSMAN"."MGMT_MESSAGES" 4.154 MB 23311 行
. . 導出了 "APEX_030200"."WWV_FLOW_DICTIONARY$" 2.909 MB 70601 行
. . 導出了 "SH"."SUPPLEMENTARY_DEMOGRAPHICS" 697.3 KB 4500 行
. . 導出了 "OE"."PRODUCT_DESCRIPTIONS" 2.379 MB 8640 行
. . 導出了 "SYSMAN"."MGMT_SWLIB_ENTITY_DOCUMENTS" 1.307 MB 364 行
. . 導出了 "APEX_030200"."WWV_FLOW_REGION_REPORT_COLUMN" 1.201 MB 7918 行

.......
.......
[oracle@localhost ~]$ ls /mnt/pump/datarow.dmp
/mnt/pump/datarow.dmp


導入作業所需要的空間:
[oracle@localhost ~]$ expdp hr/hr full=yes estimate_only=y estimate=statistics


Export: Release 11.2.0.1.0 - Production on 星期日 6月 14 21:26:11 2015


Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.


連接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
啟動 "HR"."SYS_EXPORT_FULL_01": hr/******** full=yes estimate_only=y estimate=statistics
正在使用 STATISTICS 方法進行估計...
處理對象類型 DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA

........
.......
預計為 "SYSTEM"."REPCAT$_SITE_OBJECTS" 0 KB
. 預計為 "SYSTEM"."REPCAT$_SNAPGROUP" 0 KB
. 預計為 "SYSTEM"."REPCAT$_TEMPLATE_OBJECTS" 0 KB
. 預計為 "SYSTEM"."REPCAT$_TEMPLATE_PARMS" 0 KB
. 預計為 "SYSTEM"."REPCAT$_TEMPLATE_REFGROUPS" 0 KB
. 預計為 "SYSTEM"."REPCAT$_TEMPLATE_SITES" 0 KB
. 預計為 "SYSTEM"."REPCAT$_TEMPLATE_TARGETS" 0 KB
. 預計為 "SYSTEM"."REPCAT$_USER_AUTHORIZATIONS" 0 KB
. 預計為 "SYSTEM"."REPCAT$_USER_PARM_VALUES" 0 KB
. 預計為 "SYSTEM"."SQLPLUS_PRODUCT_PROFILE" 0 KB
使用 STATISTICS 方法的總估計: 72.23 MB
作業 "HR"."SYS_EXPORT_FULL_01" 已於 21:26:36 成功完成


IMPDP:
impdp可以導入整個數據庫,特定的模式,特定的表或者特定的表空間。也可以在不同平台的數據庫之間進行數據遷移表空間。impdp通過各種參數支持數據過濾以及對元數據的過濾,而元數據的過濾可以有效的控制要導入對象類型,如表,索引,還是授權等等。impdp也一樣使用directory,parfile,dumpfile,logfile等參數,add_file是expdp實用程序專有的,impdp也有專有的參數SQLFILE,往往從備份中提取ddl語句時,需要使用sqlfile.

[oracle@localhost pump]$ impdp hr/hr directory=hr_expimp_dir dumpfile=hrttt.dmp sqlfile=wang.sql


Import: Release 11.2.0.1.0 - Production on 星期日 6月 14 21:38:12 2015


Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.


連接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功加載/卸載了主表 "HR"."SYS_SQL_FILE_FULL_01"
啟動 "HR"."SYS_SQL_FILE_FULL_01": hr/******** directory=hr_expimp_dir dumpfile=hrttt.dmp sqlfile=wang.sql
處理對象類型 TABLE_EXPORT/TABLE/TABLE
處理對象類型 TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
作業 "HR"."SYS_SQL_FILE_FULL_01" 已於 21:38:18 成功完成



我們打開sqlfile文件wang.sql:

[oracle@localhost ~]$ cat /mnt/pump/wang.sql
-- CONNECT HR
ALTER SESSION SET EVENTS '10150 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10904 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '25475 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10407 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10851 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '22830 TRACE NAME CONTEXT FOREVER, LEVEL 192 ';
-- new object type path: TABLE_EXPORT/TABLE/TABLE
CREATE TABLE "HR"."T"
( "T" DATE
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ;

-- new object type path: TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
DECLARE
c varchar2(60);
nv varchar2(1);
df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS';
s varchar2(60) := 'HR';
t varchar2(60) := 'T';
p varchar2(1);
sp varchar2(1);
stmt varchar2(300) := 'INSERT INTO "SYS"."IMPDP_STATS" (type,version,c1,c2,c3,c4,c5,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,d1,r1,r2,ch1,flags) VALUES (''C'',5,:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20,:21)';
BEGIN
DELETE FROM "SYS"."IMPDP_STATS";
INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags,c1,c2,c3,c5,n1,n2,n3,n4,n10,n11,n12,d1) VALUES ('T',5,2,t,p,sp,s,
3,5,8,3,NULL,NULL,NULL,
TO_DATE('2015-06-13 22:40:49',df));
c := 'T';
EXECUTE IMMEDIATE stmt USING t,p,sp,c,s,
3,.333333333333333,3,3,0,2449585,2457152,8,nv,nv,nv,
TO_DATE('2015-06-13 22:40:49',df),'77C20814010101','78730509010101',nv,2;


DBMS_STATS.IMPORT_TABLE_STATS('"HR"','"T"',NULL,'"IMPDP_STATS"',NULL,NULL,'"SYS"');
DELETE FROM "SYS"."IMPDP_STATS";
END;
/

在導入時,impdp會自動從備份文件中提取sql語句,並將提取的sql語句保存在sqlfile指定的文件中。保存在directory指定的文件夾中。sqlfile參數作用是為特定的備份文件提取sql的ddl語句,而不是實際的ddl行為,它提取的是備份文件中的ddl的sql腳本內容,使得用戶知道在備份文件中發生了哪些ddl行為。

查看幫助:
[oracle@localhost ~]$ impdp help=yes


Import: Release 11.2.0.1.0 - Production on 星期日 6月 14 21:44:31 2015


Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.




數據泵導入實用程序提供了一種用於在 Oracle 數據庫之間傳輸
數據對象的機制。該實用程序可以使用以下命令進行調用:


示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp


您可以控制導入的運行方式。具體方法是: 在 'impdp' 命令後輸入
各種參數。要指定各參數, 請使用關鍵字:


格式: impdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp


USERID 必須是命令行中的第一個參數。


------------------------------------------------------------------------------


以下是可用關鍵字和它們的說明。方括號中列出的是默認值。


ATTACH
連接到現有作業。
例如, ATTACH=job_name。


CONTENT
指定要加載的數據。
有效的關鍵字為: [ALL], DATA_ONLY 和 METADATA_ONLY。


DATA_OPTIONS
數據層選項標記。
有效的關鍵字為: SKIP_CONSTRAINT_ERRORS。


DIRECTORY
用於轉儲文件, 日志文件和 SQL 文件的目錄對象。


DUMPFILE
要從中導入的轉儲文件的列表 [expdat.dmp]。
例如, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。


ENCRYPTION_PASSWORD
用於訪問轉儲文件中的加密數據的口令密鑰。
對於網絡導入作業無效。


ESTIMATE
計算作業估計值。
有效的關鍵字為: [BLOCKS] 和 STATISTICS。


EXCLUDE
排除特定對象類型。
例如, EXCLUDE=SCHEMA:"='HR'"。


FLASHBACK_SCN
用於重置會話快照的 SCN。


FLASHBACK_TIME
用於查找最接近的相應 SCN 值的時間。


FULL
導入源中的所有對象 [Y]。


HELP
顯示幫助消息 [N]。


INCLUDE
包括特定對象類型。
例如, INCLUDE=TABLE_DATA。


JOB_NAME
要創建的導入作業的名稱。


LOGFILE
日志文件名 [import.log]。


NETWORK_LINK
源系統的遠程數據庫鏈接的名稱。


NOLOGFILE
不寫入日志文件 [N]。


PARALLEL
更改當前作業的活動 worker 的數量。


PARFILE
指定參數文件。


PARTITION_OPTIONS
指定應如何轉換分區。
有效的關鍵字為: DEPARTITION, MERGE 和 [NONE]。


QUERY
用於導入表的子集的謂詞子句。
例如, QUERY=employees:"WHERE department_id > 10"。


REMAP_DATA
指定數據轉換函數。
例如, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。


REMAP_DATAFILE
在所有 DDL 語句中重新定義數據文件引用。(重新定義數據文件的名稱和目錄)


REMAP_SCHEMA
將一個方案中的對象加載到另一個方案。(重新映射模式,可以將對象從一個模式移動到另一個模式)


REMAP_TABLE
將表名重新映射到另一個表。
例如, REMAP_TABLE=EMP.EMPNO:REMAPPKG.EMPNO。


REMAP_TABLESPACE
將表空間對象重新映射到另一個表空間。(可以將數據對象從一個表空間移動到另一個表空間)


REUSE_DATAFILES
如果表空間已存在, 則將其初始化 [N]。


SCHEMAS
要導入的方案的列表。


SKIP_UNUSABLE_INDEXES
跳過設置為“索引不可用”狀態的索引。


SOURCE_EDITION
用於提取元數據的版本。


SQLFILE
將所有的 SQL DDL 寫入指定的文件。


STATUS
監視作業狀態的頻率, 其中
默認值 [0] 表示只要有新狀態可用, 就立即顯示新狀態。


STREAMS_CONFIGURATION
啟用流元數據的加載


TABLE_EXISTS_ACTION
導入對象已存在時執行的操作。
有效的關鍵字為: APPEND, REPLACE, [SKIP] 和 TRUNCATE。


TABLES
標識要導入的表的列表。
例如, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995。


TABLESPACES
標識要導入的表空間的列表。


TARGET_EDITION
用於加載元數據的版本。


TRANSFORM
要應用於適用對象的元數據轉換。
有效的關鍵字為: OID, PCTSPACE, SEGMENT_ATTRIBUTES 和 STORAGE。(說明在導入數據泵作業時可以選擇導入某一個對象的存儲參數或者其他的屬性,如導入表時不導入該表的存儲屬性。語法:TRANSFORM=TRANSFORM_NAME:VALUE[:OBJECT_TYPE])

TRANSPORTABLE
用於選擇可傳輸數據移動的選項。
有效的關鍵字為: ALWAYS 和 [NEVER]。
僅在 NETWORK_LINK 模式導入操作中有效。


TRANSPORT_DATAFILES
按可傳輸模式導入的數據文件的列表。


TRANSPORT_FULL_CHECK
驗證所有表的存儲段 [N]。


TRANSPORT_TABLESPACES
要從中加載元數據的表空間的列表。
僅在 NETWORK_LINK 模式導入操作中有效。


VERSION
要導入的對象的版本。
有效的關鍵字為: [COMPATIBLE], LATEST 或任何有效的數據庫版本。
僅對 NETWORK_LINK 和 SQLFILE 有效。


------------------------------------------------------------------------------


下列命令在交互模式下有效。
注: 允許使用縮寫。


CONTINUE_CLIENT
返回到事件記錄模式。如果處於空閒狀態, 將重新啟動作業。


EXIT_CLIENT
退出客戶機會話並使作業保持運行狀態。


HELP
匯總交互命令。


KILL_JOB
分離並刪除作業。


PARALLEL
更改當前作業的活動 worker 的數量。


START_JOB
啟動或恢復當前作業。
有效的關鍵字為: SKIP_CURRENT。


STATUS
監視作業狀態的頻率, 其中
默認值 [0] 表示只要有新狀態可用, 就立即顯示新狀態。


STOP_JOB
按順序關閉作業執行並退出客戶機。
有效的關鍵字為: IMMEDIATE。


導入表:

SQL> DESC T;
ERROR:
ORA-04043: 對象 T 不存在

[oracle@localhost ~]$ impdp hr/hr directory=hr_expimp_dir dumpfile=hrttt.dmp


Import: Release 11.2.0.1.0 - Production on 星期日 6月 14 21:56:40 2015


Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.


連接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功加載/卸載了主表 "HR"."SYS_IMPORT_FULL_01"
啟動 "HR"."SYS_IMPORT_FULL_01": hr/******** directory=hr_expimp_dir dumpfile=hrttt.dmp
處理對象類型 TABLE_EXPORT/TABLE/TABLE
處理對象類型 TABLE_EXPORT/TABLE/TABLE_DATA
. . 導入了 "HR"."T" 5.031 KB 3 行
處理對象類型 TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
作業 "HR"."SYS_IMPORT_FULL_01" 已於 21:56:43 成功完成


SQL> desc t;
名稱 是否為空? 類型
----------------------------------------- -------- ----------------------------
T DATE


以上只是拋磚引玉,讀者可以自行試驗,導入模式,特定的表,表空間,表對象等等。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved