Oracle Warehouse Builderで設計した操作を実行するタイミングと頻度を計画するにはスケジュールを使用します。スケジュールはOracle Database 10g以上で実行するマッピングおよびプロセス・フローに適用できます。
スケジュールは、ユーザー・インタフェースで定義する間隔に基づき繰り返し実行するように定義できます。定義する各スケジュールでは、Oracle Warehouse BuilderによりiCalカレンダ標準に準拠するコードが生成され、Oracle SchedulerまたはOracle Concurrent Managerなどのスケジューラに配布できます。
Oracle Warehouse Builderを使用する開発フェーズでは、マッピングとプロセス・フローをスケジューリングするかわりに、「オブジェクトの配布」で説明するように、「コントロール・センター」からすぐに起動および停止します。
スケジュールの定義の概要
スケジュールは、プロジェクトで定義され、プロジェクト・ナビゲータの「スケジュール」ノードのカレンダ・モジュールに含まれます。カレンダ・モジュールは、同じ場所に配布される関連スケジュール・セットのグループ化に使用します。
スケジュール定義には、Oracle Warehouse Builderを使用して定義する操作の実行タイミングと頻度の詳細が含まれます。スケジュールを定義する際は、次の詳細を指定します。
開始日時
スケジュールの実行を開始する日時
スケジュール頻度
スケジュールを実行する頻度(日、週など)
繰返し間隔
アクティブな時にスケジュールを繰り返す時間間隔。繰返し間隔によってスケジュールを繰り返す頻度が決まります。たとえば、頻度が週のスケジュールを定義するとします。このスケジュールの繰返し間隔は、このスケジュールを2週間ごとの火曜日に繰り返すなどと指定します。
終了日時
スケジュールが実行を停止する日時
スケジュールの使用の概要
スケジュールを定義したら、オブジェクトがスケジュールで定義した詳細に従って実行されるようにETLオブジェクトと関連付けできます。スケジュールは、マッピング、コード・テンプレート(CT)マッピング、プロセス・フローおよびデータ監査と関連付けできます。
たとえば、12-mar-08に開始し、11-mar-09に終了するスケジュールを作成するとします。スケジュール頻度は週次に、繰返し間隔は毎週金曜日と定義します。次に、このスケジュールをマッピングに関連付けます。マッピングはスケジュールで指定した詳細に従って実行されます。マッピングは12-mar-08と11-mar-09の間の毎金曜日に実行されます。
スケジュールの配布の概要
スケジュールを配布する場所は、スケジュールを関連付けるETLオブジェクトによって異なります。スケジュール済ジョブはOracle Databaseの場所に配布する必要があります。プロセス・フロー・パッケージはOracle Workflowの場所またはConcurrent Managerの場所のいずれかに配布する必要があります。
スケジュール済ジョブは、プロセス・フローまたはマッピングなどの実行可能オブジェクトを参照できます。ジョブがプロセス・フローを参照する場合は、プロセス・フローをOracle Workflowに配布し、スケジュール済ジョブをデータベースの場所またはConcurrent Managerの場所のいずれかに配布する必要があります。
次の手順を使用して、スケジュールを定義します。
スケジュールを作成するプロジェクト・ノードを展開します。
作成していない場合は、スケジュールを含めるカレンダ・モジュールを作成します。
カレンダ・モジュールを作成するには、スケジュール・ノードを右クリックして「新規カレンダ・モジュール」を選択します。モジュールの作成ウィザードが表示されます。このウィザードを使用してカレンダ・モジュールを作成します。このモジュールに関連付けられた場所がスケジュールを配布する場所であることを確認します。
スケジュールを作成するカレンダ・モジュールを右クリックし、「新規カレンダ」を選択します。
「スケジュールの作成」ウィザードが表示されます。
ようこそページで「次へ」をクリックします。
名前と説明ページに、スケジュールの名前と説明(オプション)を入力し、「次へ」をクリックします。
スケジュール名は表示されるカレンダ・モジュール内で一意であることを確認します。詳細は、「データ・オブジェクトのネーミング規則」を参照してください。
「開始および終了時間」ページで、スケジュールの時間ゾーン、開始時間、終了時間を選択します。「次へ」をクリックします。
これらの値の設定の詳細は、「開始および終了日時」を参照してください。
注意: スケジュールの作成ウィザードには、使用可能なスケジュール機能がすべて含まれているわけではありません。すべてのスケジュール機能にアクセスするには、ウィザードを使用してスケジュールを定義後、スケジュール・エディタを使用して追加スケジュール機能を指定します。 |
「頻度および繰返し間隔の選択」ページで、スケジュールの頻度と繰返し間隔を指定します。「次へ」をクリックします。
頻度および繰返し間隔の設定の詳細は、「繰返しスケジュールの定義」を参照してください。
サマリー・ページで、スケジュールに選択したオプションを確認します。「終了」をクリックしてスケジュールを定義します。
これで、カレンダ・モジュールの下のプロジェクト・ナビゲータにスケジュールが作成および追加されます。
スケジュールを定義すると、ワークスペースにスケジュールのメタデータが作成されます。このスケジュールを使用してスケジュールに定義した時間にETLジョブを実行するには、スケジュールを配布しておく必要があります。Oracle Databaseの場所にスケジュールを配布すると、データベース・スケジューラにスケジュールが作成されます。
スケジュール・エディタを使用して、スケジュールを編集します。
図11-1は、上に開始日時および終了日時が表示されたスケジュール・エディタを示しています。
繰返し式はエディタの左下パネルに表示されます。この繰返し式を使用して、頻度単位、繰返しおよび1つ以上の句を指定します。
スケジュールのプレビューが右下パネルに表示されます。プレビューは、「Enter」キーを押すたびまたはスケジュール・エディタの新規セルに移動するたびにリフレッシュされます。無効スケジュールを指定すると、プレビューにエラー・メッセージが表示されます。
定義できるスケジュールの例は、「スケジュールの例」を参照してください。
開始日時と終了日時により、スケジュールの有効期間が定義されます。
最初にタイムゾーンを指定します。デフォルトの開始日を受け入れるか、将来の時点を指定できます。デフォルトの終了日は、デフォルトの開始日と等しいため、必ず変更してください。
ウィザードで作業中に「次へ」をクリックすると、次のページが表示されます。
スケジュール・エディタで作業している場合、開始日時は「繰返し式」の「句」のデフォルトとなります。「スケジュール・プレビュー」の実行時刻は「開始時間」に対応しています。
繰返し式によってスケジュールを実行する頻度が決まります。頻度単位、繰返し値、1つ以上の句の値を指定して、繰返し式を定義します。
ウィザードで作業中の場合、句は使用できません。ウィザードが終了したら、スケジュールを開き、スケジュール・エディタを使用して句を設定できます。
頻度単位
頻度単位によって、再帰のタイプが決まります。使用できる値は、「年」、「月」、「週」、「日」、「時間」、「分」および「秒」です。
また、スケジュールを「1度」に実行するように定義することもできます。
繰返し
繰返し値は、再帰繰返しの頻度を指定します。デフォルト値は1、最大値は999です。「頻度単位」に「年」を選択して「繰返し」の値を1のままにすると、「開始日時および終了日時」で指定した日付範囲に含まれる年ごとにスケジュールが評価されます。同じスケジュールの「繰返し」の値を2に変更すると、スケジュールは指定した日付範囲内で1年おきにのみ評価されます。
句
「句」を使用すると、5週間ある月の第1金曜日に実行するスケジュールなど、複雑なスケジュールの繰返し式を定義できます。句ごとに値を入力するか、省略記号ボタンをクリックしてセレクタ・ダイアログ・ボックスを表示します。値を迅速に入力するには、最初にセレクタ・ダイアログ・ボックスを使用して有効な値を確認し、次に「スケジュールの例」を参照してください。
図11-2は、年の月を選択するセレクタ・ダイアログ・ボックスを示しています。
セレクタ・ダイアログ・ボックスを使用して「OK」を選択すると、結果がスケジュール・エディタに表示されます。このように、セレクタ・ダイアログ・ボックスを使用して有効な値を確認できます。
図11-3は、結果が表示されたスケジュール・エディタを示しています。
次の句を定義できます。
この句では、スケジュールが有効な月を1つ以上指定します。値を入力する場合、1月の場合は1、3月の場合は3のように数値を使用するか、2月の場合はFEB、7月の場合はJULのように3文字の略称を使用します。
年の週番号でスケジューリングできるのは、「頻度単位」で「年」を選択した場合のみです。
値を入力するか、省略記号ボタンをクリックしてセレクタ・ダイアログ・ボックスを表示できます。値を入力する場合、有効な値には年に応じて1から52または53までの正負の整数が含まれます。たとえば、年の最後から2番目の週に実行するようにスケジュールを設定するには、-2を入力するか、セレクタ・ダイアログ・ボックスに入力します。
図11-4は、年の最後から2番目の週に実行するスケジュールが表示されたセレクタ・ダイアログ・ボックスを示しています。
週番号」句は、週は月曜から始まって日曜で終わると定義する、ISO-8601に準拠しています。また、年の第1週はグレゴリオ暦の年の第1木曜と1月4日を含む週として定義されます。
この標準を使用すると、カレンダ年には52週または53週を含めることができます。第1週の一部は前のカレンダ年に含まれる場合があります。第52週の一部は次のカレンダ年に含まれる場合があります。年が53週の場合は、その一部を次のカレンダ年に含める必要があります。
たとえば、1998年の第1週は、1997年12月29日の月曜日に始まっています。最後の週となる第53週は、1999年1月3日の日曜日に終わっています。したがって、1997年12月29日は1998年の第1週に含まれ、1999年1月1日は1998年の第53週に含まれることになります。
この句を使用して、年の通算日を数値として指定します。値1は1月1日、35は2月4日に相当します。有効な値は、1から366までと-366から-1までです。
負の値は、うるう年に関係なく年ごとに同じ日付を識別するのに役立ちます。たとえば、年の第60日は3月1日ですが、うるう年の場合は2月29日です。該当する負の値を計算するには、年の最終日から遡ってカウントします。したがって、12月31日の年の通算日は-1です。12月30日は-2となります。すべての3月1日のスケジュールを暦年に関係なく定義するには、「年の通算日」を-306に設定します。
この句では、月の通算日を数値として指定します。有効な値は1から31までと-1から-31までです。たとえば、10は選択した月の10日を意味します。最終日から遡ってカウントするにはマイナス記号(-)を使用します。たとえば、「月の通算日」句を-1に設定すると、スケジュールは各月の最終日に実行されます。値を-2に設定すると、スケジュールは各月の最終日の前日に実行されます。
この句では、月曜から日曜までの曜日をMON、TUEなどの書式で指定します。
「日」の値には、接頭辞として正および負の数値を使用できます。使用できる数値接頭辞は、「頻度単位」で選択する値に応じて異なります。
頻度単位として「年」を選択すると、「日」の接頭辞として年の週数を表す値(1から53および-53から-1)を使用できます。したがって、「日」の設定が26Friの場合は年の26番目の金曜に相当します。頻度単位が「年」の場合の入力-1Monは、年の最後の月曜に相当します。
頻度単位として「月」を選択すると、「日」の接頭辞として月の週数を表す値(1から5および-5から-1)を使用できます。この場合、頻度単位が「月」を設定した場合の入力-1Monは、各月の最終月曜に相当します。
この句を使用すると、時間単位でスケジュールできます。有効な値は0から23で、0は午前0時、5は午前5時、13は午後1時、23は午後11時です。
この句を使用すると、分単位でスケジュールできます。有効な値は0から59です。たとえば、45は45分後を意味します。
この句を使用すると、秒単位でスケジュールできます。有効な値は0から59です。たとえば、30は30秒後を意味します。
Oracle Databaseバージョン10gリリース2以上を使用している場合、この句を使用して、以前評価されたタイムスタンプのリストでのアイテムの位置に基づいてスケジューリングできます。他の句を使用して、タイムスタンプのリストを戻します。次に、「設定位置」句を追加して、リストから1つ以上のアイテムを選択します。この句は、月の最後の平日にジョブを実行するなどの要件がある場合に役立ちます。有効な値は1から9999です。負の数値の場合はリストの末尾からアイテムが選択され(-1が最後のアイテム、-2が最後から2番目のアイテムとなります)、正の数値の場合はリストの先頭からアイテムが選択されます。句の評価は常に最後に行われ、頻度ごとに1回のみ行われます。サポートされる頻度は、「月」および「年」です。
表11-1は、スケジュールを定義する際の参考にしてください。
表11-1 スケジュールの繰返し式の例
スケジュールの説明 | 頻度単位 | 繰返し | 句 |
---|---|---|---|
毎週金曜 |
週 |
1週 |
日= FRI |
隔週金曜 |
週 |
2週 |
日= FRI |
毎月最終日 |
月 |
1か月 |
月の通算日= -1 |
毎月最終日前日 |
月 |
1か月 |
月の通算日= -2 |
5週ある月の第1金曜日 |
月 |
1か月 |
日= -5FRI |
毎月最後の平日 |
月 |
1か月 |
日=MON、TUE、WED、THU、FRI 設定位置=-1 |
3月10日 |
年 |
1年 |
月= MAR 月の通算日= 10 |
12日に1回 |
日 |
12日 |
該当なし |
毎日午前8時および午後5時 |
日 |
1日 |
時= 8、17 |
毎月第2水曜日 |
月 |
1か月 |
日= 2 WED |
毎月最初の3日間の毎時 |
時 |
1時間 |
月の通算日= 1、2、3 |
スケジュールを定義したら、スケジュールをETLオブジェクトに関連付けます。これでスケジュールで指定した時間にETLオブジェクトを実行できます。スケジュールは、マッピング、コード・テンプレート(CT)マッピング、プロセス・フローおよびデータ監査と関連付けできます。
スケジュールをETLオブジェクトに適用する手順
プロジェクト・ナビゲータで、スケジュールを適用するETLオブジェクトを右クリックし、「構成」を選択します。
選択したオブジェクトの構成パラメータが含まれる「構成」タブが「ドキュメント」ウィンドウに表示されます。
「参照カレンダ」フィールドの省略記号ボタンをクリックします。
使用可能スケジュールの一覧を含む「参照カレンダ」ダイアログボックスが表示されます。
スケジュールするマッピングまたはプロセス・フローでは、物理名は25文字以内、ビジネス名は1995文字以内である必要があります。この制限により、Oracle Warehouse Builderでは、配布および実行で必要な接尾辞_jobおよびその他の内部文字をマッピング名に追加できるようになります。
選択したオブジェクトに適用するスケジュールを選択し、「OK」をクリックします。
スケジュールおよび関連スケジュールを配布します。
関連するオブジェクトとともに正しく配布された場合、ターゲット・スキーマは作成したスケジュールに基づいてETLオブジェクトを実行します。
マッピングまたはプロセス・フローを正常に配布したら、スケジュールしてOracle Enterprise Managerで実行できます。
注意: ジョブおよびスケジュールの作成の詳細は、『Oracle Enterprise Manager概要』およびOracle Enterprise Managerのヘルプを参照してください。 |
Oracle Enterprise Managerにおけるマッピングまたはプロセス・フローのスケジュール手順:
Oracle Warehouse Builderにマッピングまたはプロセス・フローを正常に配布します。
Oracle Warehouse Builderリポジトリの所有者またはリポジトリ・ユーザーとしてEnterprise Managerに接続します。
PL/SQLブロックのWB_RT_API_EXEC.RUN_TASK
関数を使用するスケジューラ・ジョブを作成します。
この関数の詳細は、「WB_RT_API_EXEC.RUN_TASK関数」を参照してください。
ジョブを実行するスケジュールを作成します。
このスクリプトを使用すると、SQL*PlusからETLプロセスを開始し、cron、AT、Autosys、Tivoliなどのスケジューリング・ツールを使用できます。
sqlplus_exec_template.sql
スクリプトは、OWB_HOME
/owb/rtp/sql
ディレクトリにあります。
戻り値
構文
SQLPLUS_EXEC_TEMPLATE rt_owner location task_type task_name system_params custom_params
引数
次の各引数の値を入力します。
rt_owner: リポジトリの所有者。
location: PL/SQLマッピングおよびプロセス・フローの場合は、配布に使用する場所を指定します。
SQL*LoaderおよびSAPマッピングの場合は、このパラメータをPlatformSchema
に設定します。この変数は大文字小文字を区別します。
task_type: マッピングまたはプロセス・フローの適切なタスク・タイプを入力します。
PLSQLMAP
: PL/SQLマッピング
SQLLOADERCONTROLFILE
: SQL*Loaderマッピング
PROCESSFLOW
: プロセス・フロー
ABAPFILE
: SAPマッピング
DATAAUDITOR
: データ監査マッピング
SCHEDULEDJOB
: Oracle Warehouse Builderのスケジュール済ジョブ
task_name: マッピングまたはプロセス・フローの物理名
system_params: このタスク・タイプのシステム・パラメータの値。これらの値はデフォルト値を上書きします。name=valueという形式でパラメータを入力します。複数のパラメータはカンマで区切り、文字列全体を二重引用符で囲みます。バックスラッシュ (\) はエスケープ文字で、リテラル・テキストとしてカンマまたは二重引用符を含める必要があります。
正しい例は、次のとおりです。
"," "this_param=true" "this_param=true, that_param=2"
custom_params: このタスクに定義されたカスタム・パラメータの値。構文のsystem_paramsを参照してください。
例
次の各例では、sqlplus.exeおよびsqplus_exec_template.sql
へのパスを指定する必要があります。
sqlplus user/password@tns_name @sqlplus_exec_template MY_RUNTIME MY_WAREHOUSE PLSQL MY_MAPPING "," "," sqlplus user/password@tns_name @sqlplus_exec_template MY_RUNTIME PlatformSchema SQL_LOADER MY_LOAD "," "," sqlplus user/password@tns_name @sqlplus_exec_template MY_RUNTIME MY_WORKFLOW PROCESS MY_PROCESS "," "," sqlplus user/password@tns_name @sqlplus_exec_template MY_RUNTIME PlatformSchema ABAP MY_SAP "," ","
WB_RT_API_EXEC
PL/SQLパッケージのRUN_TASK
ファンクションを使用すると、Oracle Warehouse BuilderからETLプロセスをスケジュールして実行することができます。
戻り値
戻り値は関数のパラメータによって異なります。
background=0
およびoem_friendly=0
の場合:
background=0
およびoem_friendly=1
の場合:
background
=1
の場合:
構文
RUN_TASK ( location IN VARCHAR2, task_type IN VARCHAR2, task_name IN VARCHAR2, custom_params IN VARCHAR2 DEFAULT NULL, system_params IN VARCHAR2 DEFAULT NULL, oem_friendly IN NUMBER DEFAULT 0, background IN NUMBER DEFAULT 0 ) RETURN NUMBER;
次の各パラメータの値を入力します。
location: PL/SQLマッピングおよびプロセス・フローの場合は、配布に使用する場所を指定します。
SQL*LoaderおよびSAPマッピングの場合は、このパラメータをPlatformSchemaに設定します。この変数は大文字小文字を区別します。
task_type: マッピングまたはプロセス・フローの適切なタスク・タイプを入力します。
PLSQLMAP
またはPLSQL
: PL/SQLマッピング
SQLLoader
またはSQLLoaderControlFile
またはSQLLoaderMap
: SQL*Loaderマッピング
Process
またはProcessFlow
: プロセス・フロー
ABAPFile
またはSAPMap
またはSAP: SAPマッピング
DataAuditor
: データ監査マッピング
ScheduledJob
: Oracle Warehouse Builderのスケジュール・オブジェクト
AppsCMScheduler
: Concurrent Managerのスケジュール・ジョブ
DBMSScheduler
: データベースのスケジュール・ジョブ
注意: 以前は、数値とリテラル値のどちらでもtask_type を指定できました。たとえば、3でProcessFlow を指定し、4でSAP を指定するような方法です。ただし、11gリリース2 (11.2)以降では、数値は有効でなくなりました。必ずリテラル値を使用する必要があります。大文字小文字はどちらでも、また混在していてもかまいません。たとえば、PROCESSFLOW 、ProcessFlow 、processflow はすべて有効です。 |
task_name: マッピングまたはプロセス・フローの名前
custom_params: このタスクに定義されたカスタム・パラメータの値。構文のsystem_paramsを参照してください。
system_params: このタスク・タイプのシステム・パラメータの値。これらの値はデフォルト値を上書きします。name=valueという形式でパラメータを入力します。
複数のパラメータはカンマで区切り、文字列全体を二重引用符で囲みます。バックスラッシュ (\) はエスケープ文字で、リテラル・テキストとしてカンマまたは二重引用符を含める必要があります。
正しい例は、次のとおりです。
"," "this_param=true" "this_param=true, that_param=2"
oem_friendly: 戻り値を制御します。Enterprise Managerで実行する場合は1に設定し、それ以外の環境の場合は0に設定します。
background: タスクの実行を制御します。バックグラウンドの場合は1に、フォアグラウンドの場合は0に設定します。
例
次の例は、CUSTOMER_MAP in SALES_TARGET_LOCATIONという名前のマッピングを実行する関数の戻り値を示しています。
BEGIN DBMS_OUTPUT.PUT_LINE('Result: ' || TO_CHAR(gccrep.wb_rt_api_exec.run_task( 'SALES_TARGET_LOCATION','PLSQLMAP','CUSTOMER_MAP', null, null, 1))); END;