首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 資料庫日常維護手冊:Alert Log 監控與表空間碎片管理

     編輯:Oracle 資料庫相關知識

DBA 核心職責是「發現問題於無形中,解決問題於萌芽時」。本文將日常維護聚焦於兩大高價值監控面向:Alert Log 異常掃描與字典管理表空間碎片監控,提供可直接納入巡檢腳本的 SQL 與處理決策樹。

一、Alert Log 監控體系

記錄內容分類

類別典型記錄關注等級
啟動/關閉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硬體故障/記憶體位翻轉/軟體 Bug1. 確認硬體健康 2. 識別受損物件 3. 重建物件或 RMAN BLOCK RECOVER
Tablespace Full資料增長超預期/未啟用 AutoextendADD DATAFILE、RESIZE DATAFILE、啟用 AUTOEXTEND、清理歷史資料
ORA-600/7445內部錯誤/進程崩潰收集 Trace、上傳 MOS 確認 Bug、套用 Patch/Workaround

二、字典管理表空間碎片監控與整理

適用於 EXTENT MANAGEMENT DICTIONARY 表空間(LMT 已自動合併相鄰空閒塊,通常無碎片問題)。

碎片掃描 SQL

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
...
  • CHUNKS > 100/檔案:碎片嚴重,執行合併。
  • MAX_CHUNK_MB < 最大物件 NEXT EXTENT:將出現 ORA-1652/3/4,需擴充或重建。

碎片合併操作

-- 合併相鄰空閒塊
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 ManagerORA-600/7445/1578/1652 即時告警
每小時表空間使用率SQL + Threshold> 85% 預警,> 95% 緊急
每日碎片掃描上述 SQLCHUNKS > 100/檔案
每日RMAN 備份狀態LIST BACKUP SUMMARY / RMAN VALIDATE任何 FAILED/EXPIRED 即時告警
每週統計資訊新鮮度DBA_TAB_STATISTICS.STALE_STATSSTALE > 10% 觸發收集
每月密碼/權限審計DBA_USERS, DBA_ROLE_PRIVS違規即時整改

維護的最高境界是「無聲無息」。將上述檢查封裝為自動化巡檢平台,異常自動工單、自動通知、自動執行標準化修復腳本(如 COALESCE、ADD DATAFILE),才能讓 DBA 從繁瑣人工釋放,專注於架構優化與疑難雜症攻關。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved