Oracle 架構建立在資料庫 (靜態檔案集合) 與實例 (動態記憶體與進程) 兩大支柱之上。資料庫可被多實例存取 (RAC)。理解兩者邊界與互動,是掌握 Oracle 內部運作的鑰匙。
-- 修改表空間屬性
ALTER TABLESPACE ts_name READ ONLY | ONLINE | OFFLINE;
-- 查詢表空間狀態
SELECT tablespace_name, status FROM dba_tablespaces;
-- 查詢表空間與資料檔對應
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 USER username DEFAULT TABLESPACE ts_name;
-- 移動表至新表空間
ALTER TABLE table_name MOVE TABLESPACE ts_name;
SYSTEM、UNDO、TEMP 表空間不可設為 OFFLINE。
PFILE (init.ora) 或 SPFILE (spfile.ora),定義實例配置參數。orapw,授權 SYSDBA/SYSOPER 遠端啟動關閉權限。輔助檔案:archived log、alert log、trace files 非啟動必備。
-- 資料檔
SELECT * FROM v$datafile;
-- 控制檔
SELECT * FROM v$controlfile;
-- 重做日誌檔
SELECT * FROM v$logfile;
資料庫 → 表空間 → 區段 → 區塊 → 區塊
- 表空間:邏輯容器
- 區段:特定物件 (表、索引、UNDO、臨時) 佔用空間
- 區塊:連續區塊集合,一次性預留空間 (預設 1MB/8MB)
- 區塊:最小儲存單位 (建庫時指定,通常 8KB),所有 I/O 以區塊為單位
資料庫是「靜態容器」,實例是「動態引擎」。DBA 日常工作本質上是在管理實例如何高效、安全地操作資料庫檔案。熟練掌握上述邏輯/物理結構與管理指令,是進階調優與故障處理的基石。