ORA-00604, ORA-16000: 開啟資料庫以進行只讀訪問
同事近期碰到的一個問題, 關於同義詞invalid狀態 在database read only 模式下不能被select 的問題。 發現是因為修改某些結構導致同義詞處於invalid 狀態, 但是資料庫又被開啟為read only 了, 9i及以後的版本雖然在呼叫或執行invalid object 的時候可以自動compile 為 invalid , 但是由於庫是read only 的 , 將同義詞之類的object 編譯為invalid 需要更新資料字典表 , read only 不能更新 。 導致報錯。
以下是過程:
----------------------------------------------
開啟為read only狀態,查詢普通表R_FEEDER_ID_T時報錯(不管下什麼條件都報錯,甚至select 1 from R_FEEDER_ID_T也不行 )
ORA-00604: 遞迴SQL級別1出現錯誤
ORA-16000: 開啟資料庫以進行只讀訪問
使用trace 跟蹤:
alter session set events '10046 trace name context forever, level 8';
alter session set events '10046 trace name context off';
開啟trace file 發現有兩條update 及 alter table xxxx compile 語句:
=====================
PARSING IN CURSOR #8 len=78 dep=2 uid=0 ct=6 lid=0 tim=1276370678014051 hv=1963305302 ad='656a14b8'
update dependency$ set p_timestamp=:1, p_obj#=:2 where d_obj#=:3 and p_obj#=:4
END OF STMT
PARSE #8:c=0,e=15,p=0,cr=0,cu=0,mis=0,r=0,dep=2,og=4,tim=1276370678014046
EXEC #7:c=0,e=2811,p=0,cr=0,cu=0,mis=1,r=0,dep=2,og=4,tim=1276370678016944
FETCH #7:c=0,e=53,p=0,cr=3,cu=0,mis=0,r=0,dep=2,og=4,tim=1276370678017055
EXEC #11:c=0,e=4561,p=0,cr=3,cu=0,mis=0,r=0,dep=1,og=1,tim=1276370678017163
=====================
PARSING IN CURSOR #1 len=54 dep=1 uid=0 ct=6 lid=0 tim=1276370678017644 hv=3946387688 ad='656886f8'
update syn$ set node=:2,owner=:3,name=:4 where obj#=:1
END OF STMT
PARSE #1:c=0,e=398,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,tim=1276370678017639
EXEC #1:c=0,e=851,p=0,cr=2,cu=2,mis=1,r=0,dep=1,og=4,tim=1276370678018595
ERROR #1:err=16000 tim=1741938016
=====================
看起來dependency$ ,syn$應該是和依賴性、同義詞有關
查詢同義詞發現是invalid 狀態, 將資料庫重啟,開成read write模式,查詢一下這幾個同義詞失效的表,再看同義詞的狀態已經變成valid了 。 再次將資料庫關掉,開啟成read only模式,這時再查之前有問題的表,已經正常了 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-697000/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 啟動oracle資料庫到只讀模式Oracle資料庫模式
- 3.2.4 開啟資料庫到限制訪問模式資料庫模式
- 使用speedment以Java 8 Stream訪問資料庫Java資料庫
- PG 裡面的只讀使用者,只讀資料庫資料庫
- 文件被鎖定以只讀模式開啟怎麼取消 檔案只讀模式怎麼解除模式
- MySQL設定資料庫為只讀MySql資料庫
- 以只讀模式開啟物理備庫的時候,遇到ORA-16006錯誤模式
- GUI應用程式該以何種方式訪問資料庫?GUI資料庫
- [開源] .Net ORM 訪問 Firebird 資料庫ORM資料庫
- JDBC資料庫訪問JDBC資料庫
- 自動同步整個 MySQL/Oracle 資料庫以進行資料分析MySqlOracle資料庫
- 使用HttpURLConnection訪問介面進行資料處理HTTP
- 【資料庫訪問優化方案之讀寫分離】資料庫優化
- Linux Mint以後將只基於Ubuntu LTS進行開發LinuxUbuntu
- Oracle資料庫訪問控制Oracle資料庫
- 異構資料庫訪問資料庫
- PG 資料庫只讀使用者的建立。資料庫
- 使用Spring實現訪問主從資料庫的讀寫和只讀事務/事物的分離路由 -Vlad MihalceaSpring資料庫路由
- jboss訪問資料庫的問題資料庫
- 啟明星辰專訪:資料庫安全審計趨勢解讀資料庫
- 使用ADO,多執行緒訪問ACCESS資料庫的開發。 (轉)執行緒資料庫
- [開源] .Net 使用 ORM 訪問 華為GaussDB資料庫ORM資料庫
- 2 Day DBA-開始資料庫管理-訪問資料庫主頁面資料庫
- 啟用enable restricted對資料庫進行維護REST資料庫
- 【Oracle】rman 恢復只讀表空間資料庫Oracle資料庫
- 外網訪問MySQL資料庫MySql資料庫
- Oracle資料庫限制訪問IPOracle資料庫
- C#訪問MySQL資料庫C#MySql資料庫
- C#訪問SQLite資料庫C#SQLite資料庫
- 訪問HyperSQL資料庫的方法SQL資料庫
- 限制特定IP訪問資料庫資料庫
- 資料庫如何處理大資料訪問資料庫大資料
- 求助:資料庫併發訪問問題資料庫
- RAC環境只啟動單例項資料庫單例資料庫
- standby上增加tempfile報錯ORA-00604,ORA-16000解決方法
- 本機資料庫資料庫鏈無法訪問遠端資料庫資料庫
- 資料傳輸 | 如何開啟 DTLE 的 HTTPS 訪問模式HTTP模式
- 【EXP】資料庫只讀模式下如何使用exp和expdp資料庫模式