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

Oracle DBA 日常維護完全手冊:八大核心檢查項目

     編輯:Oracle 資料庫相關知識

資料庫穩定運行仰賴 DBA 持續的監控與預防性維護。本文整理八大核心日常檢查項目,涵蓋警示日誌、表空間、連線狀態、控制檔備份、資料檔狀態、排程作業、壞塊處理與作業系統層面,附實用 SQL 與處理流程。

一、警示日誌監控 (alert_.log)

關注重點:啟動/關閉參數、Redo 切換延遲、結構變更(建立/刪除表空間、新增資料檔)、錯誤(ORA-600、壞塊、表空間不足)

處理原則:

  • 參數異常 → 檢查 init.ora/spfile
  • Checkpoint/Archive 導致 Redo 卡住 → 增加 Redo Group、優化 Checkpoint/Archive 效能
  • 未授權刪除物件 → 稽核帳號權限、強化密碼策略
  • 壞塊 → 依區塊所屬物件類型決定修復策略(見第七項)
  • 表空間不足 → 即時擴充資料檔
  • ORA-600 → 查閱 Metalink 對應 Bug、打補丁

二、表空間使用情況與碎片監控

查詢碎片狀況:

SELECT TABLESPACE_NAME, COUNT(*) CHUNKS, MAX(BYTES/1024/1024) MAX_CHUNK_MB
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME;

判讀:平均每資料檔碎片 > 100 視為嚴重,嘗試 ALTER TABLESPACE ... COALESCE 合併相鄰空閒區塊。無效則考慮重建表空間。

擴充空間:MAX_CHUNK < 下一區塊需求 → ORA-1652/3/4,需擴充資料檔或新增資料檔。

三、資料庫連線狀態檢查

SELECT SID, SERIAL#, USERNAME, PROGRAM, MACHINE, STATUS, LOGON_TIME
FROM V$SESSION
ORDER BY LOGON_TIME;

異常處理:長時間 INACTIVE 佔用資源 → ALTER SYSTEM KILL SESSION 'SID,SERIAL#'。注意:SID 1-7 通常為背景進程(USERNAME 為空),勿誤殺。

四、控制檔備份

結構變更後必備:

-- 二進制備份
ALTER DATABASE BACKUP CONTROLFILE TO '/backup/control.bak';

-- 追蹤檔備份 (產生重建 SQL)
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
-- 追蹤檔位於 USER_DUMP_DEST

五、資料檔狀態檢查

SELECT FILE_NAME, STATUS FROM DBA_DATA_FILES;

非 AVAILABLE 狀態需立即處理:離線/遺失 → 還原恢復;損壞 → 重建表空間。

六、排程作業 (DBMS_JOB) 狀態

SELECT JOB, LOG_USER, LAST_DATE, NEXT_DATE, BROKEN, FAILURES, WHAT
FROM DBA_JOBS
WHERE FAILURES > 0;

FAILURES > 0 表示連續失敗,需檢查 WHAT 邏輯與錯誤堆疊。

七、壞塊處理標準流程

  1. 警示日誌確認壞塊位置:ORA-01578 (file#, block#)
  2. 排除硬體/OS 故障
  3. 定位物件:
    SELECT TABLESPACE_NAME, SEGMENT_TYPE, OWNER, SEGMENT_NAME
    FROM DBA_EXTENTS
    WHERE FILE_ID = &file#
      AND &block# BETWEEN BLOCK_ID AND BLOCK_ID + BLOCKS - 1;
    
  4. 依物件類型修復:
    • 索引 → DROP INDEX ...; CREATE INDEX ...
    • 可重建資料表 → DROP TABLE ...; CREATE TABLE ... AS SELECT ...
    • 有備份 → RMAN 區塊恢復 / 表空間時間點恢復
    • 無備份且資料無法重現 → DBMS_REPAIR.SKIP_CORRUPT_BLOCKS 標記跳過 → CTAS 保存良好資料 → 重建表
  5. 重建索引、授權、同義詞

八、作業系統層面監控

  • 檔案系統空間:df -h,定期清理舊 Trace/Alert 日誌
  • 網路連線:netstat -an | grep 1521,確認監聽器連線正常
  • 資源使用:top、vmstat、sar 監控 CPU/記憶體/IO
  • 硬體健康:RAID 狀態、磁碟 SMART、ECC 記憶體錯誤計數

自動化建議

將上述查詢封裝為 Shell/Python 腳本,配合 Cron/Windows 排程器每日執行,結果以 HTML 郵件發送,異常項目標紅,實現「早發現、早處理」。

日常維護無小事,標準化檢查清單是 DBA 從「救火」轉向「防火」的關鍵。

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