OceanBase logo

OceanBase

トランザクション処理、分析、AIワークロードに最適な分散データベース

プロダクト概要
デプロイを自由に

OceanBase Cloud

OceanBaseの導入とスケーリングを最適化

エンタープライズ版

自社インフラ上での運用・管理に対応

オープンソース版を試す

コミュニティ版

開発者向けオープンソース分散データベース

OceanBase seekdb

AIネイティブなオープンソースの検索データベース

顧客事例

さまざまな業界の企業による導入事例を紹介します。

さらに見る
利用シーン別

あらゆるシナリオに対応するOLTP

ハイブリッドクラウドソリューション

大容量ストレージデータベースのコスト削減

リアルタイム分析混合ワークロード

複数インスタンスの統合

ドキュメント

会社概要

OceanBaseの企業情報、パートナーシップ、そして信頼性・セキュリティへの取り組みについて紹介します。

OceanBaseについて

トラストセンター

法的情報

お問い合わせ

日本 - 日本語
International - English
中国站 - 简体中文
クラウドで始める

OceanBase

トランザクション処理、分析、AIワークロードに最適な分散データベース

プロダクト概要
デプロイを自由に

OceanBase Cloud

OceanBaseの導入とスケーリングを最適化

エンタープライズ版

自社インフラ上での運用・管理に対応

オープンソース版を試す

コミュニティ版

開発者向けオープンソース分散データベース

OceanBase seekdb

AIネイティブなオープンソースの検索データベース

顧客事例

さまざまな業界の企業による導入事例を紹介します。

さらに見る
利用シーン別

あらゆるシナリオに対応するOLTP

ハイブリッドクラウドソリューション

大容量ストレージデータベースのコスト削減

リアルタイム分析混合ワークロード

複数インスタンスの統合

OceanBaseの企業情報、パートナーシップ、そして信頼性・セキュリティへの取り組みについて紹介します。

OceanBaseについて

トラストセンター

法的情報

お問い合わせ

クラウドで始める
编组
すべての製品
    • データベース
    • アイコンOceanBaseデータベース
    • アイコンOceanBase Cloud
アイコン

OceanBaseデータベース

