oracle11g 在dg中standby檢視報ora-04045錯誤

datapeng發表於2015-12-15

ORACLE11G支援在standby只讀開啟資料庫,可供報表查詢使用。
最近遇到一個奇怪的事,突然間發現檢視不能用,報如下錯誤:
ORA-04045:在重新編譯/重新驗證 某檢視報錯。
緊接著報了ORA-16000的錯誤,開啟資料庫進行只讀訪問。
分別檢視兩個錯誤資訊:
[oracle@test ~]$ oerr ora 04045
04045, 00000, "errors during recompilation/revalidation of %s.%s"
// *Cause:  This message indicates the object to which the following
//          errors apply.  The errors occurred during implicit
//          recompilation/revalidation of the object.
// *Action: Check the following errors for more information, and
//          make the necessary corrections to the object.

[oracle@test ~]$ oerr ora 16000
16000, 00000, "database open for read-only access"
// *Cause:  The database was opened for read-only access.  Attempts to
//          modify the database using DML or DDL statements generate this
//          error.
// *Action: In order to modify the database, it must first be shut down and
//          reopened for read/write access

從錯誤中可以看出,第一個錯誤是檢視經過修改,第二個錯誤是在standby節點時進行編譯是說資料庫只讀。
但可以看到的是該檢視在主節點是可以執行的,後來經過分析查詢,操作人員對原來的欄位進行了擴充套件,引起備節點的報錯。原因是在備節點時,記憶體裡資訊沒有更新,後來進行查詢時,發現與本地有差異,進行重新編譯報錯。
解決辦法,就是在主節點對該檢視進行了重建,再查詢時,問題解決!

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

相關文章