一、Database(資料庫)— 靜態儲存結構
1. Tablespace(表空間)
- 邏輯劃分,每庫至少一個 SYSTEM 表空間。
- 一表空間屬於一資料庫,由一或多個 Datafile 組成。
- 特性:控制磁碟分配、限制用戶配額、Online/Offline/ReadOnly、支援表空間級備份恢復、大小 = 組成 Datafile 大小總和。
常用查詢
-- 表空間狀態
SELECT tablespace_name, status FROM dba_tablespaces;
-- 表空間與 Datafile 對應
SELECT tablespace_name, bytes, file_name FROM dba_data_files;
-- 用戶預設表空間
SELECT username, default_tablespace FROM dba_users;
-- 表所在表空間
SELECT table_name, tablespace_name FROM user_tables;
-- 移動表至其他表空間
ALTER TABLE t MOVE TABLESPACE new_ts;
2. Datafile(資料檔)
- 物理檔案,屬於單一表空間,創建後可調整大小(
ALTER DATABASE DATAFILE ... RESIZE)。
- 必須三類檔案:Datafile、Controlfile、Redo Logfile。其他(Parameter file、Password file、Archived log)為輔助。
查看物理檔案組成
SELECT * FROM v$datafile;
SELECT * FROM v$controlfile;
SELECT * FROM v$logfile;
二、Instance(實例)— 動態進程與記憶體
參數儲存於 init.ora (PFILE) 或 SPFILE (spfile.ora)。啟動時讀取,修改參數需重啟生效(動態參數除外)。
1. Memory Structure
| 區域 | 特性 | 主要組件 |
| SGA (System Global Area) | 所有進程共享 | Shared Pool、Database Buffer Cache、Redo Log Buffer、Large Pool、Java Pool、Streams Pool、In-Memory Area (12c+) |
| PGA (Program Global Area) | 單一進程專用 | Sort Area、Hash Area、Session Info、Cursor State、SQL Work Area |
2. Background Processes
| 進程 | 職責 |
| PMON | 進程失敗清理(釋放鎖、回滾交易、釋放 SGA 資源) |
| SMON | 實例恢復、臨時段清理、合併自由空間 |
| DBWn | 將髒緩衝寫入 Datafile(LRU、Checkpoint、快速啟動) |
| LGWR | 將 Redo Log Buffer 寫入 Online Redo Logfile(Commit 觸發、1/3 滿、3 秒超時) |
| CKPT | Checkpoint 時更新 Controlfile/Datafile 標頭 SCN,縮短恢復時間 |
| ARCn | 歸檔模式下將填滿的 Redo Log 複製至歸檔目的地 |
| MMAN | 自動記憶體管理(AMM/ASMM)調整 SGA/PGA 組件大小 |
| RECO | 分散式交易恢復(兩階段提交失敗時) |