Oracle 創建作業
Oracle 的作業是一種可重復執行的操作,通常用于在固定時間或事件觸發時自動執行。作業可以執行一個腳本、一個存儲過程、一個外部程序或一個 PL/SQL 包等。以下將介紹如何使用 Oracle 創建作業。
1. 創建作業
使用 Oracle 創建作業需要以下步驟:
1)創建一個作業調度器
2)在作業調度器上創建一個作業
3)為作業添加一個或多個程序步驟
示例代碼:
-- 創建調度器 BEGIN DBMS_SCHEDULER.CREATE_SCHEDULER( scheduler_name =>'my_scheduler', max_job_slave_processes =>4, number_of_processes =>2); END; / -- 創建作業 BEGIN DBMS_SCHEDULER.CREATE_JOB( job_name =>'my_job', job_type =>'PLSQL_BLOCK', job_action =>'begin dbms_output.put_line(''hello, world!''); end;', start_date =>SYSTIMESTAMP, repeat_interval =>'freq=minutely;interval=5', end_date =>NULL, enabled =>TRUE, comments =>'my demo job'); END; / -- 添加程序步驟 BEGIN DBMS_SCHEDULER.DEFINE_PROGRAM_ARGUMENT( program_name =>'my_program', argument_position =>1, argument_type =>'VARCHAR2', default_value =>'test'); DBMS_SCHEDULER.DEFINE_PROGRAM( program_name =>'my_program', program_type =>'PLSQL_BLOCK', program_action =>'begin dbms_output.put_line(''argument is: ' || :1); end;'); DBMS_SCHEDULER.DEFINE_CHAIN_STEP( chain_name =>'my_chain', step_name =>'my_step', program_name =>'my_program', comments =>'my demo step'); END; /2. 設置作業參數 使用作業參數可以將某些值傳遞給作業步驟,以便在作業執行時使用。以下是設置作業參數的方式:
BEGIN DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE( job_name =>'my_job', argument_position =>1, argument_value =>'test'); END; /3. 執行作業 作業可以手動觸發執行,也可以在指定的時間或事件上自動執行。以下是手動執行作業的代碼:
BEGIN DBMS_SCHEDULER.RUN_JOB(job_name =>'my_job'); END; /4. 監視作業執行 可以使用以下代碼查看作業的執行狀態:
SELECT job_name, job_type, job_action, start_date, repeat_interval, state FROM dba_scheduler_jobs;其中,state 字段表示作業的狀態,可以為 RUNNABLE、SCHEDULED、STARTED、COMPLETED、BROKEN、FAILED、STOPPED、SUCCEEDED 等。 總結 通過以上方式,我們可以在 Oracle 數據庫上創建作業,設置作業參數,手動觸發運行作業并監視作業執行狀態。使用作業可以讓我們的操作更加自動化和高效化,是 Oracle 數據庫中非常重要的一部分。