資料泵匯出出現ORA-31623錯誤

yangtingkun發表於2012-02-07

客戶資料庫在調整SGA後,匯出出現ORA-31623錯誤。

 

 

Oracle對於這個錯誤的描述為:

ORA-31623: a job is not attached to this session via the specified handle
Cause: An attempt to reference a job using a handle which is invalid or no longer valid for the current session.
Action: Select a handle corresponding to a valid active job or start a new job.

從這個錯誤看不出導致問題的真正原因,不過從告警日誌中可以發現進一步的資訊:

Tue Jan 17 19:30:08 2012
Errors in file /opt/oracle/diag/rdbms/mobiledb_n/mobiledb/trace/mobiledb_ora_17167.trc (incident=84810):
ORA-04031: unable to allocate 56 bytes of shared memory ("streams pool","unknown object","streams pool","fixed allocation callback")
Incident details in: /opt/oracle/diag/rdbms/mobiledb_n/mobiledb/incident/incdir_84810/mobiledb_ora_17167_i84810.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Tue Jan 17 19:30:11 2012
Dumping diagnostic data in directory=[cdmp_20120117193011], requested by (instance=1, sid=17167), summary=[incident=84810].
Tue Jan 17 19:30:12 2012
Sweep [inc][84810]: completed
Sweep [inc2][84810]: completed

資料庫在嘗試分配STREAMS POOL的時候出現了ORA-4031錯誤。此時查詢V$MEMORY_RESIZE_OPS檢視,發現同一時間大量的STREAMS POOL擴充套件失敗的記錄,Oracle嘗試分配STREAMS POOL但是目前資料庫的記憶體採用了在SGA_TARGET下手工分配的方式,為了避免Oracle記憶體的動態調整,所有的記憶體元件已經將記憶體全部使用,因此STREAMS POOL無法獲取到空間。

解決問題的方法很簡單,手工收縮DB_CACHE_SIZESHARED_POOL_SIZE的值,分配給STREAMS POOL,就可以避免這個錯誤,不過資料泵的匯出還要使用STREAMS POOL,還是第一次發現這個問題。

 

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

相關文章