首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

深入 Oracle 資料字典三層架構:X$ 表、GV$/V$ 視圖、同義詞機制

     編輯:Oracle 資料庫相關知識

資料字典三層次

1.1 X$ 表:核心基礎

  • 資料庫啟動時由 Oracle 程式動態建立
  • 極其關鍵,僅 SYSDBA 可存取,顯式授權會報 ORA-02030

1.2 GV$ / V$ 視圖:動態效能視圖

  • Oracle 8 引入 GV$ (Global V$),滿足 OPS/RAC 環境需求
  • GV$ 回傳所有實例資訊;V$ 基於 GV$ 加 WHERE inst_id = USERENV('Instance') 限制當前實例
  • 每個 V$ 視圖對應一個 GV$ 視圖(少數例外)

視圖定義鏈路追蹤:

-- 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$ 表之上

1.3 GV_$/V_$ 視圖與公用同義詞

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 物件關係的入口,深入理解字典機制有助於精通資料庫內部運作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved