遭遇ORA-04063


剛剛,客戶的繳費系統突然報錯,應用程序在后台提示執行某個存儲過程時出錯,手動在PLSQL DEVELOPER工具上執行那段報錯的代碼,錯誤顯示如下:

可以看出,這段代碼提示ORA-04063,在訪問某個view時報錯。

最開始,懷疑這個視圖是否正常,讓客戶執行SQL語句檢查這個視圖的狀態。

 

 

 可以看出,這個視圖沒有任何問題。我讓客戶把整個存儲過程發過來,發現報錯的地方是通過DBLINK訪問遠程數據庫上的一個視圖。

此時,客戶也在積極地做着各種測試。發現只要在通過PL/SQL代碼塊就報ORA-04063錯誤,單獨通過DBLINK訪問都沒有任何問題,測試過程如圖:

 

 

 

         這些測試可以說明,這個問題與視圖沒有任何關系,因為在PL/SQL塊里通過DBLINK訪問原表都報錯。

 

        通過關鍵字“ora-04063 dblink”進行搜索,發現MOS上有一篇文章:

Accessing TABLE From READ ONLY DATABASE Using DATABASE LINK Within PL/SQL Fails With ORA-06550 ORA-04063 or PLS-00905(Doc ID 358697.1)

        這篇文章提到,當在PL/SQL中通過DBLINK訪問READ ONLY數據庫時,有可能會出現ORA-04063錯誤。

錯誤原因:

CAUSE

This is expected behavior.

Compiling the PL/SQL block we require internal structures of the table, which is not yet generated in the read only database.

This has been identified in:
Bug 2798026 ORA-6550 / PLS-905 WHEN RUNNING PL/SQL OVER DBLINK TO READ ONLY STANDBY DATABASE

        詢問客戶當前數據庫是個怎樣的架構,客戶反饋:源端是19C的RAC,生產庫是11.2.0.2 RAC,在生產庫上建立了DBLINK訪問19C上的數據,並且源端的19C是一個Dataguard環境的備端。

 

        看起來,這個問題與這篇MOS文章的匹配度蠻高的,趕緊讓客戶看看這個文章。但客戶覺得這個系統已經使用很久了,這個PL/SQL代碼塊也運行了很久,怎么突然就不行了?如果是這個問題,理論上應該系統剛上線就出錯才對呀。我一時無以反駁。。。

        報着試試的想法,客戶根據MOS文章中的workaread進行了修改。發現執行了workaread后,問題竟然解決了。那說明剛剛遭遇的故障真是這篇MOS提到的情況。

        對於這個問題,ORACLE官方就不認為是一BUG,所以也沒有相應的補丁。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM