? ? 今天碰到一個有意思的問題。
??? 為了降低統計分析數據庫的計算和磁盤空間壓力。我們使用了將遠程數據庫中數據通過DBLINK和SYNONYM的形式來緩解當前統計數據庫所面臨的問題。工作實施的比較順利。但是統計人員發現有幾個執行統計的PL/SQL過程和包(PACKAGE)失效。
??? 趕快查看失效的數據庫對象,發現都是報ORA-00980
??? 看看出錯原因:
????
????
??? 可是我的DBLINK和源數據庫中沒有出錯的表、視圖或者同義詞呀。
??? 奇怪?
??? 再分析下源數據庫中的這些對象,確實發現了一個問題:
??? 就是在目標數據庫上創建SYNONYM的“基礎”不是真正意義上的表、視圖或者是SYNONYM。而是一些物化視圖(MATERIALIZED VIEW)!
??? 趕快重新修改:
??? 試著按照一個物化視圖(還好是簡單的只讀物化視圖!)的規則新建一個SYNONYM,然后在目標數據庫上利用該新建的SYNONYM為基礎創建一個基于DBLINK的SYNONYM(這話說著確實比較繞嘴)。然后編譯某個相關聯的PL/SQL程序,編譯通過。
??? 奇怪,這難道是ORACLE的一個BUG?
??? 探索中 -:)
? -------------------
? 目標數據庫:9.2.0.4
? 源數據庫:? 10.2.0.1
? 補:
??? 為了降低統計分析數據庫的計算和磁盤空間壓力。我們使用了將遠程數據庫中數據通過DBLINK和SYNONYM的形式來緩解當前統計數據庫所面臨的問題。工作實施的比較順利。但是統計人員發現有幾個執行統計的PL/SQL過程和包(PACKAGE)失效。
??? 趕快查看失效的數據庫對象,發現都是報ORA-00980
??? 看看出錯原因:
????
Cause: The synonym used is based on a table, view, or synonym that no longer exists.?
Action: Replace the synonym with the name of the object it references or re-create the synonym so that it refers to a valid table, view, or synonym.
Action: Replace the synonym with the name of the object it references or re-create the synonym so that it refers to a valid table, view, or synonym.
??? 可是我的DBLINK和源數據庫中沒有出錯的表、視圖或者同義詞呀。
??? 奇怪?
??? 再分析下源數據庫中的這些對象,確實發現了一個問題:
??? 就是在目標數據庫上創建SYNONYM的“基礎”不是真正意義上的表、視圖或者是SYNONYM。而是一些物化視圖(MATERIALIZED VIEW)!
??? 趕快重新修改:
??? 試著按照一個物化視圖(還好是簡單的只讀物化視圖!)的規則新建一個SYNONYM,然后在目標數據庫上利用該新建的SYNONYM為基礎創建一個基于DBLINK的SYNONYM(這話說著確實比較繞嘴)。然后編譯某個相關聯的PL/SQL程序,編譯通過。
??? 奇怪,這難道是ORACLE的一個BUG?
??? 探索中 -:)
? -------------------
? 目標數據庫:9.2.0.4
? 源數據庫:? 10.2.0.1
? 補:
? 后來通過使用動態SQL的方法將無法編譯的問題進行了解決。
本文轉自Be the miracle!博客51CTO博客,原文鏈接http://blog.51cto.com/miracle/60615如需轉載請自行聯系原作者
Larry.Yue