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

Oracle 常用資料字典查詢:表空間、物件、使用者、權限與 Session

     編輯:Oracle 資料庫基礎

前言

日常 DBA 與開發除錯頻繁需要查詢:使用者擁有哪些表、函數、當前連線 Session、表空間使用率等。本文彙整高頻資料字典查詢,可直接建立為工具腳本。

1. 物件與程式碼查詢

需求SQL
當前使用者所有表/視圖/同義詞 (含註解)SELECT * FROM user_tab_comments;
所有使用者表/視圖 (需權限)SELECT * FROM all_tab_comments;
當前使用者表欄位定義 (含註解)SELECT * FROM user_col_comments;
所有使用者表欄位定義SELECT * FROM all_col_comments;
詳細欄位屬性 (資料型別、長度、精度、可空、預設值)SELECT * FROM user_tab_columns; / all_tab_columns
函數/程序/套件/觸發器原始碼SELECT * FROM user_source ORDER BY name, type, line;

2. 使用者與權限查詢

需求SQL
所有資料庫使用者SELECT * FROM all_users; / dba_users (DBA)
當前 Session 連線資訊SELECT sid, serial#, username, program, machine, logon_time, status FROM v$session WHERE username IS NOT NULL;
當前 Session 擁有的系統權限SELECT * FROM session_privs;
使用者角色授予 (DBA)SELECT * FROM dba_role_privs;
系統權限授予 (DBA)SELECT * FROM dba_sys_privs;
物件權限授予 (DBA)SELECT * FROM dba_tab_privs;
當前使用者角色SELECT * FROM user_role_privs;

3. 表空間使用率監控 (核心 DBA 指標)


SELECT 
  a.file_id AS file_no,
  a.tablespace_name,
  ROUND(a.bytes/1024/1024, 2) AS total_mb,
  ROUND((a.bytes - SUM(NVL(b.bytes,0)))/1024/1024, 2) AS used_mb,
  ROUND(SUM(NVL(b.bytes,0))/1024/1024, 2) AS free_mb,
  ROUND(SUM(NVL(b.bytes,0))/a.bytes * 100, 2) AS pct_free
FROM dba_data_files a
LEFT JOIN dba_free_space b ON a.file_id = b.file_id
GROUP BY a.tablespace_name, a.file_id, a.bytes
ORDER BY a.tablespace_name, a.file_id;
  • 若 PCT_FREE < 10% 需擴充資料檔或啟用 Autoextend。
  • 搭配 DBA_TEMP_FILES / V$TEMP_SPACE_HEADER 監控暫存表空間。

4. 進階:表空間自動擴充檢查


SELECT tablespace_name, file_name, autoextensible, maxbytes/1024/1024 AS max_mb
FROM dba_data_files
WHERE autoextensible = 'YES';

命名慣例提醒

  • USER_*:當前使用者擁有的物件 (無需權限)。
  • ALL_*:當前使用者可存取的物件 (含其他使用者授權)。
  • DBA_*:全庫所有物件 (需 DBA 權限/SELECT_CATALOG_ROLE)。
  • V$*:動態效能視圖 (記憶體結構、Session、鎖、SQL 等)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved