首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 數據字典全景指南:USER_、ALL_、DBA_ 三大視圖體系與核心查詢速查表

     編輯:Oracle 資料庫基礎

數據字典架構

數據字典存放於 SYSTEM 表空間,包含靜態視圖(結構元數據)與動態視圖(運行時性能數據,V$/GV$)。靜態視圖分三大前綴體系:

前綴作用域前提條件典型用戶
USER_*當前用戶擁有的對象無特殊權限開發人員、應用賬號
ALL_*當前用戶可訪問的對象(含授權)需對象權限跨 Schema 查詢、審計
DBA_*資料庫所有對象需 DBA 權限或 SELECT_CATALOG_ROLEDBA、監控腳本

核心視圖速查表

1. 表相關

-- 當前用戶表
SELECT table_name, tablespace_name FROM user_tables;
SELECT * FROM user_tables WHERE table_name = 'TEST_TEMP';

-- 可訪問表
SELECT owner, table_name FROM all_tables;

-- 所有表
SELECT owner, table_name FROM dba_tables;

2. 索引相關

SELECT index_name, table_name FROM user_indexes;
SELECT * FROM user_indexes WHERE table_name = 'EMP';

3. 視圖相關

SELECT view_name FROM user_views;

4. 所有對象(表、視圖、過程、觸發器、包、序列、Java...)

SELECT object_name, object_type, created, status FROM user_objects;

5. 當前用戶信息

SELECT * FROM user_users;

6. 權限相關

SELECT * FROM user_sys_privs;      -- 系統權限
SELECT * FROM user_tab_privs;      -- 對象權限
SELECT * FROM user_role_privs;     -- 角色

7. 約束與欄位

SELECT * FROM user_constraints WHERE table_name = 'EMP';
SELECT * FROM user_cons_columns WHERE table_name = 'EMP';
SELECT * FROM user_tab_columns WHERE table_name = 'EMP';

8. 動態性能視圖(V$)精選

-- 會話/鎖/等待
SELECT * FROM v$session WHERE status = 'ACTIVE';
SELECT * FROM v$locked_object;
SELECT * FROM v$session_wait WHERE event NOT LIKE 'SQL*Net%';

-- 空間/段
SELECT * FROM v$tablespace;
SELECT * FROM v$datafile;

-- SQL 統計
SELECT sql_text, executions, elapsed_time/1e6 sec FROM v$sql ORDER BY elapsed_time DESC FETCH FIRST 10 ROWS ONLY;

查詢數據字典視圖定義

SELECT * FROM dictionary;  -- 列出所有字典視圖名與註釋
SELECT * FROM dict_columns WHERE table_name = 'USER_TABLES';  -- 視圖欄位定義

最佳實踐

  • 開發環境優先用 USER_*,性能最好(無權限檢查開銷)。
  • 跨 Schema 查詢用 ALL_*,注意 ALL_TABLES 含 OWNER 欄位。
  • 監控腳本、備份腳本必須用 DBA_*,授予 SELECT_CATALOG_ROLE 而非 DBA 角色。
  • 動態視圖 V$ 讀取內存結構,高頻查詢可能增加 Latch 競爭,生產監控建議間隔 ≥ 30 秒。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved