STOP_JOB プロシージャは、実行中のジョブを停止するために使用されます。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
権限
sys テナントは他のユーザーが実行中のジョブを停止できますが、他のユーザーは自身が実行中のジョブのみを停止できます。
構文
DBMS_SCHEDULER.STOP_JOB (
job_name IN VARCHAR2,
force IN BOOLEAN DEFAULT FALSE);
パラメータ
| パラメータ | 説明 |
|---|---|
| job_name | ジョブ名を指定します。job_nameは1つのみ指定可能です。 |
| force | 実行中のジョブを強制的に終了するかどうかを指定します。値はFALSEのみをサポートし、ジョブの強制終了を実行しないことを意味します。 |
使用方法
- ジョブの複数の実行ラウンドを終了する:
STOP_JOBコマンドを実行すると、コマンド実行時点以前に開始されたすべてのジョブおよびそれに対応するセッションが停止されます。 - 将来のスケジューリングへの影響:
STOP_JOBは現在実行中のジョブインスタンスのみを終了し、そのジョブの今後の予定スケジューリングには一切影響を与えません。ジョブは計画通りに実行を続けます。 - 停止されたジョブの失敗回数の統計:
STOP_JOBまたはkill sessionによって停止されたジョブは、1回の失敗としてカウントされます。ジョブが連続して一定回数(例えば16回)失敗すると、システムによって破損したと判断される可能性があります。 - キューの滞留がジョブに与える影響:システムテナントキューまたはOracleテナントキューに滞留が発生すると、
STOP_JOBコマンドの実行に影響を与える可能性があります。キューの滞留によりリソースが逼迫し、STOP_JOBコマンドの実行が遅延または妨げられる可能性があります。
例
ジョブ MYJOB を即座に停止します。
BEGIN
DBMS_SCHEDULER.STOP_JOB(
JOB_NAME => 'MYJOB,
force => FALSE);
END;