數據字典架構
Oracle 數據字典 = 靜態字典表/視圖 (DBA_/ALL_/USER_) + 動態性能視圖 (V$/GV$)。前者存儲元數據,後者反映實例運行狀態。
三大視圖前綴語義
| 前綴 | 可見範圍 | 典型用戶 | 權限要求 |
| USER_ | 當前用戶擁有的對象 | 開發/應用用戶 | 無特殊權限 |
| ALL_ | 當前用戶擁有 + 被授權訪問 | 開發/審計 | 無特殊權限 |
| DBA_ | 所有用戶所有對象 | DBA | SELECT_CATALOG_ROLE / DBA 役 |
例如:USER_TABLES、ALL_TABLES、DBA_TABLES 結構相同,行級過濾不同。
V$ 動態性能視圖
- 基於 X$ 固定表 (C 結構體映射),實例啟動時在內存構建。
- 僅 SYS 擁有,授予
SELECT_CATALOG_ROLE 可見。
- GV$ = Global V$,RAC 環境下聚合所有實例數據 (含
INST_ID 列)。
- 不支持 DML,僅查詢。
核心視圖家族速查表 (超過 100 家族,列出高頻 20+)
| 家族 | 核心信息 | 典型查詢場景 |
| TABLES | 表空間、存儲參數、行數、塊數 | 容量規劃、分區維護 |
| TAB_COLUMNS | 列名、數據類型、長度、精度、可空性 | 元數據提取、ETL 映射 |
| INDEXES / IND_COLUMNS | 索引類型、唯一性、列順序、排序 | 索引優化、重建腳本生成 |
| CONSTRAINTS / CONS_COLUMNS | PK/FK/UK/Check、啟用狀態、引用表 | 完整性檢查、禁用/啟用腳本 |
| SEGMENTS / EXTENTS | 段大小、擴展分佈、表空間歸屬 | 碎片分析、空間回收 |
| OBJECTS | 對象類型、狀態、創建/DDL 時間 | 無效對象排查、部署驗證 |
| USERS / ROLE_PRIVS / SYS_PRIVS | 用戶屬性、角色/系統權限、ADMIN 選項 | 權限審計、最小權限原則 |
| VIEWS / SYNONYMS | 視圖定義文本、同義詞鏈接 | 依賴分析、重編譯順序 |
| TRIGGERS | 觸發事件、時機、觸發體 | 業務邏輯審計、性能影響 |
| SOURCE | 包/過程/函數/類型源碼 (除觸發器) | 代碼搜索、版本對比 |
| SEQUENCES | 緩存值、增量、循環、最後值 | 序列耗盡預警、重置腳本 |
| FREE_SPACE | 表空間空閒塊分佈 | 擴容決策、碎片整理 |
| COL_PRIVS / TAB_PRIVS | 列/表級授權詳情 | 細粒度權限審計 |
重要單一視圖 (非家族)
| 視圖 | 用途 |
| USER_COL_PRIVS_MADE | 我授予他人的列權限 |
| USER_COL_PRIVS_RECD | 我獲得的列權限 |
| USER_TAB_PRIVS_MADE | 我授予他人的表權限 |
| USER_TAB_PRIVS_RECD | 我獲得的表權限 |
實戰技巧
SELECT * FROM DICT WHERE TABLE_NAME LIKE '%TABLE%' 快速搜視圖。
DBMS_METADATA.GET_DDL 導出對象 DDL,比查字典更直觀。
- 12c+
CDB_* 視圖對應容器數據庫 (CDB/PDB) 全局視角。