Oracle JOB 使用方法
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/7318139/viewspace-917077/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle job使用方法--實現定時任務Oracle
- oracle定時任務dbms_job與dbms_scheduler使用方法Oracle
- oracle jobOracle
- oracle建立job並執行jobOracle
- oracle job用法Oracle
- oracle job管理Oracle
- ORACLE查詢JOB資訊及JOB建立Oracle
- 【JOB】Oracle JOB全面學習(DBMS_JOB和DBMS_SCHEDULER)Oracle
- oracle job管理(zt)Oracle
- oracle 定義jobOracle
- Oracle JOB的使用Oracle
- Oracle job備忘Oracle
- oracle job的用法Oracle
- oracle job 介紹Oracle
- oracle job 用法2Oracle
- Oracle中的jobOracle
- Oracle job 管理(轉)Oracle
- Oracle中如何停用JOB及如何使用JOBOracle
- oracle job_相關Oracle
- Oracle JOB 用法小結Oracle
- Oracle JOB 建立例項Oracle
- oracle中Job的操作Oracle
- Oracle Job 小結(ZT)Oracle
- 停掉oracle自帶jobOracle
- ORCLE 如何停止一個JOB【HOW TO STOP A JOB IN THE ORACLE?】薦Oracle
- 【Oracle】ORA-23421: job number XXXX is not a job in the job queueOracle
- Oracle資料庫——Scheduler JobOracle資料庫
- oracle DBMS_SCHEDULER_job 管理Oracle
- Oracle Job 遷移小記Oracle
- Oracle手工修改JOB屬性Oracle
- 【轉】Oracle JOB 用法小結Oracle
- how to kill the runing job in ORACLEOracle
- oracle 11g 建立 jobOracle
- Oracle Scheduler(5)job呼叫programOracle
- Oracle中job的使用詳解Oracle
- oracle job的建立和刪除Oracle
- oracle收集統計資訊job停止Oracle
- oracle常用包之dbms_jobOracle