oracle job,oracle
開啟指定的job:
BEGIN
dbms_auto_task_admin.enable(
client_name => 'sql tuning advisor',
peration => NULL,
window_name => 'MONDAY_WINDOW');
END;
/
oracle中怎建立一個job
將下面的預存程序名稱換成實際的預存程序名稱,就可以實現您要的功能的,
現為你寫的,直接在pl/sql dev裡面執行就行了,有啥問題再聯絡我。
上面一段是刪除job,後面的是建立job,我寫了判斷語句,可以隨意執行
參考oracle的 dbms_job包。
---------------------華麗麗的分割線----------------------------
DECLARE
i_count number;
job_num number;
BEGIN
select count(job) into i_count from user_jobs where upper(what)='預存程序名稱;';
if i_count>0 then
select job into job_num from user_jobs where upper(what)='預存程序名稱;';
dbms_job.remove(job_num);
end if;
END;
/
commit;
DECLARE X NUMBER;
BEGIN
DBMS_JOB.SUBMIT
( job => X
,what => '預存程序名稱;'
,next_date => to_date(to_char(sysdate+1,'yyyy-mm-dd')||' 01:00:00','yyyy-mm-dd hh24:mi:ss')
,interval => 'SYSDATE+1'
,no_parse => TRUE
);
END;
/
commit;
oracle job定時任務,正解,網上搜的不用貼出來了
資料庫作業
作業的建立
文法:
DBMS_JOB.SUBMIT(
job OUT BINARY_INTEGER,
what IN VARCHAR2, NEXT_DATE IN DATE DEFAULTSYSDATE,
interval IN VARCHAR2 DEFAULT 'NULL',
no_parse IN BOOLEAN DEFAULT FALSE,
instance IN BINARY_INTEGER DEFAULT ANY_INSTANCE,
force IN BOOLEAN DEFAULT FALSE);
what 為需要定時調用的 PL/SQL代碼
interval 為下次運行作業的時間
SQL> create table jjk(a date);
表已建立。
SQL> create or replace procedure test1 as
2 begin
3 insert into jjk values(sysdate);
4 end test1;
5 /
過程已建立。
SQL> variable jobno number;
SQL> begin
2 dbms_job.submit(:jobno, 'test1;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')');
3 commit;
4 end;
5 /
PL/SQL 過程已成功完成。
作業的查詢
SQL> SELECT job, what FROM user_jobs;
JOB
----------
WHAT
-------------------------------------
21
test1;
作業的修改
修改 作業執行的預存程序、下次執行時間、周期。
dbms_job.CHANGE( job, what, next_date, interval);
僅僅修改 作業執行的預存程序
dbms_job.WHAT( job, what);
僅僅修改 作業下次執行時間
dbms_job.NEXT_DATE( job, next_date);
僅僅修改 作業執行的周期。
dbms_job.INTERVAL( job, interval);
作業的刪除
SQL> begin
2 dbms_job.remove(21);
3 commit;
4 end;
5 /
PL/SQL 過程已成功完成。...餘下全文>>