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

Oracle Job 監控查詢全集:DBA_JOBS、RUNNING、LOCK 三大視圖實戰解析

     編輯:Oracle 資料庫基礎

核心監控視圖

視圖用途權限需求
DBA_JOBS所有 Job 定義、狀態、下次執行時間、失敗次數DBA / SELECT ANY DICTIONARY
ALL_JOBS當前使用者可存取的 Job一般使用者
USER_JOBS當前使用者擁有的 Job一般使用者
DBA_JOBS_RUNNING正在執行中的 Job 即時資訊 (SID、用戶、開始時間)DBA

實戰查詢範例

1. 檢視所有 Job 狀態總覽


SELECT job, next_date, next_sec, failures, broken
FROM dba_jobs
ORDER BY next_date;

輸出範例

JOBNEXT_DATENEXT_SECFAILURESB
912501-JUN-0100:00:004N
1414424-OCT-0116:35:350N
912701-JUN-0100:00:0016Y

關鍵欄位:FAILURES 達 16 → 自動標記 BROKEN=Y;BROKEN=Y 不會再排程執行。

2. 監控正在執行的 Job


SELECT r.sid, r.job, r.log_user, r.this_date, r.this_sec
FROM dba_jobs_running r, dba_jobs j
WHERE r.job = j.job;

輸出範例

SIDJOBLOG_USERTHIS_DATETHIS_SEC
1214144HR24-OCT-9417:21:24
258536QS24-OCT-9416:45:12

可關聯 V$SESSION、V$SQL 進一步分析執行中 SQL 與等待事件。

3. 檢查 Job Queue Lock 競爭


SELECT sid, type, id1, id2
FROM v$lock
WHERE type = 'JQ';

輸出範例

SIDTYID1ID2
12JQ014144
  • ID2 = Job Number
  • 若大量 Job 同時啟動,可能出現 JQ Lock 等待,建議錯開排程時間或調大 JOB_QUEUE_PROCESSES。

進階監控:結合 V$SESSION 完整畫像


SELECT j.job, j.broken, j.failures, j.last_date, j.last_sec, j.next_date, j.next_sec,
       j.interval, j.what,
       s.sid, s.serial#, s.username, s.status, s.sql_id, s.event, s.seconds_in_wait
FROM dba_jobs j
LEFT JOIN dba_jobs_running r ON j.job = r.job
LEFT JOIN v$session s ON r.sid = s.sid
WHERE j.broken = 'N'
ORDER BY j.next_date;

一次掌握:Job 定義、排程狀態、執行中 Session 即時 SQL/等待事件。

自動化告警腳本邏輯 (Shell/Python 伪碼)


# 每 5 分鐘執行
jobs = query("SELECT job, failures, broken FROM dba_jobs WHERE broken='N'")
for job in jobs:
    if job.failures >= 10:
        alert(f"Job {job.job} 連續失敗 {job.failures} 次,接近 Broken 閾值")
    if job.broken == 'Y':
        alert(f"Job {job.job} 已標記 BROKEN,需人工介入")

running = query("SELECT job, sid, this_date FROM dba_jobs_running")
for r in running:
    if (SYSDATE - r.this_date) * 86400 > 3600:  # 超過 1 小時
        alert(f"Job {r.job} (SID={r.sid}) 執行超過 1 小時,可能卡死")

遷移至 DBMS_SCHEDULER 後的對應視圖

DBMS_JOB 視圖DBMS_SCHEDULER 視圖
DBA_JOBSDBA_SCHEDULER_JOBS
DBA_JOBS_RUNNINGDBA_SCHEDULER_RUNNING_JOBS
—DBA_SCHEDULER_JOB_RUN_DETAILS (歷史執行明細)
—DBA_SCHEDULER_JOB_LOG (啟動/完成/失敗日誌)

強烈建議 11g+ 環境全面遷移,監控能力大幅增強。

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