PL/SQL:ORA-00980同義詞轉換不再有效

dcswinner發表於2013-12-25
昨天下午已合作伙伴公司的開發人員打電話來求救,說他的儲存編譯出錯,還截了圖給我:
PL/SQL:ORA-00980同義詞轉換不再有效
通過了解情況,情況大概是這樣的,我們有一個HR的資料庫,這個資料庫中有員工表,另外我還有一個介面資料庫NEW_XZPT,他們有自己的資料庫busi,現在這個錯誤是在他們自己的busi資料庫上出現的。其中介面資料庫訪問hr資料庫是通過建立同義詞的方式,用dblink來連線的,他們自己資料庫也是通過dblink來訪問介面資料庫的。現在在他們的資料庫中的PLSQL中執行select  empno into num select empno from tb_employee@new_xzpt報ora-00980錯誤,但是單獨執行select * from tb_employee@new_xzpt不報錯。
通過分析我看到MOS上有一篇文章ORA-00980 when PL/SQL Block uses Synonym to Synonym to Table over Dblinks (Doc ID 453754.1)和這個類似,文章說這是oracle的一個bug:2829591
文章中提到了解決辦法,就是直接建立他們自己資料庫到我們這邊的HR資料庫的dblink。嘗試了這個當然是可以的。

另外我還讓他們嘗試了另外一個辦法:
就是在他們的PLSQL中,將select * from tb_employee@new_xzpt先建立成一個view,然後再plsql程式中直接查詢view。也可以解決這個問題。
最終還是採用了第二種辦法來解決的。原因是我們只准一臺介面資料庫能和外界建立關係。HR資料庫是不能對外開放的。
問題解決!

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

相關文章