怎樣在 Oracle RAC 環境下使用 Parallel 參數提高 Data Pump job

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’;

?

當我們無法使用類似于 ASMACFSNFS之類的共享存儲時,如果想要使用

PARALLEL參數來執行 Data Pump job,還是有一些方法的:

1、在一個節點上執行 Data Pump進程,關閉其他節點

2、在 Data Pump job中指定 CLUSTER參數(YESNO),該參數指定 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

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享