Slow DataPump Import (Impdp) Performance using Parallel Option with Partitioned Tables

在執行impdp遇到partition table,使用了參數 content=data_only,雖然有指定 parallel為8,但實際執行卻只有1個worker在動作

# cat impdp_dataonly_st.par
userid=system/"password"
directory=dmp
dumpfile=expdp_orcl_%U.dmp
logfile=impdp_dataonly_st.log
parallel=8
tables=PE.PROC_LOG,PE.MSG_LOG,PE.MSG_LOG_DETAIL
CONTENT=data_only

依 Oracle Doc ID 2098931.1,沒有產生parallel執行的原因,是import前就先建立了 partition table,後面才再匯入資料,分成了兩個import動作,才會沒產生parallel,需要用一次性動作建表與匯入的方式才能產生出parallel

# cat impdp_dataonly_st.par
userid=system/"password"
directory=dmp
dumpfile=expdp_orcl_%U.dmp
logfile=impdp_dataonly_st.log
parallel=8
tables=PE.PROC_LOG,PE.MSG_LOG,PE.MSG_LOG_DETAIL

隨後將匯入的表先刪除後,重新去import,其中的動作包含了建立partition table和import data,實際上還是沒產生 parallel執行,依然是1個worker在動作

隨後查了查網路資料,發現 datapump有一個參數可以使用 ACCESS_METHOD,參數內容的值分為 AUTOMATIC | DIRECT_PATH | EXTERNAL_TABLE,預設為 AUTOMATIC,這裡使用 DIRECT_PATH,其解釋這個參數值是忽略掉SQL驗證這層,直接將資料insert到目標

# cat impdp_dataonly_st.par
userid=system/"password"
directory=dmp
dumpfile=expdp_orcl_%U.dmp
logfile=impdp_dataonly_st.log
parallel=8
tables=PE.PROC_LOG,PE.MSG_LOG,PE.MSG_LOG_DETAIL
ACCESS_METHOD=DIRECT_PATH

但官方解釋使用此方式,可能會造成ORA-31696的錯誤發生

實際操作上,確時會因為是匯入 partition table,直接跳出ORA-31696的錯誤

後來又查了Oracle Support,在一篇 Doc ID 1327029.1 也有人遇到類似Partition table too large 匯入的問題,隨後官方有給出一些解決方式

其中一個方法就是在import時加上 DATA_OPTIONS=DISABLE_APPEND_HINT,經測試後才解決匯入慢或遇到partition時,只剩1個worker在動作的問題

# cat impdp_dataonly_st.par
userid=system/"password"
directory=dmp
dumpfile=expdp_orcl_%U.dmp
logfile=impdp_dataonly_st.log
parallel=8
tables=PE.PROC_LOG,PE.MSG_LOG,PE.MSG_LOG_DETAIL
DATA_OPTIONS=DISABLE_APPEND_HINT

官網說明這參數的用意:This will cause the loads to conventional load instead of direct load, but it will allow multiple import jobs to load the same table simultaneously.


參考來源:

Slow DataPump Import (Impdp) Performance using Parallel Option with Pre-created Partitioned Tables (Doc ID 2098931.1)

What Happens To Undo Tablespace During DataPump Import And How To Fix It

DataPump Import (IMPDP) Can Fail With Error ORA-31696 If ACCESS_METHOD=DIRECT_PATH Is Manually Specified (Doc ID 469439.1)

DataPump Performance: Impdp Slow When Importing Partitioned Table (Doc ID 1327029.1)

張貼留言

0 留言