sql >> データベース >  >> RDS >> Oracle

Oracle PL / SQL:DBMS_SCHEDULER.CREATE_JOBの例

    要件は、毎日午前3時に実行されるジョブをOracleで作成することです。 ストアドプロシージャを実行して、特定のタスクを実行します。たとえば、ストアドプロシージャの名前はPROC_DAILY_UPDATESです。 。

    これを実現するために、次の例ではOracleのDBMS_SCHEDULER.CREATE_JOBを使用しています。 手順:

    1。 DBMS_SCHEDULER.CREATE_JOB

    を使用してOracleでジョブを作成します
    BEGIN
      DBMS_SCHEDULER.CREATE_JOB (
       job_name           =>  'JOB_DAILY_UPDATES',
       job_type           =>  'STORED_PROCEDURE',
       job_action         =>  'YOURSCHEMA.PROC_DAILY_UPDATES',
       start_date         =>  '28-SEP-19 03.00.00 AM America/New_York',
       repeat_interval    =>  'FREQ=DAILY;INTERVAL=1', 
       end_date           =>  NULL,
       auto_drop          =>   FALSE,
       job_class          =>  'SYS.DEFAULT_JOB_CLASS',
       comments           =>  'extract data');
    END;
    /

    上記のジョブを作成したら、有効にします。

    2。 DBMS_SCHEDULER.ENABLE

    を使用してジョブを有効にします
    BEGIN 
        DBMS_SCHEDULER.enable('JOB_DAILY_UPDATES'); 
    END;
    /

    正常に作成されたジョブを確認するには、次のクエリを使用します。

    Select * from user_scheduler_jobs 
     where job_name = 'JOB_DAILY_UPDATES';

    上記のクエリから、最終開始日、次の実行日、ジョブの有効化ステータスなどの情報が取得されます。 、など。

    ジョブの実行履歴を取得するには、次のクエリを使用します。

    Select * from user_scheduler_job_run_details 
      where job_name = 'JOB_DAILY_UPDATES';

    上記のDBMS_SCHEDULER.CREATE_JOBでもわかります。 手順の例では、タイムゾーンAmerica/New_Yorkを使用しました 。次のクエリを使用して、特定の国のタイムゾーンを取得できます。

    SELECT DISTINCT tzname, TZ_OFFSET (tzname)
     FROM V$TIMEZONE_NAMES
    ORDER BY tzname;

    出力

    America/Mexico_City -05:00 
    America/Miquelon -02:00 
    America/Moncton -03:00 
    America/Monterrey -05:00 
    America/Montevideo -03:00 
    America/Montreal -04:00 
    America/Montserrat -04:00 
    America/Nassau -04:00 
    America/New_York -04:00
    ...

    関連項目:

    • Oracle SQL Developerでジョブをスケジュールする方法は?
    • LinuxでCron(crontab)を使用してタスク/ジョブをスケジュールする方法を学ぶ
    • PL/SQLで任意の国の現在の現地時間を取得
    1. エンティティフレームワークは、コンパイルのたびに初めてロードするのが非常に遅い

    2. JDBC ResultSetは、テーブルエイリアスを持つ列を取得します

    3. SQLステートメントまたはストアドプロシージャから外部データベースに接続するにはどうすればよいですか?

    4. カーソルを使用せずに各行のSQL呼び出しストアドプロシージャ