對於Oracle系統管理員而言,數據字典無異於一座寶藏。它是Oracle數據庫的核心組件,詳細記錄了數據庫結構、對象空間分配、用戶權限等關鍵元數據。本文將從數據庫系統的基本概念切入,系統性介紹如何利用數據字典全方位掌握Oracle數據庫狀態。文中示例均基於UNIX作業系統與Oracle 7環境,原理在現代版本中依然適用。
Oracle架構包含兩大核心層面:數據庫與實例。用戶必須透過實例來訪問數據庫。
數據庫是數據集合的物理載體,於安裝最終階段創建,由「數據庫名」唯一標識(長度1-8字符)。名稱於創建時確定,並持久化存儲於控制文件中。
實例是訪問與控制數據庫的軟件機制,由系統全局區(SGA)與Oracle後台進程構成。同樣需要唯一標識(SID),在軟件安裝時確定。
最佳實踐: 建議數據庫名與實例名採用不同標識符,雖然同名合法且偶爾方便,但區分命名能避免概念混淆,利於多實例環境管理。
數據庫啟動與運行均依賴初始化參數文件(文本格式,可直接編輯)。每個數據庫至少擁有一個,慣例命名為INIT(如實例TEST對應INITTEST.ORA)。關鍵參數包括:
DB_NAME:數據庫名稱CONTROL_FILES:控制文件路徑ROLLBACK_SEGMENTS:分配給實例的回滾段PROCESSES:最大進程數限制物理結構面向作業系統,描述數據存儲形態,包含三類文件:
邏輯屬於表空間,物理存放於數據文件。特點:單文件僅屬一數據庫、創建後大小固定、一表空間可含多文件。查詢全部數據文件:
-- 方法一
SELECT * FROM DBA_DATA_FILES; -- FILE_NAME列為文件名
-- 方法二
SELECT * FROM V$DATAFILE; -- NAME列為文件名
-- 方法三
SELECT * FROM V$DBFILE; -- NAME列為文件名
記錄所有數據變更,支撐故障恢復。每個數據庫至少擁有兩組日誌文件(多路復用)。
雖為小型二進制文件,卻是數據庫大腦。損壞將導致數據庫不可用。生產環境至少配置兩個控制文件置於不同磁盤,路徑記錄於CONTROL_FILES參數中。
邏輯結構面向用戶,層級遞進:數據庫 → 表空間 → 段 → 區 → 數據塊,並包含模式對象。
記錄事務變更前映像,保障讀一致性與事務回滾。關鍵點:
ROLLBACK_SEGMENTS指定並重啟實例,或用ALTER ROLLBACK SEGMENT ... ONLINE上線。Oracle採用多用戶架構,內建完善安全機制。用戶信息存儲於數據字典用戶表,登錄時自動校驗。預設三大角色:
安裝自動創建SYS與SYSTEM,均授予DBA角色。強烈建議安裝後立即修改其口令,防止未授權訪問。
CREATE USER RSXT IDENTIFIED BY RSPASS
DEFAULT TABLESPACE USER
TEMPORARY TABLESPACE TEMP
QUOTA 3M ON USER;
GRANT CONNECT, RESOURCE TO RSXT;
注意: 僅創建用戶無任何權限,甚至無法連接,必須顯式授予角色。
絕大多數用戶為非DBA,仍可通過USER_*視圖獲取豐富自服務信息:
| 視圖 | 用途 |
|---|---|
USER_USERS | 默認/臨時表空間、創建時間 |
USER_TABLES | 擁有的表詳情;SELECT TABLE_NAME FROM USER_TABLES 僅列表名 |
USER_VIEWS | 擁有的視圖及定義文本 |
USER_TABLESPACES | 可訪問的表空間信息 |
USER_FREE_SPACE | 表空間剩餘空間統計 |
USER_TS_QUOTAS | 表空間配額限制 |
USER_ROLE_PRIVS | 被授予的角色 |
USER_SYS_PRIVS | 系統權限及是否可轉授 |
USER_TAB_PRIVS_RECD | 他人授予本用戶的對象權限 |
USER_TAB_PRIVS_MADE | 本用戶授予他人的對象權限 |
DBA用戶除上述視圖外,核心查詢DBA_USERS可獲取所有用戶完整信息,是日常審計與管理的利器。
數據字典是DBA的「聽診器」,熟練掌握DBA_*、ALL_*、USER_*三級視圖體系,配合動態性能視圖V$*,即可實現從物理存儲到邏輯權限的全棧可觀測性。建議管理員將常用查詢腳本化,納入日常巡檢體系。