| 視圖 | 用途 | 權限需求 |
|---|---|---|
DBA_JOBS | 所有 Job 定義、狀態、下次執行時間、失敗次數 | DBA / SELECT ANY DICTIONARY |
ALL_JOBS | 當前使用者可存取的 Job | 一般使用者 |
USER_JOBS | 當前使用者擁有的 Job | 一般使用者 |
DBA_JOBS_RUNNING | 正在執行中的 Job 即時資訊 (SID、用戶、開始時間) | DBA |
SELECT job, next_date, next_sec, failures, broken
FROM dba_jobs
ORDER BY next_date;
輸出範例
| JOB | NEXT_DATE | NEXT_SEC | FAILURES | B |
|---|---|---|---|---|
| 9125 | 01-JUN-01 | 00:00:00 | 4 | N |
| 14144 | 24-OCT-01 | 16:35:35 | 0 | N |
| 9127 | 01-JUN-01 | 00:00:00 | 16 | Y |
關鍵欄位:FAILURES 達 16 → 自動標記 BROKEN=Y;BROKEN=Y 不會再排程執行。
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;
輸出範例
| SID | JOB | LOG_USER | THIS_DATE | THIS_SEC |
|---|---|---|---|---|
| 12 | 14144 | HR | 24-OCT-94 | 17:21:24 |
| 25 | 8536 | QS | 24-OCT-94 | 16:45:12 |
可關聯 V$SESSION、V$SQL 進一步分析執行中 SQL 與等待事件。
SELECT sid, type, id1, id2
FROM v$lock
WHERE type = 'JQ';
輸出範例
| SID | TY | ID1 | ID2 |
|---|---|---|---|
| 12 | JQ | 0 | 14144 |
ID2 = Job NumberJOB_QUEUE_PROCESSES。
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/等待事件。
# 每 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_JOB 視圖 | DBMS_SCHEDULER 視圖 |
|---|---|
| DBA_JOBS | DBA_SCHEDULER_JOBS |
| DBA_JOBS_RUNNING | DBA_SCHEDULER_RUNNING_JOBS |
| — | DBA_SCHEDULER_JOB_RUN_DETAILS (歷史執行明細) |
| — | DBA_SCHEDULER_JOB_LOG (啟動/完成/失敗日誌) |
強烈建議 11g+ 環境全面遷移,監控能力大幅增強。