CREATE_JOB プロシージャは、ジョブを作成するために使用されます。
enabled プロパティを TRUE に設定すると、Schedulerは計画に基づいてジョブを自動的に実行します。作成したジョブが無効な状態の場合、SET_ATTRIBUTE プロシージャを使用してジョブを有効にしない限り、ジョブは実行されません。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。
構文
既存のプログラムまたは計画を使用しないでジョブを作成する構文
DBMS_SCHEDULER.CREATE_JOB (
job_name IN VARCHAR2,
job_type IN VARCHAR2,
job_action IN VARCHAR2,
number_of_argument IN BINARY_INTEGER DEFAULT 0,
start_date IN TIMESTAMP_UNCONSTRAINED DEFAULT NULL,
repeat_interval IN VARCHAR2 DEFAULT 'null',
end_date IN TIMESTAMP_UNCONSTRAINED DEFAULT NULL,
job_class IN VARCHAR2 DEFAULT 'DEFAULT_JOB_CLASS',
enabled IN BOOLEAN DEFAULT FALSE,
auto_drop IN BOOLEAN DEFAULT TRUE,
comments IN VARCHAR2 DEFAULT 'null',
credential_name IN VARCHAR2 DEFAULT 'null',
destination_name IN VARCHAR2 DEFAULT 'null',
max_run_duration IN BINARY_INTEGER DEFAULT 0);
名前付けられたプログラムオブジェクトと内部計画を使用してジョブを作成する構文
DBMS_SCHEDULER.CREATE_JOB (
job_name IN VARCHAR2,
program_name IN VARCHAR2,
start_date IN TIMESTAMP_UNCONSTRAINED DEFAULT NULL,
repeat_interval IN VARCHAR2 DEFAULT 'null',
end_date IN TIMESTAMP_UNCONSTRAINED DEFAULT NULL,
job_class IN VARCHAR2 DEFAULT 'DEFAULT_JOB_CLASS',
enabled IN BOOLEAN DEFAULT FALSE,
auto_drop IN BOOLEAN DEFAULT TRUE,
comments IN VARCHAR2 DEFAULT 'null',
job_style IN VARCHAR2 DEFAULT 'REGULER',
credential_name IN VARCHAR2 DEFAULT 'null',
destination_name IN VARCHAR2 DEFAULT 'null',
max_run_duration IN BINARY_INTEGER DEFAULT 0);
パラメータの説明
| パラメータ | 説明 |
|---|---|
| job_name | ジョブの名前を指定します。この名前はSQLネームスペース内で一意でなければなりません。作成しているジョブが別のスキーマに属する場合は、スキーマ名を使用して限定する必要があります。ジョブ名が指定されていない場合、エラーが報告されます。また、GENERATE_JOB_NAME を使用してSchedulerによって名前を生成させることもできます。この名前はシーケンスによって生成された数字であり、文字列を数字のプレフィックスとして使用できるため、ジョブ名はシリアル番号付きの文字列となり、その後 CREATE_JOB プロセスで使用されます。 |
| job_type | 作成するジョブのタイプを指定します。指定されていない場合、エラーが生成されます。現在のバージョンでは STORED_PROCEDURE のみサポートされています。このパラメータはプロシージャのみをサポートし、戻り値を持つ関数はサポートされていません。 |
| job_action | ジョブの操作を指定します。インラインプログラムに job_action が指定されていない場合、ジョブの作成時にエラーが報告されます。job_action は自律トランザクション内で実行され、すべての自律トランザクションのガイドラインと制限に従います。ストアドプロシージャの場合、job_action はストアドプロシージャの名前です。プロシージャがジョブ外の別のスキーマにある場合は、スキーマを指定する必要があります。大文字と小文字を区別する必要がある場合は、スキーマ名とストアドプロシージャ名を二重引用符で囲みます。例えば job_action_proc=>'"Schema"."myProc"' です。ジョブまたはプログラムのタイプが STORED_PROCEDURE の場合、job_action は INOUT または OUT パラメータを持つPLプロシージャをサポートしません。 |
| number_of_argument | ジョブに必要なパラメータ数を指定します。このパラメータの値の範囲は [0,255] で、デフォルト値は0です。 |
| program_name | このジョブに関連付けられたプログラムの名前です。 |
| start_date | このジョブ計画が初めて実行される日付と時間を指定します。start_date と repeat_interval が空の場合、ジョブが有効になるとすぐに実行されます。 |
| repeat_interval | ジョブの繰り返し頻度を指定します。カレンダー式またはPL式を使用して繰り返し間隔を指定できます。指定された式を評価することで、ジョブの次回の実行時間が決定されます。 説明 このパラメータを空に設定するとエラーが発生しますが、機能の使用には影響しません。 このプロパティの値は以下のとおりです:
|
| end_date | ジョブの有効期限、つまり実行されなくなる日付と時間を指定します。end_date の後、auto_drop が TRUE の場合、ジョブは削除されます。auto_drop が FALSE の場合、ジョブは無効になり、ジョブの STATE は COMPLETED に設定されます。end_date の値が指定されていない場合、ジョブは max_runs または max_failures が設定されている場合を除き、繰り返し実行され続けます。その場合、いずれかの値に達するとジョブの実行は停止します。end_date の値は start_date の値より後でなければならず、そうでない場合はエラーが報告されます。end_date の値と start_date の値が同じ場合、ジョブは実行されず、エラーも報告されません。 |
| job_class | このジョブに関連付けられたクラス。 |
| enabled | 作成したジョブを有効にするかどうかを指定します。このプロパティは TRUE または FALSE に設定でき、デフォルトは FALSE であり、作成されたジョブは無効になります。無効になったジョブは、関連するメタデータがキャプチャされており、データベースオブジェクトに属しているにもかかわらず、スケジューラーはこのジョブを無視し、処理も行いません。このジョブを処理するには、このパラメータを TRUE に設定するか、ENABLE プロシージャを使用してジョブを有効にします。 |
| auto_drop | ジョブが完了または自動的に無効になった後、自動的に削除されるかどうかを指定します。このプロパティは TRUE または FALSE に設定できます。TRUE に設定すると、ジョブは完了または自動的に無効になった後、自動的に削除されます。ジョブが完了したと見なされるのは、次のいずれかの場合です:
max_failures 回失敗すると、ジョブは無効になります。max_failures も SET_ATTRIBUTE を使用して設定します。auto_drop が FALSE に設定されている場合、ジョブは削除されず、DROP_JOB プロシージャを使用して明示的にジョブを削除するまでメタデータは保持されます。デフォルトでは、ジョブを作成するときに auto_drop は TRUE に設定されます。 |
| comments | ジョブのコメントを追加します。デフォルトでは、このプロパティは NULL です。 |
| job_style | 作成中のジョブのスタイルを指定します。このプロパティの可能な値は次のとおりです:
|
| credential_name | ジョブと一緒に使用するデフォルトの資格情報を指定します。ローカルデータベースジョブの場合、その値は NULL でなければなりません。このプロパティが NULL(デフォルト)の場合、ローカル外部ジョブのみで、優先(デフォルト)の資格情報が選択されます。 |
| destination_name | ジョブのデータベースターゲットまたは外部ターゲットを指定します。CREATE_JOB の credential_name パラメータが NULL の場合、各ターゲットの前に次の形式の資格情報が必要です: sql credential.destination。 |
| max_run_duration | ジョブの最大実行時間を指定します。 |
使用方法
デフォルトでは、ユーザーが作成したジョブは無効になっており、計画通りにジョブを実行するためには、明示的にジョブを有効にする必要があります。
ジョブを指定されたクラスまたはプログラムに関連付けるには、そのクラスまたはプログラムに対する EXECUTE 権限が必要です。
CREATE_JOB で設定できるジョブのプロパティはすべてではありません。一部のパラメータは、ジョブ作成後に設定する必要があります。例えば、job_priority や max_runs といったパラメータは、SET_ATTRIBUTE プロシージャを使用して設定する必要があります。
例
DECLARE
i INTEGER;
BEGIN
SELECT COUNT(*) INTO i FROM user_tables WHERE table_name = 'DBMS_SCHEDULER_T1';
IF i = 0 THEN
EXECUTE IMMEDIATE 'CREATE TABLE DBMS_SCHEDULER_T1(col DATE)';
END IF;
SELECT COUNT(*) INTO i FROM user_tables WHERE table_name = 'DBMS_SCHEDULER_T2';
IF i = 0 THEN
EXECUTE IMMEDIATE 'CREATE TABLE DBMS_SCHEDULER_T2(col DATE, job VARCHAR(128), job_name VARCHAR(128))';
END IF;
END;
/
CREATE OR REPLACE PACKAGE JOB_UTIL IS
PROCEDURE insert_date;
PROCEDURE insert_date_program ( job IN VARCHAR2, job_name IN VARCHAR2);
END;
/
CREATE OR REPLACE PACKAGE BODY JOB_UTIL IS
PROCEDURE insert_date IS
BEGIN
INSERT INTO DBMS_SCHEDULER_T1 VALUES(TO_CHAR(sysdate));
COMMIT;
END;
PROCEDURE insert_date_program ( job IN VARCHAR2, job_name IN VARCHAR2) IS
BEGIN
INSERT INTO DBMS_SCHEDULER_T2 VALUES(sysdate, job, job_name);
COMMIT;
END;
END;
/
BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name => dbms_scheduler.generate_job_name,
job_type => 'STORED_PROCEDURE',
job_action => 'JOB_UTIL.insert_date',
number_of_argument => 5,
start_date => sysdate ,
repeat_interval => 'FREQ=SECONDLY; INTERVAL=8',
end_date =>sysdate + 100 ,
job_class =>'DEFAULT_JOB_CLASS',
enabled => true,
auto_drop => true,
comments =>'test' ,
credential_name => 'null',
destination_name => 'null');
COMMIT;
END;
/
--業務テナントで実行状況を確認する:
SELECT JOB_NAME,enabled,NEXT_RUN_DATE,state,last_start_date FROM DBA_SCHEDULER_JOBS;
実行結果の例は次のとおりです:
+---------------------------+---------+-------------------------------------+-----------+-------------------------------------+
| JOB_NAME | ENABLED | NEXT_RUN_DATE | STATE | LAST_START_DATE |
+---------------------------+---------+-------------------------------------+-----------+-------------------------------------+
| FRIDAY_WINDOW | 1 | 13-SEP-24 10.00.00.000000 PM +08:00 | NULL | NULL |
| JOB$_1125899907865012 | 1 | 13-SEP-24 11.09.49.000000 AM +08:00 | SCHEDULED | 13-SEP-24 11.09.41.000965 AM +08:00 |
| MONDAY_WINDOW | 1 | 16-SEP-24 10.00.00.000000 PM +08:00 | SCHEDULED | 09-SEP-24 10.00.00.020702 PM +08:00 |
| OPT_STATS_HISTORY_MANAGER | 1 | 14-SEP-24 10.50.02.365883 AM +08:00 | SCHEDULED | 13-SEP-24 10.50.02.366764 AM +08:00 |
| SATURDAY_WINDOW | 1 | 14-SEP-24 06.00.00.000000 AM +08:00 | NULL | NULL |
| SUNDAY_WINDOW | 1 | 15-SEP-24 06.00.00.000000 AM +08:00 | NULL | NULL |
| THURSDAY_WINDOW | 1 | 19-SEP-24 10.00.00.000000 PM +08:00 | SCHEDULED | 12-SEP-24 10.00.00.012722 PM +08:00 |
| TUESDAY_WINDOW | 1 | 17-SEP-24 10.00.00.000000 PM +08:00 | SCHEDULED | 10-SEP-24 10.00.00.012928 PM +08:00 |
| WEDNESDAY_WINDOW | 1 | 18-SEP-24 10.00.00.000000 PM +08:00 | SCHEDULED | 11-SEP-24 10.00.00.015659 PM +08:00 |
+---------------------------+---------+-------------------------------------+-----------+-------------------------------------+
9 rows in set