SET_ATTRIBUTE プロシージャは、Schedulerオブジェクトのプロパティを変更するために使用されます。
機能の適用範囲
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみ提供されます。
構文
DBMS_SCHEDULER.SET_ATTRIBUTE (
name IN VARCHAR2,
attribute IN VARCHAR2,
value IN VARCHAR2);
パラメータ説明
パラメータ |
説明 |
|---|---|
| name | オブジェクト名を指定します。 |
| attribute | 下記のプロパティ値を参照してください。 |
| value | プロパティに設定する新しい値です。NULL は指定できません。 |
プロパティ値
ジョブのプロパティ値
OceanBaseデータベースの現在のバージョンでは、以下のジョブ関連のプロパティ値をサポートしています。
プロパティ名 |
説明 |
|---|---|
| auto_drop | このプロパティは TRUE または FALSE に設定できます。TRUE に設定すると、ジョブは完了または自動的に無効になった後、自動的に削除されます。以下のいずれかの状況が発生した場合、ジョブは完了したと見なされます:
max_failures 回失敗すると、ジョブは無効になります。max_failures も SET_ATTRIBUTE を使用して設定します。auto_drop が FALSE に設定されている場合、ジョブは削除されず、メタデータは DROP_JOB プロシージャで明示的にジョブを削除するまで保持されます。デフォルトでは、ジョブ作成時に auto_drop は TRUE に設定されます。
説明現在のバージョンでは、このプロパティ値はサポートされていません。 |
| comments | コメントです。オプションです。
説明現在のバージョンでは、このプロパティ値はサポートされていません。 |
| credential_name | このプロパティは、ジョブで使用する資格情報オブジェクトの名前を指定します。ローカルデータベースジョブの場合、その値は NULL でなければなりません。ローカル外部ジョブの場合に限り、このプロパティが NULL(デフォルト)の場合、優先(デフォルト)資格情報が選択されます。
説明現在のバージョンでは、このプロパティ値はサポートされていません。 |
| destination_name | ジョブのデータベースターゲットまたは外部ターゲットを指定します。リモートデータベースジョブおよびリモート外部ジョブでのみ使用されます。ローカルデータベース上で実行されるジョブやローカル外部ジョブ(実行可能ファイル)の場合、このプロパティは NULL でなければなりません。
説明現在のバージョンでは、このプロパティ値はサポートされていません。 |
| 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_action | ジョブが実行する操作です。具体的な値は job_type プロパティに依存します。例えば、ジョブタイプが STORED_PROCEDURE の場合、job_action にはストアドプロシージャの名前が含まれます。
説明現在のバージョンでは、このプロパティ値はサポートされていません。 |
| job_class | このジョブに関連付けられたクラスです。 |
| job_name | ジョブ名を指定します。この名前はSQL名前空間内で一意である必要があります。作成するジョブが別のSchemaに属する場合は、Schema名を使用して限定する必要があります。ジョブ名が指定されていない場合、エラーが発生します。GENERATE_JOB_NAME プロシージャを使用してSchedulerによって名前を生成することもできます。この名前はシーケンスによって生成された数字に、文字列を数字の前缀として付加したもので、ジョブ名はシーケンス番号を持つ文字列となります。これを CREATE_JOB プロシージャで使用します。
説明現在のバージョンでは、このプロパティ値はサポートされていません。 |
| job_priority | このプロパティは、同一クラス内の他のジョブに対するこのジョブの優先順位を指定します。同一クラス内で複数のジョブを同時に実行する計画がある場合、ジョブの優先順位がそのクラス内でのジョブの実行順序を決定します。値は1から5の範囲で、1は最初に実行されるジョブを表します。ジョブ作成時に優先順位が指定されていない場合、デフォルトの優先順位は3です。
説明現在のバージョンでは、このプロパティ値はサポートされていません。 |
| job_type | 作成するジョブのタイプを指定します。指定しない場合、エラーが発生します。現在は STORED_PROCEDURE のみをサポートしています。このオプションを設定した場合、program_name は NULL でなければなりません。
説明現在のバージョンでは、このプロパティ値はサポートされていません。 |
| max_failures | このプロパティは、ジョブが自動的に無効になるまでに、連続して失敗する実行回数を指定します。一度ジョブが無効になると、それ以上実行されません。max_failures は1から1000000の整数です。デフォルトは NULL で、これは以前のインスタンスが何度失敗しても、ジョブの新しいインスタンスが起動することを意味します。 |
| max_runs | このプロパティは、ジョブが連続して実行される最大回数を指定します。最大実行回数に達すると、ジョブは無効になり、その状態は COMPLETED に変更されます。最大実行回数は1から1000000の整数です。デフォルトは NULL で、これは永遠に繰り返し実行されるか、end_date または max_failures の値に達するまで実行が停止されないことを意味します。
説明現在のバージョンでは、このプロパティ値はサポートされていません。 |
| number_of_argument | 内部プログラムのジョブの引数数を指定します。このオプションを設定した場合、program_name の値は NULL でなければなりません。
説明現在のバージョンでは、このプロパティ値はサポートされていません。 |
| program_name | このジョブに関連付けられたプログラムの名前です。プログラムタイプが EXECUTABLE の場合、job_action、job_type、number_of_arguments の値は NULL でなければなりません。
説明現在のバージョンでは、このプロパティ値はサポートされていません。 |
| repeat_interval | 次回の実行日時を返すPL関数、またはカレンダー構文式です。このオプションを設定した場合、schedule_name の値は NULL でなければなりません。
説明現在のバージョンでは、このプロパティ値はサポートされていません。 |
| start_date | このジョブが開始または計画される初期日時です。このオプションを設定した場合、schedule_name の値は NULL でなければなりません。
説明現在のバージョンでは、このプロパティ値はサポートされていません。 |
| instance_id | デフォルトでは、ジョブはPrimary Zone上で実行されます。instance_idはジョブが対応するZONE上で実行されるよう指定します。instance_idをRANDOM(つまりサブプログラム内のパラメータvalueの値をRANDOMに設定)に指定すると、ジョブはすべてのZONEにランダムに送信されます。 |
プログラムのプロパティ値
パラメータ |
説明 |
|---|---|
| comments | コメントです。オプションです。プログラムの機能や使用方法の詳細を記述できます。 |
| number_of_arguments | プログラムに必要な引数の数です。 |
| program_type | プログラムのタイプです。現在は STORED_PROCEDURE のプログラムタイプをサポートしています。 |
| program_action | プログラムが実行する操作です。program_type プロパティで指定します。例えば、プログラムタイプが STORED_PROCEDURE の場合、program_action にはストアドプロシージャの名前が含まれます。 |
使用方法
有効なオブジェクトを変更する場合、Schedulerはまずそのオブジェクトを無効にし、次に変更を加えてから再び有効にします。有効化の過程でエラーが発生した場合、そのオブジェクトは再び有効にされず、エラーメッセージが生成されます。無効な状態のオブジェクトを変更しても、変更後もそのオブジェクトは無効のままです。
ジョブについて:
ジョブが
SET_ATTRIBUTEを呼び出す際に、ジョブの実行インスタンスが存在する場合、そのインスタンスは呼び出しの影響を受けません。変更はジョブの以降の実行操作にのみ影響します。ジョブの実行中にジョブのスケジュール関連属性を変更した場合、変更後の属性が次回のジョブ実行時間の計画に使用されます。ジョブのスケジュール属性には
schedule_name、start_date、end_date、repeat_intervalが含まれます。ジョブの実行中にジョブのプログラム属性を変更した場合、変更後のプログラム属性は次回のジョブ実行時に有効になります。ジョブのプログラム属性には
program_name、job_action、job_type、number_of_argumentsが含まれます。ジョブの実行中にジョブパラメータの値を変更した場合、変更後の値は次回のジョブ実行時に有効になります。
スケジュールを変更しても、実行中のジョブには影響しません。変更は次回のジョブ実行時にのみ反映されます。
プログラムについて、ジョブが現在実行中のプログラムを変更しても、ジョブは変更前の属性値でプログラムを実行し続けます。次回ジョブが実行されるとき、新しい属性値を使用してプログラムが実行されます。
SCHEDULED_TRIGGER_PARTITION_BALANCE(パーティション均衡タスク)、SCHEDULED_RECYCLE_SCHEMA_HISTORY(Schemaマルチバージョン履歴データ回収タスク)、SCHEDULED_RUN_INSPECTION(Root Service自己検査タスク)、SCHEDULED_PURGE_RECYCLEBIN(ゴミ箱クリーンアップタスク)などの定期タスクでは、タスクが実行される時間間隔は DBMS_SCHEDULER.SET_ATTRIBUTE サブプログラムの repeat_interval 属性で設定できます。
例:
定期タスク
SCHEDULED_TRIGGER_PARTITION_BALANCEの実行間隔を2日に変更します。obclient(sys@oracle001)[SYS]> CALL DBMS_SCHEDULER.SET_ATTRIBUTE('SCHEDULED_TRIGGER_PARTITION_BALANCE', 'repeat_interval', 'FREQ=DAILY; INTERVAL=2');定期タスク
SCHEDULED_RECYCLE_SCHEMA_HISTORYの実行間隔を60分に変更します。obclient(sys@oracle001)[SYS]> CALL DBMS_SCHEDULER.SET_ATTRIBUTE('SCHEDULED_RECYCLE_SCHEMA_HISTORY', 'repeat_interval', 'FREQ=MINUTELY; INTERVAL=60');定期タスク
SCHEDULED_RUN_INSPECTIONの実行間隔を30分に変更します。obclient(sys@oracle001)[SYS]> CALL DBMS_SCHEDULER.SET_ATTRIBUTE('SCHEDULED_RUN_INSPECTION', 'repeat_interval', 'FREQ=SECONDLY; INTERVAL=1800');定期タスク
SCHEDULED_PURGE_RECYCLEBINの実行間隔を30分に変更します。obclient(sys@oracle001)[SYS]> CALL DBMS_SCHEDULER.SET_ATTRIBUTE('SCHEDULED_PURGE_RECYCLEBIN', 'repeat_interval', 'FREQ=MINUTELY; INTERVAL=30');