ORA-02030WHERE inst_id = USERENV('Instance') 限制當前實例視圖定義鏈路追蹤:
-- V$FIXED_TABLE 定義
SELECT view_definition FROM v_$fixed_view_definition WHERE view_name='V$FIXED_TABLE';
-- 回傳:select ... from GV$FIXED_TABLE where inst_id = USERENV('Instance')
-- GV$FIXED_TABLE 定義
SELECT view_definition FROM v_$fixed_view_definition WHERE view_name='GV$FIXED_TABLE';
-- 回傳:select inst_id,kqftanam,kqftaobj,'TABLE',indx from x$kqfta
-- union all select inst_id,kqfvinam,kqfviobj,'VIEW',65537 from x$kqfvi
-- union all select inst_id,kqfdtnam,kqfdtobj,'TABLE',65537 from x$kqfdt
-- 可見 GV$ 視圖直接建立在 X$ 表之上
catalog.sql 執行時建立:
CREATE OR REPLACE VIEW v_$fixed_table AS SELECT * FROM v$fixed_table;
CREATE OR REPLACE PUBLIC SYNONYM v$fixed_table FOR v_$fixed_table;
CREATE OR REPLACE VIEW gv_$fixed_table AS SELECT * FROM gv$fixed_table;
CREATE OR REPLACE PUBLIC SYNONYM gv$fixed_table FOR gv_$fixed_table;
實際存取鏈路:V$ 同義詞 → V_$ 視圖 → V$ 視圖 → GV$ 視圖 → X$ 表。
v$fixed_view_definition 是研究 Oracle 物件關係的入口,深入理解字典機制有助於精通資料庫內部運作。