SQL - V4.4.2

    OceanBase ロゴ

    AI時代を支える分散データベース

    日本 - 日本語
    International - English
    中国站 - 简体中文
    プロダクト
    OceanBase Cloudエンタープライズ版コミュニティ版OceanBase seekdb
    会社概要
    OceanBaseについてトラストセンター法的情報お問い合わせ
    公式アカウント
    ConnpassXQiitaLumaGitHub

    © OceanBase 2026. All rights reserved

    クラウドサービス契約個人情報保護ポリシーセキュリティ
    お問い合わせ
    ドキュメントフィードバック
    1. ホーム
    2. OceanBaseデータベース
    3. SQL
    4. V4.4.2
    アイコンOceanBaseデータベース
    SQL - V 4.4.2
    データベース
    • OceanBaseデータベース
    • OceanBase Cloud
    SQL
    KV
    • V 4.4.2
    • V 4.3.5

    CREATE_JOB

    最終更新日:2026-06-15 02:31:32  更新
    シェア
    このページの内容
    構文
    既存のプログラムまたはスケジュールを使用せずにジョブを作成する構文
    名前付きプログラムオブジェクトと内部スケジュールを使用してジョブを作成する構文
    パラメータ説明
    使用方法
    例

    折りたたみ

    シェア

    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式を使用して繰り返し間隔を指定できます。指定された式を評価することで、ジョブの次回実行時間が決定されます。
    説明 このパラメータを空に設定するとエラーが発生しますが、機能の使用には影響しません。
    このプロパティの取り得る値は以下のとおりです:
    • FREQ:繰り返しタイプを指定します。必須です。事前定義された頻度の値は YEARLY、MONTHLY、WEEKLY、DAILY、HOURLY、MINUTELY、SECONDLY です。または、既存のスケジュールをユーザー定義の頻度として指定することもできます。
    • INTERVAL:繰り返し頻度を示す正の整数を指定します。デフォルト値は 1 で、1秒ごとを意味します。

      注意

      INTERVAL と BY を組み合わせて使用する場合、INTERVAL は BY の前に記述する必要があります。例えば、freq=YEARLY;INTERVAL=2;BYMONTH=JUL

    • BYMONTH:月単位での実行を示します。月の略称、数字、またはそのリストを指定できます。リストはカンマで区切ります。取り得る範囲は [1,12] です。
    • BYYEARDAY:年の中の特定の日を数字で指定します。有効な値は [1,366] です。
    • BYMONTHDAY:月内の日付を指定します。数字またはそのリストを指定できます。リストはカンマで区切り、月に応じて選択する合理的な最大日数です。有効な値は [1,31] です。
    • BYDAY:日付のリストを指定します。曜日の略称(例:MON)や複数の略称からなるリストをカンマで区切って指定できます。毎週月曜日を1日目とします。

      説明

      BYDAY で負の数を指定することはサポートされていません。例えば、FREQ=MONTHLY;BYDAY=-1FRI は毎月最終の金曜日に実行することを意味します。指定した場合、OB_PASSER_ERROR が返されます。

    • BYHOUR:ジョブの実行時間を指定します。数字またはそのリストをカンマで区切って指定できます。有効な値は [0,23] です。
    • BYMINUTE:ジョブの実行分を指定します。数字またはそのリストをカンマで区切って指定できます。有効な値は [0,59] です。
    • BYSECOND:ジョブの実行秒数を指定します。数字またはそのリストをカンマで区切って指定できます。有効な値は [0,59] です。
    上記で説明した個別のジョブ繰り返し頻度の指定に加えて、組み合わせて指定することもできます。組み合わせ条件の規範は以下のとおりです:
    • FREQ = YEARLY の場合、BYMONTH + BYMONTHDAY の組み合わせ、または BYYEARDAY を使用でき、その後に BYHOUR + BYMINUTE + BYSECONDY を続けることができます。
    • FREQ = MONTHLY の場合、BYMONTHDAY + BYHOUR + BYMINUTE + BYSECOND を続けることができます。
    • FREQ = WEEKLY の場合、BYDAY + BYHOUR + BYMINUTE + BYSECOND を続けることができます。
    • FREQ = DAILY の場合、BYHOUR + BYMINUTE + BYSECOND を続けることができます。
    • FREQ = HOURLY の場合、BYMINUTE + BYSECOND を続けることができます。
    • FREQ = MINUTELY の場合、BYSECOND を続けることができます。
    • FREQ = SECONDLY の場合、BYXXX との組み合わせはサポートされていません。
    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です。つまり、作成されるジョブは無効になります。無効なジョブは、関連するメタデータは取得され、データベースオブジェクトにも含まれますが、Schedulerはそのジョブを無視し、処理も行いません。このジョブを処理したい場合は、このパラメータをTRUEに設定するか、ENABLEプロシージャを使用してジョブを有効にします。
    auto_drop ジョブが完了または自動的に無効になった後、自動的に削除されるかどうかを指定します。このプロパティはTRUEまたはFALSEに設定できます。TRUEに設定すると、ジョブは完了または自動的に無効になった後、自動的に削除されます。以下のいずれかの状況が発生した場合、ジョブは完了したと見なされます:
    • ジョブ終了日時(またはジョブスケジュールの終了日時)が過ぎました。
    • ジョブがmax_runs回実行されました。max_runsはSET_ATTRIBUTEを使用して設定する必要があります。
    • このジョブは非繰り返しジョブで、1回のみ実行されました。
    ジョブの実行がmax_failures回失敗すると、無効になります。max_failuresもSET_ATTRIBUTEを使用して設定します。auto_dropがFALSEに設定されている場合、ジョブは削除されず、メタデータはDROP_JOBプロシージャで明示的に削除するまで保持されます。デフォルトでは、ジョブ作成時にauto_dropはTRUEに設定されます。
    comments ジョブのコメントを追加します。デフォルトでは、このプロパティはNULLです。
    job_style 作成するジョブのスタイルを指定します。このプロパティの可能な値は以下のとおりです:
    • 'REGULAR':通常のジョブを作成します。デフォルト設定です。
    • 'LIGHTWEIGHT':軽量ジョブを作成します。この値は、ジョブがプログラムオブジェクトを参照する場合にのみ使用できます。頻繁に多数の短時間ジョブを実行する必要がある場合、軽量ジョブの使用を推奨します。場合によっては、軽量ジョブを使用することで、わずかなパフォーマンス向上が得られます。
    • 'IN_MEMORY_RUNTIME':メモリ内ランタイムジョブを作成します。これらのジョブは軽量ジョブの構造に基づいており、メモリ内キャッシュを保持することでさらにパフォーマンスを向上させるため、実行前後の操作におけるディスクアクセスを最大限に削減できます。
    • 'IN_MEMORY_FULL':メモリ内フルジョブを作成します。メモリ内フルジョブにはプログラムが必要で、タイムスケジュールや繰り返し間隔を設定することはできません。ジョブが有効になると、自動的に実行され、実行後は破棄されます。すべてのジョブ情報はメモリ内に保存され、ディスクにはバックアップされません。つまり、インスタンスが再起動すると、この情報は失われます。その目的は、可能な限り少ないオーバーヘッドで、即時に実行する必要がある操作を実行することです。
    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/utils IS
      PROCEDURE insert_date;
      PROCEDURE insert_date_program ( job IN VARCHAR2, job_name IN VARCHAR2);
    END;
    /
    
    CREATE OR REPLACE PACKAGE BODY JOB-utils 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
    

    前のトピック

    DBMS_SCHEDULERの概要
    最後

    次のトピック

    CREATE_JOB_CLASS
    次
    このページの内容
    構文
    既存のプログラムまたはスケジュールを使用せずにジョブを作成する構文
    名前付きプログラムオブジェクトと内部スケジュールを使用してジョブを作成する構文
    パラメータ説明
    使用方法
    例