操作系統:windows2012
數據庫版本:11.2.0.1本地 dblink 連接的數據庫版本是12.1.0.2(aws雲)
問題:
公司的備份是通過軟件進行定時的expdp備份,本地的windows oracle數據庫通過db_link備份,其中通過軟件備份有報錯,其中單獨執行expdp語句也有報錯,ORA-31626: job does not exist ORA-31650: timeout waiting for master process response
截圖如下:

同時,公司的軟件通過調度定時任務備份截圖如下:(以下圖是已經處理好的截圖,之前的忘記截圖了)

說明:
以上截圖中,當時的情況是rds_pay定時任務備份失敗,不光是定時任務失敗,單獨執行腳本也失敗!
ORA-31626: job does not exist ORA-31650: timeout waiting for master process response
處理思路:
由於單獨在cmd窗口執行命令都報錯(用了db_link),在本機使用plsql通過db_link查詢沒有問題

說明通過dblink訪問沒有問題,即網絡沒有問題,dblink沒有問題,以及12c的庫沒有問題,所以問題在本地庫11G上,以下是通過support查找到的幾種情況:
1.aq_tm_processes 參數

10g這個參數設置0-10,11g范圍是0-40,當時本地數據庫設置的是4,我設置成16,Oracle官方不建議設置成0,不能夠進行監視;修改成16后,立馬生效,還是同樣的報錯,所以,很明顯不是該參數設置偏小的問題。
2.升級后的問題(這個排除,沒有進行升級不一致產生的,需要重新執行catalog.sql and catproc.sql來配置后)
3.rac數據庫沒有設置clsuter=no (很明顯不是rac數據庫,排除)
4. SGA設置可能偏小
查看了support文檔,有提到至少sga為1G,但是結合現實中的情況,有接近10個定時任務的窗口,每個任務1G+,那么就定時任務耗費的SGA就有10G+;
整個memory_max_target 為17G,明顯偏小(10個備份定時任務),在設置本地11g數據庫memory_max_target為30g(服務器內存64G,先試一試30G,最大設置成物理內存的80%),重啟后,就能夠正常備份,問題得到解決。
5.觸發未知的bug(11.2.0.1通過DBLINK導出的12.1.0.2.0數據庫數據)
既然4解決了,那就不是BUG了。
總結:
本次出現ORA-31626: job does not exist ORA-31650: timeout waiting for master process response報錯的原因是SGA過小,雖然support文檔有提到至少1G,但是這個只是一個思路,並不是真的只有1G就夠了,但是我也是想了很久才打算調整內存參數的;
順便說一下如果有提示 ORA-31634: job already exists;sys_export_開頭的表太多,需要清理:
SELECT owner_name, job_name, rtrim(operation) "OPERATION",
rtrim(job_mode) "JOB_MODE", state, attached_sessions
FROM dba_datapump_jobs
WHERE job_name NOT LIKE 'BIN$%'
ORDER BY 1,2;

其中state為not running狀態的直接刪除就行,executing狀態的表不能夠刪除。刪除后就可以備份了。
