DBA 核心職責是「發現問題於無形中,解決問題於萌芽時」。本文將日常維護聚焦於兩大高價值監控面向:Alert Log 異常掃描與字典管理表空間碎片監控,提供可直接納入巡檢腳本的 SQL 與處理決策樹。
| 類別 | 典型記錄 | 關注等級 |
|---|---|---|
| 啟動/關閉 | STARTUP/SHUTDOWN、非預設參數 | 資訊 |
| Redo Log 切換 | 每次切換時間、Checkpoint 未完成導致無法切換 | 警告(頻繁/卡住) |
| 結構變更 | CREATE/DROP TABLESPACE、ADD DATAFILE | 資訊 |
| 錯誤事件 | Tablespace Full、Corrupt Block、ORA-600/ORA-7445 | 嚴重 |
#!/bin/bash
# daily_alert_scan.sh
ALERT_LOG=$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace/alert_$ORACLE_SID.log
KEYWORDS="ORA-00600|ORA-07445|ORA-01578|ORA-01157|ORA-01652|ORA-01653|ORA-01654|CHECKPOINT NOT COMPLETE|CORRUPT"
grep -i -E "$KEYWORDS" $ALERT_LOG | tail -20 | mail -s "[$ORACLE_SID] Alert Log 異常掃描" dba@example.com
| 錯誤/現象 | 根因分析 | 處理動作 |
|---|---|---|
| 啟動參數錯誤 | SPFILE/PFILE 參數非法 | 檢查 Alert Log 開頭非預設參數,修正 PFILE 重啟 |
| Redo Log 切換卡住 | Checkpoint/Archive 落後 | 增加 Redo Log 組/大小、優化 Archive 目的地、調整 FAST_START_MTTR_TARGET |
| 未授權 DROP TABLESPACE | 帳號洩露/權限過大 | 審計 DBA 操作、強化密碼策略、回收非必要系統權限 |
| Corrupt Block | 硬體故障/記憶體位翻轉/軟體 Bug | 1. 確認硬體健康 2. 識別受損物件 3. 重建物件或 RMAN BLOCK RECOVER |
| Tablespace Full | 資料增長超預期/未啟用 Autoextend | ADD DATAFILE、RESIZE DATAFILE、啟用 AUTOEXTEND、清理歷史資料 |
| ORA-600/7445 | 內部錯誤/進程崩潰 | 收集 Trace、上傳 MOS 確認 Bug、套用 Patch/Workaround |
適用於 EXTENT MANAGEMENT DICTIONARY 表空間(LMT 已自動合併相鄰空閒塊,通常無碎片問題)。
COL tablespace_name FORMAT A20
COL chunks FORMAT 99999
COL max_chunk_mb FORMAT 999,999.99
SELECT
tablespace_name,
COUNT(*) AS chunks,
ROUND(MAX(bytes)/1024/1024,2) AS max_chunk_mb
FROM dba_free_space
GROUP BY tablespace_name
ORDER BY chunks DESC;
TABLESPACE_NAME CHUNKS MAX_CHUNK_MB
----------------- ------- ------------
USERS 67 71.37
TEMP 20 70.80
RBS 3 490.99
...
-- 合併相鄰空閒塊
ALTER TABLESPACE users COALESCE;
-- 再次掃描確認
SELECT tablespace_name, COUNT(*), ROUND(MAX(bytes)/1024/1024,2)
FROM dba_free_space
GROUP BY tablespace_name;
-- 1. 導出表空間內所有物件
EXPDP ... TABLESPACES=users DUMPFILE=users_exp.dmp
-- 2. 刪除表空間含資料檔
DROP TABLESPACE users INCLUDING CONTENTS AND DATAFILES;
-- 3. 重建 LMT 表空間(強烈建議遷移至 LMT)
CREATE TABLESPACE users
DATAFILE '/u01/oradata/orcl/users01.dbf' SIZE 2G
AUTOEXTEND ON NEXT 100M MAXSIZE 10G
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
SEGMENT SPACE MANAGEMENT AUTO;
-- 4. 導入物件
IMPDP ... TABLESPACES=users DUMPFILE=users_exp.dmp REMAP_TABLESPACE=users:users
| 頻率 | 檢查項目 | 工具/腳本 | 告警閾值 |
|---|---|---|---|
| 每 15 分鐘 | Alert Log 關鍵字掃描 | Shell + Cron / Enterprise Manager | ORA-600/7445/1578/1652 即時告警 |
| 每小時 | 表空間使用率 | SQL + Threshold | > 85% 預警,> 95% 緊急 |
| 每日 | 碎片掃描 | 上述 SQL | CHUNKS > 100/檔案 |
| 每日 | RMAN 備份狀態 | LIST BACKUP SUMMARY / RMAN VALIDATE | 任何 FAILED/EXPIRED 即時告警 |
| 每週 | 統計資訊新鮮度 | DBA_TAB_STATISTICS.STALE_STATS | STALE > 10% 觸發收集 |
| 每月 | 密碼/權限審計 | DBA_USERS, DBA_ROLE_PRIVS | 違規即時整改 |
維護的最高境界是「無聲無息」。將上述檢查封裝為自動化巡檢平台,異常自動工單、自動通知、自動執行標準化修復腳本(如 COALESCE、ADD DATAFILE),才能讓 DBA 從繁瑣人工釋放,專注於架構優化與疑難雜症攻關。