Oracle

$X 表不存在?

  • February 7, 2019

在解決為什麼數據庫應用程序在測試中比生產中執行得更好的問題時,我遇到了這種現象:我無法在生產中查詢 X$ 表。

SQL> desc x$ksppi
ERROR:
ORA-04043: object "SYS"."X_$KSPPI" does not exist


SQL> select * from dba_synonyms where synonym_name = 'X$KSPPI';

OWNER                          SYNONYM_NAME                   TABLE_OWNER                    TABLE_NAME
------------------------------ ------------------------------ ------------------------------ ------------------------------
DB_LINK
--------------------------------------------------------------------------------------------------------------------------------
PUBLIC                         X$KSPPI                        SYS                            X_$KSPPI



SQL> desc sys.x$ksppi;
ERROR:
ORA-04043: object sys.x$ksppi does not exist

在測試中,我實際上收到了表格描述。

我有限的理解是,這些實際上是在數據庫之外定義為 C 結構或類似的東西,並在啟動時創建以填充 V$ 視圖。如果我的生產數據庫,特別是優化器,無法訪問隱藏參數,我肯定會明白為什麼它會對性能產生負面影響。

為什麼啟動時不創建 X$ 表?此應用程序在升級到 11.2.0.4 後的一段時間內開始出現問題,那麼拙劣的升級能否做到這一點?我可以採取哪些故障排除步驟來分析根本問題?

沒有這樣的事情X_$KSPPI。它是X$KSPPI。你有一個同義詞指向一個不存在的對象。

Oracle 數據庫中不存在該同義詞,它是由某人或其他人創建的。

desc sys.x$ksppi;如果您對除SYS.

如果您的數據庫無法訪問參數,您將遇到更大的問題,並且症狀更明顯。

引用自:https://dba.stackexchange.com/questions/229151