oracle job管理(zt)
SVRMGR> select * from dba_jobs;
初始化相關引數job_queue_processes
alter system set job_queue_processes=39 scope=spfile;//最大值不能超過1000 ;job_queue_interval = 10 //排程作業重新整理頻率秒為單位
DBA_JOBS describes all jobs in the database.
USER_JOBS describes all jobs owned by the current user
1 select job,what,to_char(last_date,'yyyy-mm-dd HH24:mi:ss'),to_char(next_date,'yyyy-mm-dd HH24:m),interval from dba_jobs where job in (325,295)
2 select job,what,last_date,next_date,interval from dba_jobs where job in (1,3);
查詢job的情況。
show paramter background_dump_dest.
看alter.log 和trace
SVRMGR> select * from dba_jobs;
初始化相關引數job_queue_processes
alter system set job_queue_processes=39 scope=spfile;//最大值不能超過1000
job_queue_interval = 10 //排程作業重新整理頻率秒為單位
DBA_JOBS describes all jobs in the database.
USER_JOBS describes all jobs owned by the current user
1 select job,what,to_char(last_date,'yyyy-mm-dd HH24:mi:ss'),to_char(next_date,'yyyy-mm-dd HH24:m),interval from dba_jobs where job in (325,295)
2 select job,what,last_date,next_date,interval from dba_jobs where job in (1,3);
查詢job的情況。
show paramter background_dump_dest.
看alter.log 和trace
請問我如何停止一個JOB
SQL> exec dbms_job.broken(1,true)
PL/SQL 過程已成功完成。
SQL>commit //必須提交否則無效
啟動作業
SQL> exec dbms_job.broken(1,false)
PL/SQL 過程已成功完成。
停其他使用者的job
SQL>exec sys.dbms_ijob.broken(98,true);
SQL>commit;
============================
exec dbms_job.broken(:job) 停止
exec dbms_job.broken(186,true) //標記位broken
exec dbms_job.broken(186,false)//標記為非broken
exec dbms_job.broken(186,false,next_day(sysdate,'monday')) //標記為非broken,指定執行時間
exec dbms_job.remove(:job);刪除
exec dbms_job.remove(186);
commit;
把一個broken job重新執行
三、檢視相關job資訊
1、相關檢視
dba_jobs
all_jobs
user_jobs
dba_jobs_running 包含正在執行job相關資訊
建立JOB
variable jobno number;
begin
dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);
commit;
end;
print jobno
例如,我們已經建立了一個儲存過程,其名稱為my_job,在sql/plus中以scott使用者身份登入,執行如下命令:
sql> variable n number;
sql> begin
dbms_job.submit(:n‘my_job;’,sysdate,
‘sysdate+1/360’);
commit;
end;
Sql> print :n;
系統提示執行成功。
Sql> print :n;
系統列印此任務的編號,例如結果為300。
簡單例子
一個簡單例子:
建立測試表
SQL> create table TEST(a date);
表已建立。
建立一個自定義過程
SQL> create or replace procedure MYPROC as
2 begin
3 insert into TEST values(sysdate);
4 end;
5 /
過程已建立。
建立JOB
SQL> variable job1 number;
SQL>
SQL> begin
2 dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440'); --每天1440分鐘,即一分鐘執行test過程一次
3 end;
4 /
PL/SQL 過程已成功完成。
執行JOB
SQL> begin
2 dbms_job.run(:job1);
3 end;
4 /
PL/SQL 過程已成功完成。
SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 時間 from TEST;
時間
-------------------
2001/01/07 23:51:21
2001/01/07 23:52:22
2001/01/07 23:53:24
刪除JOB
SQL> begin
2 dbms_job.remove(:job1);
3 end;
4 /
PL/SQL 過程已成功完成。
=======================================
a、利用dbms_job.run()立即執行該job
sql>begin
sql>dbms_job.run(:jobno) 該jobno為submit過程提交時返回的job number
sql>end;
sql>/
b、利用dbms_job.broken()重新將broken標記為false
sql>begin
sql>dbms_job.broken (:job,false,next_date)
sql>end;
sql>/
========================================
SQL> create table a(a date);
Table created
建立一個過程
SQL> create or replace procedure test as
2 begin
3 insert into a values(sysdate);
4 end;
5 /
Procedure created
提交作業
SQL> declare
2 job1 number; //定義一個數字型變數
3 begin
4 dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440'); //按分鐘算一天1440分鐘
5 end;
6 /
PL/SQL procedure successfully completed
job1
---------
4
SQL> commit;
Commit complete
執行作業
SQL> begin
2 dbms_job.run(4);
3 end;
4 /
PL/SQL procedure successfully completed
刪除作業
SQL> begin
2 dbms_job.remove(4);
3 end;
4 /
PL/SQL procedure successfully completed
SQL> commit;
Commit complete
job change//修改作業
execute dbms_job.change(186,null,null,'sysdate+3');
execute dbms_job.change(186,'scott.test(update)');
DBA_JOBS
===========================================
欄位(列) 型別 描述
JOB NUMBER 任務的唯一標示號
LOG_USER VARCHAR2(30) 提交任務的使用者
PRIV_USER VARCHAR2(30) 賦予任務許可權的使用者
SCHEMA_USER VARCHAR2(30) 對任務作語法分析的使用者模式
LAST_DATE DATE 最後一次成功執行任務的時間
LAST_SEC VARCHAR2(8) 如HH24:MM:SS格式的last_date日期的小時,分鐘和秒
THIS_DATE DATE 正在執行任務的開始時間,如果沒有執行任務則為null
THIS_SEC VARCHAR2(8) 如HH24:MM:SS格式的this_date日期的小時,分鐘和秒
NEXT_DATE DATE 下一次定時執行任務的時間
NEXT_SEC VARCHAR2(8) 如HH24:MM:SS格式的next_date日期的小時,分鐘和秒
TOTAL_TIME NUMBER 該任務執行所需要的總時間,單位為秒
BROKEN VARCHAR2(1) 標誌引數,Y標示任務中斷,以後不會執行
INTERVAL VARCHAR2(200) 用於計算下一執行時間的表示式
FAILURES NUMBER 任務執行連續沒有成功的次數
WHAT VARCHAR2(2000) 執行任務的PL/SQL塊
CURRENT_SESSION_LABEL RAW MLSLABEL 該任務的信任Oracle會話符
CLEARANCE_HI RAW MLSLABEL 該任務可信任的Oracle最大間隙
CLEARANCE_LO RAW MLSLABEL 該任務可信任的Oracle最小間隙
NLS_ENV VARCHAR2(2000) 任務執行的NLS會話設定
MISC_ENV RAW(32) 任務執行的其他一些會話引數
描述 INTERVAL引數值
每天午夜12點 'TRUNC(SYSDATE + 1)'
每天早上8點30分 'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'
每星期二中午12點 'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'
每個月第一天的午夜12點 'TRUNC(LAST_DAY(SYSDATE ) + 1)'
每個季度最後一天的晚上11點 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'
每星期六和日早上6點10分 'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/756652/viewspace-242509/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle enqueue(zt)OracleENQ
- ORACLE LARGE MEMORY(zt)Oracle
- oracle event 2 (zt)Oracle
- 【Oracle】ORA-23421: job number XXXX is not a job in the job queueOracle
- oracle time_zone(zt)Oracle
- AUTO START ORACLE ON LINUX(zt)OracleLinux
- ORACLE MTS的介紹(zt)Oracle
- Oracle's Parallel Execution Features(zt)OracleParallel
- How Oracle Store Number internal(zt)Oracle
- Oracle SQL optimization-2(zt)OracleSQL
- Oracle 任務管理之 ----program(程式)---scheduler(計劃)--Job(任務)Oracle
- Oracle中job的使用詳解Oracle
- 修改Oracle資料庫字符集(zt)Oracle資料庫
- oracle9i下streams複製(zt)Oracle
- ORACLE dbms_scheduler.create_job建立job作業遭遇PLS-00306Oracle
- Oracle資料庫定時器JobOracle資料庫定時器
- Oracle多粒度封鎖機制研究二(zt)Oracle
- ORACLE9I升級到10G(zt)Oracle
- 【Data Pump】expdp/impdp Job基本管理
- Oracle 叢集軟體資源的手工註冊(zt)Oracle
- Oracle 定時任務job實際應用Oracle
- Oracle診斷案例-Job任務停止執行Oracle
- 使用oracle job定時傳送email郵件OracleAI
- Python程式碼解析: job = next(job for job in jobs if job.job_id == job_id)Python
- [zt]IT專案開發的75條管理守則
- INSTEAD OF(zt)
- lsof(zt)
- XXL-JOB定時任務框架(Oracle定製版)框架Oracle
- Oracle叢集檔案系統(OCFS2)使用者指南(zt)Oracle
- Oracle 11g 測試停庫對job的影響Oracle
- Disable the Evolve Job SYS_AUTO_SPM_EVOLVE_TASK in Oracle 12cOracle
- SQLSERVER SELECT(zt)SQLServer
- V$LOCK(zt)
- EXISTS、IN、NOT EXISTS、NOT IN(zt)
- Event Reference(zt)
- Fallacies Of The CBO(zt)
- 【SQL】Oracle資料庫通過job定期重建同步表資料SQLOracle資料庫
- Oracle無法自動排程DBMS_JOB&DBMS_SCHEDULER案例分析Oracle