Data Pump 可以并行運行多個 worker 進程來提高 DataPump job 的性能。將 PARALLEL 參數設置為合理并行度可以充分利用當前的條件來提高性能。為了限制 Data Pump job 對生產系統的影響, DBA 可以對 job 的并行度進行限制。例如,在業務系統生產期間可以將 P
Data Pump可以并行運行多個 worker進程來提高 DataPump job的性能。將 PARALLEL參數設置為合理并行度可以充分利用當前的條件來提高性能。為了限制 Data Pump job對生產系統的影響,DBA可以對 job的并行度進行限制。例如,在業務系統生產期間可以將 PARALLEL設置為 2,在非生產期間可以將并行度設置為 8,可以在 job運行的任何時間調整 PARALLEL參數的值。并行度設置由 master進程實施,該進程負責為執行數據和元數據處理操作的每個 worker進程分配任務。Worker進程以并行方式運行。一般而言,并行度不應超過數據庫實例所在服務器 CPU數量的兩倍。
?
僅支持在Enterprise Edition of oracle Database中調整并行度,在 StandardEdition of Oracle Database中
并行度的值限制為 1。
?
Worker進程就是實際并行執行元數據和表數據導入導出操作的的進程。Data Pump job運行期間會根據需要創建 worker進程,work進程的數量小于等于PARALLEL參數所設置的值。Worker進程的數量可以在整個job的運行周期內隨時調整。在 Oracle RAC環境下,worker進程可以在 RAC上的任意節點上啟動。在Oracle RAC環境下,如果 PARALLEL=1,則 Data Pump進程會在啟動 job的實例上運行,因此,在單實例場景或者 RAC場景下(PARALLEL=1時)directory對象可以指向實例所在的本地存儲。
單實例場景下PARALLEL參數使用示例:
SQL> createdirectory dp_dir as ‘/home/oracle/backup’;
?
SQL> grantread,write on directory dp_dir to system;
?
[oracle@prod ~]$expdp system/oracle123 parallel=2 schemas=scott
>directory=dp_dir dumpfile=scott_%U.emp
?
[oracle@prod ~]$expdp system/oracle123 attach=SYS_EXPORT_SCHEMA_01
?
?
Job:SYS_EXPORT_SCHEMA_01
? Owner: SYSTEM????????????????????????
? Operation: EXPORT????????????????????????
? Creator Privs: TRUE??????????????????????????
? GUID: DE906BA6FC730F15E043B408A8C049CD
? Start Time: Friday, 07 June, 2013 20:18:03
? Mode: SCHEMA????????????????????????
? Instance: prod
? Max Parallelism: 2
? EXPORT Job Parameters:
? Parameter Name????? Parameter Value:
???? CLIENT_COMMAND??????? system/******** parallel=2schemas=scott directory=dp_dir dumpfile=scott_%U.emp
? State: EXECUTING?????????????????????
? Bytes Processed: 0
? Current Parallelism: 2
? Job Error Count: 0
? Dump File: /home/oracle/backup/scott.emp
??? bytes written: 4,096
?
Worker 1 Status:
? Process Name: DW00
? State: EXECUTING???
?
Export> status
?
Job:SYS_EXPORT_SCHEMA_01
? Operation: EXPORT????????????????????????
? Mode: SCHEMA????????????????????????
? State: EXECUTING?????????????????????
? Bytes Processed: 0
? Current Parallelism: 2
? Job Error Count: 0
? Dump File: /home/oracle/backup/scott.emp
??? bytes written: 4,096
?
Worker 1 Status:
? Process Name: DW00
? State: EXECUTING?????????????????????
? Object Schema: SCOTT
? Object Name: TEST
? Object Type: SCHEMA_EXPORT/TABLE/TABLE_DATA
? Completed Objects: 5
? Total Objects: 5
? Worker Parallelism: 1
?
Worker 2 Status:
? Process Name: DW01
? State: EXECUTING?????????????????????
? Object Schema: SCOTT
? Object Name: DEPT
? Object Type: SCHEMA_EXPORT/TABLE/TABLE_DATA
? Completed Objects: 1
? Total Objects: 5
? Worker Parallelism: 1
?
在 Oracle RAC環境下,如果 PARALLEL的值大于1,則 Data Pump進程可能會在啟動 job的實例以外的其他實例上運行。因此,在RAC環境(PARALLEL不等于1時),directory對象必須指向Oracle RAC的所有實例都能訪問的共享存儲上。如果 directory對象所指的位置為非共享存儲,則極可能報如下錯誤:
?
Starting”SYSTEM”.”SYS_EXPORT_SCHEMA_01″:? system/******** SCHEMAS=HX_SB,HX_ZS,HX_PZdumpfile=expdp_hxsb7_%U.dmp logfile=expdp_hxsb7.log DIRECTORY=dp_dirCOMPRESSION=ALL EXCLUDE=GRANT,TRIGGER,
STATISTICSPARALLEL=3 flashback_scn=13374657833367
?
ORA-31693: Tabledata object “HX_SB”.”SB_SBXX”:”P25001_PRE” failedto load/unload and is being skipped due to error:
ORA-31617: unable toopen dump file “/home/oracle/backup/expdp_hxsb7_03.dmp” for write
ORA-19505: failed toidentify file “/home/oracle/backup/expdp_hxsb7_03.dmp”
ORA-27037: unable toobtain file status
IBM AIX RISCSystem/6000 Error: 2: No such file or directory
Additionalinformation: 3
?
在實際的生產或測試環境中,我們可以使用 ASM來存放 DataPump dump文件,使用如下命令創建 directory對象即可:
?
Createdirectory dp_dir as ‘+DATA/dump’;
?
當我們無法使用類似于 ASM、ACFS、NFS之類的共享存儲時,如果想要使用
PARALLEL參數來執行 Data Pump job,還是有一些方法的:
1、在一個節點上執行 Data Pump進程,關閉其他節點
2、在 Data Pump job中指定 CLUSTER參數(YES或NO),該參數指定 Data Pump job 是否可以使用 Oracle RAC的資源以及是否可以在其他 RAC實例上啟動 worker進程。
?????將 CLUSTER參數設置為 NO可以強制使 DataPump job只使用啟動 job的實例上的資源。
?????將 CLUSTER參數設置為 YES,并設置SERVICE_NAME定義一個資源組,將特定的數據庫實例包含到該資源組中,可以使 Data Pump job使用特定的RAC實例上的資源。
?
影響 Data Pump性能調整建議:
確保 dump文件各成員最好存儲在單獨的磁盤上,因為 dump文件的讀和寫是并行性的。同時 dump文件不應與 source表空間和 target表空間放在相同的磁盤上。
?
使用壓縮和加密相關的參數也會影響 Data Pump的性能,對原始數據執行這些轉換操作會消耗額外的 CPU資源。
?
影響 Data Pump性能的初始化參數:
?
DISK_ASYNCH_IO=TRUE
DB_BLOCK_CHECKING=FALSE
DB_BLOCK_CHECKSUM=FALSE
?
SHARED_POOL_SIZE
UNDO_TABLESPACE
?
STREAMS_POOL_SIZE
Data Pump使用 stream功能在各個進程之間進行通信,如果設置了 SGA_TARGET,則該參數會自動設置為合理的值。
如果未設置SGA_TARGET,則STREAMS_POOL_SIZE的值默認會自動設置為 shared pool大小的 10%。Oracle推薦STREAMS_POOL_SIZE的值不應小于 10MB.
?
為了提高并行度,還需要將如下參數設置為足夠的值:
?
PROCESSES
SESSIONS
PARALLEL_MAX_SERVERS
作者:xiangsir
9061365
QQ:444367417
MSN:xiangsir@hotmail.com