首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 可用性與表空間容量自動化監控腳本實作

     編輯:Oracle 資料庫基礎

監控設計原則

單純 Ping 或進程檢查不足以保證 Oracle 真正可用。必須透過 SQL*Net 實際登入驗證監聽器與實例狀態,並同步監控表空間擴展上限與下一區段分配空間是否足夠。

腳本架構

  1. query_Oracle_instances.sh:主排程腳本,讀取實例清單循環呼叫監控腳本。
  2. Get_Oracle_Instance_List:實例清單檔,格式為 實例名 TNS名稱 SYS密碼,每行一個實例。
  3. monitororcl:核心監控邏輯(Korn Shell),對每個實例執行兩項關鍵 SQL 檢查。

核心檢查邏輯

1. 區段擴展上限檢查

SELECT DISTINCT 'YES' FROM dba_segments
WHERE extents >= (max_extents - 5)
AND segment_name NOT LIKE '1.%';

若回傳 YES,表示有區段接近最大擴展數,發送郵件/簡訊告警。

2. 下一區段分配空間檢查

SELECT DISTINCT 'YES' FROM dba_segments ds
WHERE next_extent > (
    SELECT MAX(bytes) FROM dba_free_space
    WHERE tablespace_name = ds.tablespace_name
);

若回傳 YES,表示表空間最大連續可用空間不足以滿足下一區段需求,觸發告警。

告警與容錯機制

  • 捕捉 SQL*Plus 回傳的 ORA- 錯誤,記錄日誌並通知支援人員。
  • 使用 awk 解析查詢結果,判斷是否觸發閾值。
  • 支援多實例輪詢,shift 3 處理下一組參數。
  • 正常結束輸出時間戳記,便於審計追蹤。

部署建議

  • 放入 crontab 定時執行(如每 15 分鐘)。
  • 根據環境調整臨界值(max_extents - 5 可改為百分比)。
  • 擴充性佳:可輕易加入新檢查項目(如 Fast Recovery Area 使用率、ASM 磁碟組平衡度等)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved