Skill Note

平凡なエンジニアがメモ代わりにプログラミング, インフラ, ネットワークを書き綴るブログ

[Oracle]ジョブをスケジューリングして定期実行する方法

      2015/11/07

DBMS_SCHEDULERパッケージを使用したジョブスケジューリング

Oracleでジョブを定期実行するには、DBMS_SCHEDULERパッケージやDBMS_JOBパッケージを使用してスケジューリングします。

DBMS_SCHEDULERパッケージはOracle10g以降から使用可能なパッケージで、DBMS_JOBパッケージよりも詳細なスケジューリング設定をすることができます。

また、DBMS_JOBパッケージで作成しているスケジュールは、DBMS_SCHEDULERパッケージへの移行が推奨されています。

DBMS_SCHEDULERパッケージでは、ジョブタイプに外部プログラムを指定することができ、バッチファイルやコマンドラインをOracleから起動することができます。

この記事ではDBMS_SCHEDULERパッケージを使用したジョブスケジュールの作成方法を記載します。

ジョブの作成

1つのジョブを作成する場合はCREATE_JOBプロシージャ、複数のジョブを作成する場合はCREATE_JOBSプロシージャでジョブを作成します。

新規ジョブとしてジョブ名をjob1、TEST_PROCストアドプロシージャを2015/01/01から2015/12/31まで1日おきに実行するジョブスケジュールを作成する場合。

Windows上でDOSコマンドを実行する外部ジョブの作成する場合。

パラメータ概要

パラメータ名説明
job_nameジョブを一意に識別できる名前を指定します。
job_type作成するジョブのタイプを指定します。
PLSQL_BLOCK - 無名PL/SQLブロック
STORED_PROCEDURE - ストアドプロシージャ
EXECUTABLE - OSのコマンドラインから実行可能な外部プログラム
CHAIN - チェーン
job_actionジョブのアクションを指定します。
ジョブタイプがPLSQL_BLOCKの場合は、PL/SQLコードを指定します。
例.BEGIN my_proc(); END;
ジョブタイプがSTORED_PROCEDUREの場合は、ストアドプロシージャ名を指定します。
ジョブタイプがEXECUTABLEの場合は、外部プログラム名を指定します。
例.コマンドプロンプトを実行 '\windows\system32\cmd.exe'
ジョブタイプがCHAINの場合は、チェーンオブジェクト名を指定します。
start_dateジョブを開始する日時を指定します。
repeat_interval繰り返す間隔を指定します。指定がない場合は、指定した開始日に1回のみ実行されます。
end_dateジョブを終了する日時を指定します。end_dateに値が指定されていない場合、ジョブは無期限で繰り返されます。
job_classジョブに関連付けるクラス。
auto_dropデフォルトはTRUEが設定されており、ジョブはスケジュールが全て完了するとジョブは自動で削除されます。
フラグをFALSEに設定すると削除されなくなります。
enabledデフォルトはFALSEが設定されており、ジョブ作成時は使用不可で作成されます。
フラグをTRUEに設定するとジョブが使用可能状態で作成されます。
number_of_argumentsプログラムがインラインされている場合の引数の数。
commentsジョブのコメントを指定します。

詳細は下記参照。
http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/appdev.111/E05686-02/d_sched.htm

ジョブの有効化、無効化

ジョブを有効にするにはENABLEプロシージャを使用しジョブ名を指定します。

ジョブを有効にするにはDISABLEプロシージャを使用しジョブ名を指定します。

ジョブの停止

実行中のジョブを停止するにはSTOP_JOBプロシージャを使用しジョブ名を指定します。
1回かぎりのジョブの状態はSTOPPEDに設定され、繰返しジョブの状態は、(次回のジョブ実行がスケジュールされているため)SCHEDULEDに設定されます。

ジョブの削除

ジョブを削除するにはDROP_JOBプロシージャを使用しジョブ名を指定します。

ジョブの確認

現ユーザのジョブを確認するにはUSER_SCHEDULER_JOBSを参照します。

Google AdSense PC

Google AdSense PC

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

oracle
[Oracle]CSALTERを使用してOracle Expressのキャラクタセットを変更する

Oracle Expressでは標準のキャラクタセットとしてAL32UTF8が設定されます。キャラクタセットを意識しないでデータベースの移行やデータベース間のデ …

oracle
[Oracle]Oracle Clientのアンインストール方法

Oracle Clientを完全にアンインストールする 環境 OS:Windows Server 2008 R2 64bitOracle Client:11g …

oracle
ODP.NETをNuGetからインストールする

ODP.NETのインストール手順 Oracle 12cから公式のODP.NETがNuGetに追加されました。 この記事ではODP.NETをNuGetからインスト …

db
[Database]データベースのバージョン/エディションを確認する方法

OracleとSQLServerのバージョン/エディションを確認 Oracle

SQLServ …

oracle
[Oracle]インストールに失敗する原因と対処方法

Oracleインストールエラー時の確認事項 OracleのデータベースやクライアントをWindowsへインストール中に インストーラが途中で落ちたり、エラーが発 …

sqlserer
[SQL Server]データを期間別に集計する

SQL Serverで集計表を出力 日付をDATETIME型で管理している場合、CONVERT関数、DATEPART関数を使って、日、週、月、年別の集計結果を出 …

oracle
[Oracle]WEBサイトやWEB APIをOracleから呼び出す方法

WEBリクエストを送信してレスポンスを表示する OracleからWEBサイトやWEB APIなどのネットワークサービスを呼び出すには、UTL_HTTPパッケージ …

sqlserer
[SQL Server]再帰SQLで集計する

WITH(共通テーブル式)を使って集計する WITH句とは 共通テーブル式 (CTE) は、単一の SELECT、INSERT、UPDATE、DELETE、CR …

oracle
Oracle12cのPDBを自動起動にする方法

Oracle12cのプラガブル・データベース(PDB)は初期設定のままでは、毎回、手動で起動させる必要があります。 この記事ではOS起動時やOracle再起動時 …

sqlserer
[SQL Server]IDENTITYの値を初期化する

ID値の初期化(リセット)方法 IDENTITYプロパティを設定した列のID値を初期化(リセット)する方法を記載します。 現在のID値を確認する ID値を確認す …