⑴ oracle資料庫怎麼啟動job
先查看你job的jobid
select * from dba_jobs ;
然後根據jobid來啟動job
exec dbms_job.run(job => &JOBID) ;
⑵ oracle 中job有什麼作用
中新推出的SCHEDULER可能確實會讓很多初接觸的朋友感覺暈頭暈腦,相比之前的jobs,SCHEDULER中新增的概念太多。比如說jobs,仍
然可以理解成之前版本中的jobs,不過功能更加強大(注意10g中也仍然可以使用普通jobs,這是廢話,相信看本篇文章的朋友目前應該還是這樣在
用),比如說program,指的是運行的程序(把要做什麼單提出來了),比如說schele,我將其翻譯為調度(job我翻譯為任務),定義執行的
頻率或者說周期。
3.1 創建和管理Schele s
Schele ,中文直譯的話應該理解成調度,從名字來看,它是一個邏輯實體(邏輯,還實體,好矛盾),就是說當創建了schele之後,資料庫中就肯定存在這一對象,只不過這一對象是用來描述job的執行周期。
創建schele可以通過DBMS_SCHEDULER.CREATE_SCHEDULE過程,該過程支持的參數如下:
SQL>
desc dbms_scheler.create_schele;Parameter
Type Mode Default? ---------------
------------------------ ---- -------- SCHEDULE_NAME
VARCHAR2 IN START_DATE TIMESTAMP WITH
TIME ZONE IN Y REPEAT_INTERVAL VARCHAR2
IN END_DATE TIMESTAMP WITH TIME ZONE IN Y
COMMENTS VARCHAR2 IN Y
各參數分別代表含意如下:
SCHEDULE_NAME :指定schele名稱,注意名稱不能重復。
START_DATE :指定該調度的開始時間,可為空,當為空時表示該調度暫不起用。
REPEAT_INTERVAL :指定調度的執行頻率或周期。
END_DATE :指定調度的結束時間,可為空,為空時就表示該調度將一直進行。
COMMENTS :注釋信息。
這其中,比較有技術含量的是REPEAT_INTERVAL參數,對於這個參數大家應該不會太陌生,因為前面介紹Jobs,也曾經提到過同名的參
數,Scheles中的REPEAT_INTERVAL參數和Jobs中的REPEAT_INTERVAL參數功能完全相同,甚至參數格式也一模一
樣。
REPEAT_INTERVAL 參數的語法結構要復雜的多。其中最重要的是FREQ和INTERVAL兩個關鍵字。
FREQ 關鍵字用來指定間隔的時間周期,可選參數有:YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, and SECONDLY,分別表示年、月、周、日、時、分、秒等單位。
INTERVAL 關鍵字用來指定間隔的頻繁,可指定的值的范圍從1-99。
比如說,當指定REPEAT_INTERVAL=>'FREQ=DAILY;INTERVAL=1';就表示每天執行一次,如果將INTERVAL改為7就表示每7天執行一次,效果等同於FREQ=WEEKLY;INTERVAL=1。
下面,創建一個schele,指定調度為每周一次的頻率,執行腳本如下:
SQL>
begin 2 DBMS_SCHEDULER.CREATE_SCHEDULE ( 3 schele_name
=> 'my_first_schele', 4 start_date => SYSDATE, 5
repeat_interval => 'FREQ=WEEKLY; INTERVAL=1', 6
comments => 'Every 1 weeks'); 7 END; 8 /PL/SQL procere
successfully completed.
查詢當前已經創建的scheles,可以通過*_SCHEDULER_SCHEDULES視圖(含DBA_,ALL_,USER_),例如,查看當前用戶擁有的scheles,執行語句如下:
SQL>
select schele_name,repeat_interval from
user_scheler_scheles;SCHEDULE_NAME
REPEAT_INTERVAL------------------------------
------------------------------MY_FIRST_SCHEDULE
FREQ=WEEKLY; INTERVAL=1
如果要修改schele屬性的話,也是使用
DBMS_SCHEDULER.SET_ATTRIBUTE過程,該過程的調用方式前面已經多次演示過,這里就不再重復舉例了,僅說明一點,對於
schele來說,能夠修改的屬性包括:REPEAT_INTERVAL、COMMENTS、END_DATE、START_DATE以及
EVENT_SPEC。
至於刪除schele,再簡單不過,執行DBMS_SCHEDULER.DROP_SCHEDULE過程即可,例如:
SQL> EXEC DBMS_SCHEDULER.DROP_SCHEDULE('MY_FIRST_SCHEDULE');PL/SQL procere successfully completed.