7 統合プロセスの実行
この章の内容は次のとおりです。
ノート:
Hadoopクラスタ内での統合プロセスの実行およびスケジュール方法の詳細は、『Oracle Data Integratorとのビッグ・データの統合』を参照してください。
ODI実行の理解
実行は、Oracle Data Integratorで統合タスクの実行が必要な場合に発生します。この統合タスクは次のいずれかです。
-
Oracle Data Integrator Studioから開始されたカスタマイズしたリバースエンジニアリング、ジャーナル化操作、静的チェックなど、モデル、サブモデルまたはデータストアに対する操作
-
通常はOracle Data Integrator Studioから開始されるマッピング、パッケージ、プロシージャなどの設計時オブジェクトの実行
-
Oracle Data Integrator Studioまたはコマンド行から、あるいはスケジュールやWebサービス・インタフェースを介して起動されたランタイム・シナリオまたはロード計画の実行
Oracle Data Integratorでは、実行用のコードは、セッションの形式かロード計画を実行する場合はロード計画実行の形式で生成されます。
ランタイム・エージェントは、このコードを処理してソースとターゲットに接続し、データ統合を実行します。エージェントは、指定の実行コンテキストを使用して、これらのソースとターゲットを配置します。
Oracle Data Integrator Studioから実行が開始されると、「実行」ダイアログが表示されます。このダイアログには、表7-1にリストされている実行パラメータが表示されます。
表7-1 実行パラメータ
プロパティ | 説明 |
---|---|
コンテキスト |
セッションが開始されるコンテキスト。 |
エージェント |
マッピングを実行するエージェント。「ローカル(エージェントなし)」を選択することで、Oracle Data Integrator Studioに組み込まれているエージェントを使用して、オブジェクトを実行することもできます。 |
ログ・レベル |
保持するロギング情報のレベル。この値以下のログ・レベルが定義されているすべてのセッション・タスクは、セッション完了時に、セッション・ログに保持されます。ただし、オブジェクトの実行が異常終了した場合は、この設定にかかわらず、すべてのタスクが保持されます。 ログ・レベル6は、ログ・レベル5と動作は同じですが、変数の追跡が追加されていることに注意してください。『Oracle Data Integratorでの統合プロジェクトの開発』の変数と順序の追跡に関する項を参照してください。 |
シミュレーション |
実行をシミュレーションして実行レポートを作成する場合は、「シミュレーション」を選択します。詳細は、実行のシミュレーションを参照してください。 |
セッションのライフ・サイクル
この項では、セッションのライフ・サイクルについて説明します。ロード計画実行およびロード計画ライフ・サイクルの詳細は、『Oracle Data Integratorでの統合プロジェクトの開発』のロード計画の概要に関する項を参照してください。
セッションのライフ・サイクルは、次のとおりです。
-
実行リクエストがエージェントに送信されるか、またはエージェントがスケジュールから実行をトリガーします。
設計時オブジェクト(マッピング、パッケージなど)に対してOracle Data Integrator Studioから実行がトリガーされた場合、Studioでは、リクエストの送信前に、作業リポジトリ内にセッションのコードが事前に生成されることに注意してください。実行がシナリオから開始された場合は、そのシナリオにすでに事前生成のコードが含まれているため、このフェーズは不要です。
-
エージェントはセッションに対するコードの生成を完了します。エージェントは用意されたコンテキストを使用して、データ・サーバー接続や完全修飾表名などの物理的な情報を解決します。生成されたコードは、「待機中」ステータスのセッションとして作業リポジトリに書き込まれます。
-
エージェントは、セッションの実行に必要なソース・データ・サーバーとターゲット・データ・サーバーへの接続を初期化します。
-
エージェントは実行リクエストを認識します。実行がStudio,から開始されている場合は、「セッションを開始しました」ダイアログが表示されます。
-
エージェントは、このセッションに含まれている各タスクを実行します。これには、セッションのタスクに含まれているコードを実行するデータベース・サーバー、オペレーティング・システムまたはスクリプト・エンジンの機能が使用されます。
-
セッションの処理中に、エージェントはリポジトリ内の実行ログを更新し、実行統計とエラー・メッセージをレポートします。
セッションが開始された後は、オペレータ・ナビゲータなどを使用してそのセッションをログでモニターできます。セッションのモニタリングの詳細は、「統合プロセスのモニタリング」を参照してください。
-
セッションが完了すると、タスクは、保存されるか、このセッションの開始時に指定したログ・レベルの値に従ってログから削除されます。
ノート:
セッションは常に、一意のセッション番号(セッションID)によって識別されます。この番号はセッションをモニタリングしているときに表示できます。また、この番号はセッションの開始時にコマンド行またはWebサービス・インタフェースによっても戻されます。
コマンド行やWebサービスなどの他の場所から実行を開始するときは、同じ実行パラメータを指定して、同じ「セッションを開始しました」フィードバックを受信します。セッションがコマンド行またはWebサービス・インタフェースから同期で開始された場合、そのコマンド行またはWebサービスはセッションが完了するまで待機し、セッション・リターン・コードとエラー・メッセージ(ある場合)を提供します。
マッピング、プロシージャ、パッケージおよびモデル操作の実行
マッピング、プロシージャおよびパッケージは、Oracle Data Integrator Studioのデザイナ・ナビゲータから実行できる設計時オブジェクトです。
-
マッピング実行の詳細は、『Oracle Data Integratorでの統合プロジェクトの開発』のマッピングの実行に関する項を参照してください。
-
プロシージャ実行の詳細は、『Oracle Data Integratorでの統合プロジェクトの開発』のプロシージャの使用に関する項を参照してください。
-
パッケージ実行の詳細は、『Oracle Data Integratorでの統合プロジェクトの開発』のパッケージの実行に関する項を参照してください。
-
モデル操作の詳細は、『Oracle Data Integratorでの統合プロジェクトの開発』のモデルの作成およびリバースエンジニアリングに関する項、モデル内のデータ品質のチェックに関する項およびジャーナル化の設定に関する項を参照してください。
シナリオの実行
シナリオは複数の方法で実行できます。
-
Webサービスからの実行。詳細は、「Webサービスを使用したシナリオの実行」を参照してください。
-
ODIコンソールからの操作。シナリオおよびセッションの管理を参照してください。
ノート:
シナリオを実行する前に、シナリオをデザイナ・ナビゲータで生成するか、またはファイルからインポートする必要があります。詳細は、『Oracle Data Integratorでの統合プロジェクトの開発』のシナリオの使用に関する項を参照してください。
ODI Studioからのシナリオの実行
シナリオは、Oracle Data Integrator Studioのデザイナ・ナビゲータまたはオペレータ・ナビゲータから開始できます。
Oracle Data Integrator Studioからシナリオを開始するには:
- (デザイナ・ナビゲータの)「プロジェクト」ナビゲーション・ツリーまたは(オペレータ・ナビゲータの)「シナリオ」ナビゲーション・ツリーで、シナリオを選択します。
- 右クリックして「実行」を選択します。
- 「実行」ダイアログで実行パラメータを設定します。詳細は、表7-1を参照してください。Oracle Data Integrator Studioに組み込まれているエージェントを使用してシナリオを実行するには、「ローカル(エージェントなし)」を選択します。
- 「OK」をクリックします。
- シナリオでパラメータとして変数が使用されている場合は、「変数値」ダイログが表示されます。セッション変数の値を選択します。変数に対して「最新の値」を選択すると、その変数の現在値が使用され、使用可能な値がない場合は、デフォルト値が使用されます。
エージェントがセッションの処理を開始すると、「セッションを開始しました」ダイアログが表示されます。
ノート:
シナリオを編集して、シナリオの同時実行を制限するかどうかを指定できます。また、同時シナリオをエラーで即時に終了するかどうかを指定したり、待機動作で実行の順番をチェックするためのポーリング頻度(秒)を指定することもできます。詳細は、『Oracle Data Integratorでの統合プロジェクトの開発』のシナリオおよびロード計画の同時実行の制御に関する項を参照してください。
コマンド行からのシナリオの実行
シナリオはコマンド行から開始できます。
コマンド行からシナリオを実行する前に、次の要件を熟読してください:
-
この項で説明するタスクの実行に必要なコマンド行スクリプトは、Oracle Data Integratorスタンドアロン・エージェントまたはスタンドアロン・コロケート・エージェントがインストールされている場合のみ使用できます。スタンドアロン・エージェントまたはスタンドアロン・コロケート・エージェントのインストール方法の詳細は、『Oracle Data Integratorのインストールと構成』を参照してください。
-
このコマンドを使用するには、リポジトリへの接続がドメインで構成されている必要があります。詳細は、『Oracle Data Integratorのインストールと構成』を参照してください。
-
コマンド行からシナリオを開始すると、デフォルトでは、セッションはリモートのランタイム・エージェントに対しては開始されませんが、コマンド行から開始されたローカルのJavaプロセスによって実行されます。このプロセスは、ローカルで中断できますが、実際のランタイム・エージェントではないため、セッション停止シグナルを受信できません。したがって、この方法で開始したセッションをリモートで停止することはできません。
このプロセスは、Oracle Data Integratorオペレータのログで「ローカル(エージェントなし)」で識別されます。この名前は
NAME
パラメータを使用して変更できます。ランタイム・エージェントに対してセッションを開始する場合は、
AGENT_URL
パラメータを使用する必要があります。
コマンド行からシナリオを開始するには:
ノート:
Windowsプラットフォームでは、等号(=)またはスペースを含むコマンド引数は、二重引用符で囲む必要があります。コマンド・コールは、UNIXのコマンド・コールとは異なる場合があります。たとえば:
UNIXの場合
./startscen.sh -INSTANCE=OracleDIAgent1 PKG001 001 GLOBAL -SESSION_NAME=RUN1 -AGENT_URL=http://localhost:20910/oraclediagent
Windowsの場合
startscen.cmd "-INSTANCE=OracleDIAgent1" PKG001 001 GLOBAL "-SESSION_NAME=RUN1" "-AGENT_URL=http://localhost:20910/oraclediagent"
表7-2に、様々なパラメータ(必須とオプションの両方)を示します。パラメータの前にはハイフン(-)を、可能な値の前には等号(=)を付けます。この場合、コマンドを入力するオペレーティング・システムに固有の文字保護の構文に準拠する必要があります。
表7-2 Startscenコマンドのパラメータ
パラメータ | 説明 |
---|---|
|
ドメインで構成されているODIインスタンスの名前。ODIインスタンスでは、シナリオを開始するために使用されるリポジトリ構成を定義します(必須)。 このパラメータは、 |
|
シナリオの名前(必須)。 |
|
シナリオのバージョン(必須)。指定したバージョンが-1の場合は、そのシナリオの最新バージョンが実行されます。 |
|
実行コンテキストのコード(必須)。 |
|
保持するロギング情報のレベル。 このパラメータの形式は 例: |
|
このセッションを実行するランタイム・エージェントのURL。このパラメータを設定した場合、 一般的なエージェントURLの形式は 例: |
|
リモート・エージェントの非同期実行には、Yesに設定します。 非同期実行が使用されている場合、シナリオのセッションIDが戻されます。 |
|
このセッションの実行ログに、 注意:
既存のいずれの物理エージェント名とも一致しない 指定の物理エージェントに対してセッションを開始する場合は、かわりに |
|
実行ログに表示するセッションの名前。指定しない場合は、シナリオ名がセッション名として使用されます。 |
|
このセッションに関連付けられているキーワードのリスト。これらのキーワードによって、セッションの識別が容易になります。このリストは、カンマ区切りのキーワード・リストです。 |
|
このパラメータは、複数の変数を割り当てる際に反復できます。 startscenコマンド行では、変数名の接頭辞にハッシュ記号( |
セッションの再開
エラーが発生したセッション、またはユーザーが停止したセッションは再開できます。
Oracle Data Integratorは、ソース・データ・サーバーおよびターゲット・データ・サーバーとの対話時にJDBCトランザクションを使用し、セッションがエラー状態で終了した場合、オープン・トランザクションの状態は永続化されません。適切な再起動ポイントは、未完了のトランザクションを起動したタスクです。そのような再起動ポイントが特定できない場合、エラー状態にある既存のセッションを再開するのではなく、シナリオを実行することで新たなセッションを開始することをお薦めします。
再開できるのは、ステータスが「エラー」または「待機中」のセッションのみです。デフォルトで、セッションは、実行に失敗した最後のタスク(通常は、エラー状態または待機状態のタスク)から再開されます。既存のステージング表での処理を続行し、長い時間のかかるロード・フェーズの再実行を回避するために、セッションを再開する必要がある場合もあります。その場合、ユーザーは、KM固有のトランザクション管理を考慮に入れる必要があります。一般的なガイドラインとしては、ロード・タスクでクラッシュが発生した場合、失敗したロード・タスクから再起動できます。統合フェーズでクラッシュが発生した場合、ターゲットへの統合はトランザクション内で行われるため、最初の統合タスクから再起動します。このガイドラインは、一度に1つのマッピングにのみ適用されます。複数のマッピングが連鎖しており、最後のマッピングのみがコミットされている場合、トランザクションは複数のインタフェースにわたって実行されるため、それらの複数のマッピングをすべて再起動する必要があります。
特定のタスクまたはステップから再起動するには:
-
オペレータ・ナビゲータで、このタスクまたはステップに移動し、それを編集して、「待機中」状態に切り替えます。
-
「オペレータ」ツリー・ビューで、これ以降のすべてのタスクおよびステップを「待機中」状態に設定します。
-
次のいずれかの方法を使用して、セッションを再開します。
-
Webサービスからの実行。詳細は、「Webサービスを使用したセッションの再開」を参照してください。
-
ODIコンソールからの操作。シナリオおよびセッションの管理を参照してください。
警告:
セッションが再開されると、ソース・システムとターゲット・システムへのすべての接続とトランザクションが再度作成され、前回のセッション実行からリカバリされることはありません。したがって、前回の実行からのトランザクションで未コミットの操作が適用されることはありません。また、セッションの正常な続行に必要なデータが存在しない可能性があります。
ODI Studioからのセッションの再開
Oracle Data Integrator Studioからセッションを再開するには:
Oracle Data Integratorでセッションが再開されると、「セッションを開始しました」ダイアログが表示されます。
コマンド行からのセッションの再開
コマンド行からセッションを再開する前に、次の要件を熟読してください。
-
この項で説明するタスクの実行に必要なコマンド行スクリプトは、Oracle Data Integratorスタンドアロン・エージェントまたはスタンドアロン・コロケート・エージェントがインストールされている場合のみ使用できます。スタンドアロン・エージェントまたはスタンドアロン・コロケート・エージェントのインストール方法の詳細は、『Oracle Data Integratorのインストールと構成』を参照してください。
-
このコマンドを使用するには、リポジトリへの接続がドメインで構成されている必要があります。詳細は、『Oracle Data Integratorのインストールと構成』を参照してください。
-
コマンド行からセッションを再開すると、デフォルトでは、そのセッションはリモートのランタイム・エージェントに対しては開始されませんが、コマンド行から開始されたローカルのJavaプロセスによって実行されます。このプロセスは、ローカルで中断できますが、実際のランタイム・エージェントではないため、セッション停止シグナルを受信できません。したがって、この方法で開始したセッションをリモートで停止することはできません。
ランタイム・エージェントに対してセッションを開始する場合は、
AGENT_URL
パラメータを使用する必要があります。
コマンド行からセッションを再開するには:
表7-3に、このコマンドの様々なパラメータ(必須とオプションの両方)を示します。パラメータの前にはハイフン(-)を、可能な値の前には等号(=)を付けます。この場合、コマンドを入力するオペレーティング・システムに固有の文字保護の構文に準拠する必要があります。
表7-3 restartsessコマンドのパラメータ
パラメータ | 説明 |
---|---|
|
ドメインで構成されているODIインスタンスの名前。ODIインスタンスでは、セッションを再開するために使用されるリポジトリ構成を定義します(必須)。 |
|
再開するセッションの番号(ID)。 |
|
保持するロギング情報のレベル。ログ・レベル6は、ログ・レベル5と動作は同じですが、変数の追跡が追加されていることに注意してください。セッション再開時にこのlog_levelパラメータが入力されていないと、セッションの実行に使用された前回のログ・レベルが再利用されることに注意してください。詳細は、『Oracle Data Integratorでの統合プロジェクトの開発』の変数および順序の追跡に関する項を参照してください。 |
|
このセッションを再開するランタイム・エージェントのURL。デフォルトでは、セッションは、コマンド行から開始されたローカルのJavaプロセスによって実行されます。 |
セッションの停止
実行中または待機中のセッションは停止できます。たとえば、マッピングにエラーが含まれていることに気付いた場合、または実行時間が長い場合は、セッションを停止する必要がある場合があります。セッションを停止するには、特定の権限が必要になります。詳細は、「セッション」を参照してください。
セッションを停止する方法は次の2通りあることに注意してください。
-
標準: セッションは、現在のタスクの終了後に停止されます。
-
即時: 現在のタスクがすぐに中断されてセッションが停止されます。このモードを使用すると、長時間実行されているタスク、たとえば長いSQL文をその完了前に停止できます。
ノート:
即時停止は、タスクの中断をサポートするテクノロジとドライバがある場合のみ機能します。タスクの中断は、statement.cancel
メソッドがJDBCドライバで実装されている場合にサポートされます。
ノート:
停止できるセッションは、Java EEエージェント、スタンドアロン・エージェントまたはスタンドアロン・コロケート・エージェント内で実行されているセッションのみです。Studioの組込みエージェントで実行されているセッション、あるいはAGENT_URL
パラメータを指定せずにstartscen.sh
またはstartscen.cmd
スクリプトで開始されたセッションは停止できません。詳細は、「シナリオの実行」を参照してください。
セッションは複数の方法で停止できます。
-
ODIコンソールからの操作。シナリオおよびセッションの管理を参照してください。
ODI Studioからのセッションの停止
Oracle Data Integrator Studioからセッションを停止するには:
- オペレータ・ナビゲータで、停止する実行中または待機中のセッションをツリーから選択します。
- 右クリックして「標準停止」または「即時停止」を選択します。
- 「セッションの停止」ダイアログで「OK」をクリックします。
セッションが停止され、ステータスが「エラー」に変更されます。
コマンド行からのセッションの停止
コマンド行からセッションを停止する前に、次の要件を熟読してください。
-
この項で説明するタスクの実行に必要なコマンド行スクリプトは、Oracle Data Integratorスタンドアロン・エージェントまたはスタンドアロン・コロケート・エージェントがインストールされている場合のみ使用できます。スタンドアロン・エージェントまたはスタンドアロン・コロケート・エージェントのインストール方法の詳細は、『Oracle Data Integratorのインストールと構成』を参照してください。
-
このコマンドを使用するには、リポジトリへの接続がドメインで構成されている必要があります。詳細は、『Oracle Data Integratorのインストールと構成』を参照してください。
コマンド行からセッションを停止するには:
表7-4に、このコマンドの様々なパラメータ(必須とオプションの両方)を示します。パラメータの前にはハイフン(-)を、可能な値の前には等号(=)を付けます。この場合、コマンドを入力するオペレーティング・システムに固有の文字保護の構文に準拠する必要があります。
表7-4 StopSessionコマンドのパラメータ
パラメータ | 説明 |
---|---|
|
ドメインで構成されているODIインスタンスの名前。ODIインスタンスでは、セッションを停止するために使用されるリポジトリ構成を定義します(必須)。 |
|
停止するセッションの番号(ID)。 |
|
このセッションを停止するランタイム・エージェントのURL。デフォルトでは、セッションは、コマンド行から開始されたローカルのJavaプロセスによって実行されます。 |
|
実行中のセッションの停止に使用するレベル。省略すると、 |
ロード計画の実行
ロード計画は複数の方法で実行できます。
-
Webサービスからの実行。詳細は、「Webサービスを使用したロード計画の実行」を参照してください。
-
ODIコンソールからの操作。ロード計画の管理を参照してください。
ノート:
ロード計画は、「ローカル(エージェントなし)」のODI Studioの組込みエージェントを使用して実行することはできません。
ODI Studioからのロード計画の実行
ODI Studioでは、デザイナ・ナビゲータまたはオペレータ・ナビゲータでロード計画を実行できます。
デザイナ・ナビゲータまたはオペレータ・ナビゲータでロード計画を実行するには:
ロード計画の新規の実行が開始されます。ロード計画インスタンスが作成され、最初のロード計画が実行されます。ロード計画実行はオペレータ・ナビゲータで確認できます。
ノート:
ロード計画を作成または編集して、ロード計画の同時実行を制限するかどうかを指定できます。また、同時ロード計画をエラーで即時に終了するかどうかを指定したり、待機動作で実行の順番をチェックするためのポーリング頻度(秒)を指定することもできます。詳細は、『Oracle Data Integratorでの統合プロジェクトの開発』のロード計画の作成に関する項を参照してください。
コマンド行からのロード計画の実行
コマンド行からロード計画を開始できます。
コマンド行からロード計画を実行する前に、次の要件を熟読してください。
-
この項で説明するタスクの実行に必要なコマンド行スクリプトは、Oracle Data Integratorスタンドアロン・エージェントまたはスタンドアロン・コロケート・エージェントがインストールされている場合のみ使用できます。スタンドアロン・エージェントまたはスタンドアロン・コロケート・エージェントのインストール方法の詳細は、『Oracle Data Integratorのインストールと構成』を参照してください。
-
このコマンドを使用するには、リポジトリへの接続がドメインで構成されている必要があります。詳細は、『Oracle Data Integratorのインストールと構成』を参照してください。
-
ロード計画実行は、
AGENT_URL
パラメータで識別されたランタイム・エージェントに対して開始されます。
コマンド行からロード計画を開始するには:
ノート:
Windowsプラットフォームでは、等号(=)またはスペースを含むコマンド引数は、二重引用符で囲む必要があります。コマンド・コールは、UNIXのコマンド・コールとは異なる場合があります。たとえば:
UNIXシステムの場合:
./startloadplan.sh -INSTANCE=OracleDIAgent1 DWLoadPlan DEV -AGENT_URL=http://localhost:20910/oraclediagent
Windowsシステムの場合:
startloadplan.cmd "-INSTANCE=OracleDIAgent1" DWLoadPlan DEV "-AGENT_URL=http://localhost:20910/oraclediagent"
表7-5に、様々なパラメータ(必須とオプションの両方)を示します。パラメータの前にはハイフン(-)を、可能な値の前には等号(=)を付けます。この場合、コマンドを入力するオペレーティング・システムに固有の文字保護の構文に準拠する必要があります。
表7-5 Startloadplanコマンドのパラメータ
パラメータ | 説明 |
---|---|
|
ドメインで構成されているODIインスタンスの名前。ODIインスタンスでは、ロード計画を開始するために使用されるリポジトリ構成を定義します(必須)。 |
|
開始するロード計画の名前(必須)。 |
|
ロード計画の開始に使用するコンテキストのコード。この値を指定しない場合、ロード計画ではコール側セッションのコンテキストが使用されます(必須)。 |
|
保持するロギング情報のレベル。この値以下のログ・レベルが定義されているすべてのセッションは、セッション完了時に、セッション・ログに保持されます。ただし、オブジェクトの実行が異常終了した場合は、この設定にかかわらず、すべてのタスクが保持されます。 ログ・レベル6は、ログ・レベル5と動作は同じですが、変数の追跡が追加されていることに注意してください。デフォルトは、ロード計画の「セッション・タスクのログ・レベル」(ロード計画の開始に使用されたレベル)です。詳細は、『Oracle Data Integratorでの統合プロジェクトの開発』の変数および順序の追跡に関する項を参照してください。 |
|
ロード計画を開始する物理エージェントのURL(必須)。 |
|
セッション・フォルダおよび自動分類によるODIログの編成を促進するためのキーワード。このロード計画に関連付けるキーワードのカンマ区切りリストを入力します。 |
|
ロード計画変数の起動値(オプション)。プロジェクト変数は 日付および数値変数の書式は、次のとおりです:
たとえば:
|
[-SYNC=(no|yes)] |
ロード計画の同期呼出し。 はい - 同期。 ロード計画を開始し、ロード計画実行がDoneステータスまたはErrorステータスのいずれかで完了するまで待機します。 いいえ - 非同期(デフォルト)。 ロード計画を開始し、ロード計画実行が完了するのを待機せずに返されます。 |
[-POLLINT=<msec> ]
|
このパラメータは、-SYNCがYesの場合にのみ適用されます。 完了状態のロード計画実行のステータスのポーリング間に待機する期間(ミリ秒単位)。 値は> 0にする必要があります。 デフォルト値は1000(1秒)です。 |
ロード計画実行の再開
ロード計画を再開すると、選択したロード計画インスタンスに対する新規の実行が開始します。ロード計画の再開では、エラーになったステップの「再開タイプ」パラメータにより、ロード計画および子セッションの再開方法が定義されます。詳細は、『Oracle Data Integratorでの統合プロジェクトの開発』の再開動作の定義に関する項およびセッションの再開に関する項を参照してください。
ノート:
ロード計画インスタンスの再開は、最近の(最大番号の)実行ステータスに依存します。再開が有効になるのは、最近の実行ステータスが「エラー」の場合のみです。
ロード計画は複数の方法で再開できます。
-
Webサービスからの実行。詳細は、「Webサービスを使用したロード計画インスタンスの再開」を参照してください。
-
ODIコンソールからの操作。ロード計画の管理を参照してください。
ODI Studioからのロード計画の再開
ODI Studioからロード計画を再開するには:
- オペレータ・ナビゲータで、「ロード計画実行」ナビゲーション・ツリーから再開するロード計画実行を選択します。
- 右クリックして「再開」を選択します。
- 「ロード計画の再開」ダイアログで、ロード計画を再開するエージェントを選択します。オプションで、異なるログ・レベルを選択します。
- 「OK」をクリックします。
ロード計画が再開され、新規のロード計画実行が作成されます。
コマンド行からのロード計画の再開
コマンド行からロード計画を再開する前に、次の要件を熟読してください。
-
この項で説明するタスクの実行に必要なコマンド行スクリプトは、Oracle Data Integratorスタンドアロン・エージェントまたはスタンドアロン・コロケート・エージェントがインストールされている場合のみ使用できます。スタンドアロン・エージェントまたはスタンドアロン・コロケート・エージェントのインストール方法の詳細は、『Oracle Data Integratorのインストールと構成』を参照してください。
-
このコマンドを使用するには、リポジトリへの接続がドメインで構成されている必要があります。詳細は、『Oracle Data Integratorのインストールと構成』を参照してください。
-
ロード計画実行は、
AGENT_URL
パラメータで識別されたリモート・ランタイム・エージェントに対して再開されます。
コマンド行からロード計画を再開するには:
ノート:
Windowsプラットフォームでは、等号(=)またはスペースを含むコマンド引数は、二重引用符で囲む必要があります。コマンド・コールは、UNIXのコマンド・コールとは異なる場合があります。
表7-6に、様々なパラメータ(必須とオプションの両方)を示します。パラメータの前にはハイフン(-)を、可能な値の前には等号(=)を付けます。この場合、コマンドを入力するオペレーティング・システムに固有の文字保護の構文に準拠する必要があります。
表7-6 Restartloadplanコマンドのパラメータ
パラメータ | 説明 |
---|---|
|
ドメインで構成されているODIインスタンスの名前。ODIインスタンスでは、ロード計画を再開するために使用されるリポジトリ構成を定義します(必須)。 |
<load_plan_instance_id> |
停止または失敗となり、再開するロード計画インスタンスのID(必須)。 |
[log_level] |
保持するロギング情報のレベル。この値以下のログ・レベルが定義されているすべてのセッションは、セッション完了時に、セッション・ログに保持されます。ただし、オブジェクトの実行が異常終了した場合は、この設定にかかわらず、すべてのタスクが保持されます。 ログ・レベル6は、ログ・レベル5と動作は同じですが、変数の追跡が追加されていることに注意してください。デフォルトは、ロード計画の前回の実行に使用されたログ・レベルの値です。 詳細は、『Oracle Data Integratorでの統合プロジェクトの開発』の変数および順序の追跡に関する項を参照してください。 |
["-AGENT_URL=<agent_url>"] |
ロード計画を開始する物理エージェントのURL(オプション)。 |
[-SYNC=(no|yes)] |
ロード計画の同期呼出し。 はい - 同期。 ロード計画を開始し、ロード計画実行がDoneステータスまたはErrorステータスのいずれかで完了するまで待機します。 いいえ - 非同期(デフォルト)。 ロード計画を開始し、ロード計画実行が完了するのを待機せずに返されます。 |
[-POLLINT=<msec> ]
|
このパラメータは、-SYNCがYesの場合にのみ適用されます。 完了状態のロード計画実行のステータスのポーリング間に待機する期間(ミリ秒単位)。 値は> 0にする必要があります。 デフォルト値は1000(1秒)です。 |
ロード計画実行の停止
実行中または待機中のロード計画実行を停止できます。たとえば、ロード計画にエラーが含まれていることに気付いた場合、または実行時間が長い場合は、ロード計画実行を停止することがあります。
ロード計画実行を停止する方法は2通りあることに注意してください:
-
標準停止: 標準停止モードでは、ロード計画の停止を担当するエージェントが、このロード計画のセッションを実行している各エージェントに、標準停止シグナルを送信します。各エージェントは、セッションの現在のタスクが完了するのを待機し、その後、セッションをエラーで終了します。ロード計画によって例外ステップが実行されることはありません。すべての例外が終了すると、ロード計画はエラー状態に移行されます。
-
即時停止: 即時停止モードでは、ロード計画の停止を担当するエージェントが、このロード計画のセッションを実行している各エージェントに、即時停止シグナルを送信します。各エージェントは、セッションの現在のタスクが完了するのを待機せずに、セッションをエラーで即時に終了します。ロード計画によって例外ステップが実行されることはありません。すべての例外が終了すると、ロード計画はエラー状態に移行されます。
ロード計画は複数の方法で停止できます。
-
Webサービスからの実行。詳細は、「Webサービスを使用したロード計画実行の停止」を参照してください。
-
ODIコンソールからの操作。ロード計画の管理を参照してください。
ODI Studioからのロード計画の停止
ODI Studioからロード計画実行を停止するには:
- オペレータ・ナビゲータで、「ロード計画実行」ナビゲーション・ツリーから(実行中または待機中の)停止するロード計画実行を選択します。
- 右クリックして「標準停止」または「即時停止」を選択します。
- 「ロード計画実行の停止」ダイアログで、ロード計画を停止するエージェントを選択します。
- 「OK」をクリックします。
ロード計画実行が停止され、ステータスが「エラー」に変更されます。
コマンド行からのロード計画実行の停止
コマンド行からロード計画を停止する前に、次の要件を熟読してください。
-
この項で説明するタスクの実行に必要なコマンド行スクリプトは、Oracle Data Integratorスタンドアロン・エージェントまたはスタンドアロン・コロケート・エージェントがインストールされている場合のみ使用できます。スタンドアロン・エージェントまたはスタンドアロン・コロケート・エージェントのインストール方法の詳細は、『Oracle Data Integratorのインストールと構成』を参照してください。
-
このコマンドを使用するには、リポジトリへの接続がドメインで構成されている必要があります。詳細は、『Oracle Data Integratorのインストールと構成』を参照してください。
-
ロード計画実行シグナルは、
AGENT_URL
パラメータで識別されたリモート・ランタイム・エージェントによって送信されます。
コマンド行からロード計画実行を停止するには:
表7-7に、様々なパラメータ(必須とオプションの両方)を示します。パラメータの前にはハイフン(-)を、可能な値の前には等号(=)を付けます。この場合、コマンドを入力するオペレーティング・システムに固有の文字保護の構文に準拠する必要があります。
表7-7 Stoploadplanコマンドのパラメータ
パラメータ | 説明 |
---|---|
|
ドメインで構成されているODIインスタンスの名前。ODIインスタンスでは、ロード計画を停止するために使用されるリポジトリ構成を定義します(必須)。 |
<load_plan_instance_id> |
停止する実行中のロード計画実行のID(必須)。 |
[<load_plan_run_count>] |
ロード計画インスタンスのロード計画実行カウント。最新のロード計画実行が誤って停止されないようにします。これを省略すると、最新のロード計画実行カウントが使用されます(オプション)。 |
["-AGENT_URL=<agent_url>"] |
ロード計画を開始する物理エージェントのURL(オプション)。 |
[-STOP_LEVEL=<normal (デフォルト) | immediate>] |
ロード計画実行の停止に使用するレベル。デフォルトは |
ノート:
Windowsプラットフォームでは、等号(=)またはスペースを含むコマンド引数は、二重引用符で囲む必要があります。コマンド・コールは、UNIXのコマンド・コールとは異なる場合があります。
シナリオとロード計画のスケジューリング
シナリオおよびロード計画の実行は、Oracle Data Integrator組込みスケジューラまたは外部スケジューラを使用してスケジュールできます。この項では、この2つの方法を説明します。
組込みスケジューラを使用したシナリオまたはロード計画のスケジューリング
スケジュールは、シナリオおよびロード計画に関連付けることができます。このようなスケジュールは、スケジューラ組込みのランタイム・エージェントによって管理されます。
シナリオやロード計画には複数のスケジュールを指定でき、複数の方法でスケジュールできますが、1つのスケジュールに関連するシナリオまたはロード計画は1つのみという要件を理解することが重要です。シナリオまたはロード計画の「スケジューリング」ノードの下には、様々なスケジュールが表示されます。各スケジュールには、開始日と反復サイクルを指定できます。
たとえば:
-
スケジュール1: 毎週木曜日の午後9時、1回のみ
-
スケジュール2: 毎日午前8時から午後12時まで、5秒ごとに繰返し
-
スケジュール3: 毎日午後2時から午後6時まで、5秒ごとに繰返し、最大サイクル期間は5時間
ノート:
- スケジュールをスキップしないように、リポジトリの構成済タイムゾーンでスケジュール・プランを作成してください。
- 構成済タイムゾーンは、マスター・リポジトリ情報の一部として使用でき、デフォルトでは
PST8PDT
に設定されています。
<MW_HOME>/odi/studio/bin/odi.conf
に次の行を追加します:AddVMOption -Duser.timezone=<repository configured timezone>
PST8PDT
)と一致するようにODI Studioを構成するには、次のコマンドを使用して、ファイルodi.conf
にタイムゾーンを設定します:AddVMOption -Duser.timezone=PST8PDT
シナリオまたはロード計画のスケジューリング
Oracle Data Integrator Studioからシナリオまたはロード計画をスケジュールするには:
新しいスケジュールが、シナリオまたはロード計画の「スケジューリング」ノードの下に表示されます。
スケジュール変更は、ランタイム・エージェントの開始時またはランタイム・エージェントによるスケジュール更新リクエストの受信時に反映されます。
エージェントのスケジュールの更新
エージェントは開始時に、接続しているマスター・リポジトリに添付されているすべてのリポジトリのスケジュールを読み取ります。特定のリポジトリでこのエージェントのスケジュールが追加された場合は、そのエージェント・スケジュールをリフレッシュできます。
エージェントのスケジュールを更新するには:
- トポロジ・ナビゲータで、「物理アーキテクチャ」ナビゲーション・ツリーにある「エージェント」ノードを展開します。
- スケジュールを更新する物理エージェントを選択します。
- 右クリックして「スケジューリングの更新」を選択します。
- 「リポジトリの選択」ダイアログで、スケジューリング情報を読み取るリポジトリを選択します。すべてのリポジトリからスケジューリング情報を読み取るには、「すべての作業リポジトリを選択」を選択します。
- 「OK」をクリックします。
エージェントは、これらのリポジトリに定義されているスケジュールから、エージェント自体のメモリー内スケジュールをリフレッシュして再計算します。
また、OdiUpdateAgentScheduleツールを使用してエージェントのスケジュールを更新することもできます(『Oracle Data Integratorツール・リファレンス』のOdiUpdateAgentScheduleに関する項を参照)。
スケジュールの表示
すべてのエージェントのスケジュールされたタスク、または特定のエージェントのスケジュールされたタスクを表示できます。
ノート:
スケジューリング情報は、エージェントのメモリー内スケジュールから取得されます。正確なスケジュール情報を表示するためには、エージェントが開始され、そのスケジュールがリフレッシュされている必要があります。
すべてのエージェントのスケジュールの表示
すべてのエージェントのスケジュールを表示するには:
-
オペレータ・ナビゲータのツールバー・メニューから、「ナビゲータの接続」→「スケジューリング」の順に選択します。
「スケジュールの表示」ダイアログに、すべてのエージェントのスケジュールが表示されます。
1つのエージェントのスケジュールの表示
1つのエージェントのスケジュールを表示するには:
- トポロジ・ナビゲータで、「物理アーキテクチャ」ナビゲーション・ツリーにある「エージェント」ノードを展開します。
- スケジュールを更新する物理エージェントを選択します。
- 右クリックして「スケジュールの表示」を選択します。
スケジュール・エディタに、このエージェントのスケジュールが表示されます。
ノート:
「スケジューリング情報」は、エージェントのスケジュールから取得されます。正確なスケジュール情報を表示するためには、エージェントが開始され、そのスケジュールがリフレッシュされている必要があります。
例7-1 「スケジュールの表示」ダイアログの使用
スケジュールはガント・ダイアグラムの形式で表示されます。表7-8に、「スケジュール」ダイアログの詳細を示します。
表7-8 スケジューリング詳細
パラメータ | 説明 |
---|---|
選択したエージェント |
スケジュールが表示されるエージェント。「すべてのエージェント」を選択して、すべてのエージェントのスケジュールを表示することもできます。 |
選択した作業リポジトリ |
選択した作業リポジトリで実行されたシナリオのみがスケジュールに表示されます。デフォルトは「すべての作業リポジトリ」です。 |
スケジュールの範囲 |
スケジュールが表示される時間範囲。このスケジュールをリフレッシュするには、「リフレッシュ」をクリックします。 |
更新 |
選択したエージェントのスケジュールを更新するには、「更新」をクリックします。 |
時間範囲 |
指定した時間範囲(1時間、2時間など)を使用して、現在時刻にこの時間を加え、ダイアグラムをその中央に配置できます。この機能により、進行中のセッションと着信セッションを視覚化できます。矢印を使用すると、範囲を前方または後方に移動できます。 |
シナリオ詳細 |
このパネルには、スケジュールされた各シナリオの詳細と実行統計が表示されます。 |
(マウス・ボタンを押したまま)ダイアグラム内のゾーンを選択すると、選択したゾーンに自動的にズームできます。
ダイアグラム内で右クリックするとコンテキスト・メニューが表示され、ズーム、ダイアグラムをイメージ・ファイルとして保存、表示プロパティの印刷または編集の各操作を実行できます。
外部スケジューラを使用したシナリオまたはロード計画のスケジューリング
外部スケジューラを使用してシナリオまたはロード計画を開始するには、次のいずれかの方法で実行します。
-
外部スケジューラでのstartscenまたはstartloadplanコマンドの使用
-
シナリオまたはロード計画実行をトリガーするWebサービス・インタフェースの使用
詳細は、次を参照してください。
シナリオまたはロード計画が正常に完了した場合、リターン・コードは0です。正常に完了しない場合のリターン・コードは、0以外です。このコードは次の応答で使用されます。
-
コマンド行コールのリターン・コード。エラー・メッセージ(ある場合)は、標準エラー出力に含まれます。
-
Webサービス・コールのSOAPレスポンス。Webサービス・レスポンスには、セッション・エラー・メッセージ(ある場合)も含まれています。
実行のシミュレーション
Oracle Data Integratorでは、設計時に実行をシミュレーションできます。実行をシミュレーションすると、その実行に対応するコードが、このコードを実行せずに生成されて表示されます。実行シミュレーションによって、コード確認に適したレポートが提供されます。
ノート:
シミュレーション・モードで実行が開始された場合、ログにはセッションが作成されません。
実行をシミュレーションするには:
- デザイナ・ナビゲータの「プロジェクト」ビューで、実行するオブジェクトを選択します。
- 右クリックして「実行」を選択します。
- 「実行」ダイアログで実行パラメータを設定し、「シミュレーション」を選択します。詳細は、表7-1を参照してください。
- 「OK」をクリックします。
シミュレーション・レポートが表示されます。
「保存」をクリックすると、レポートを.xml
ファイルまたは.html
ファイルとして保存できます。
Webサービスを使用した実行の管理
この項では、Webサービスを使用してランタイム操作を実行する方法について説明します。この章には次の項目があります。
ランタイムWebサービスの概要
Oracle Data Integratorには、ランタイム操作を実行するためのWebサービスが含まれています。これらのWebサービスは次の場所にあります。
-
ランタイム・エージェントでは、Webサービスを使用して、シナリオまたはロード計画の開始、セッション・ステータスまたはロード計画実行ステータスのモニタリング、セッションまたはロード計画インスタンスの再開、およびロード計画実行の停止を操作できます。このWebサービスから操作を使用するには、最初にスタンドアロン・エージェントまたはJava EEエージェントをインストールして構成する必要があります。
次の内容は、エージェントおよび公開Webサービスに対して使用されるSOAPリクエストに適用されます。
-
Webサービス操作では、SOAPリクエストにあるプレーンテキストのパスワードを受け入れます。したがって、保護されていないネットワーク上でWebサービスを呼び出すには、保護されたプロトコル(HTTPS)を使用することをお薦めします。または、外部認証も使用できます。詳細は、「外部認証によるランタイムWebサービスの使用」を参照してください。
-
エージェントまたは公開Webサービス・コンポーネントはマスター・リポジトリに接続するように構成されているため、SOAPリクエストにリポジトリ接続情報は必要ありません。ほとんどの操作の実行で必要なのは、ODIユーザーと作業リポジトリの名前のみです。
Webサービスを使用したシナリオの実行
エージェントWebサービスのinvokeStartScen
操作は、指定の作業リポジトリ内で、シナリオを同期または非同期モードで開始します。セッションは、Webサービスを提供しているエージェントによって実行されます。
<OdiStartScenRequest> <Credentials> <OdiUser>odi_user</OdiUser> <OdiPassword>odi_password</OdiPassword> <WorkRepository>work_repository</WorkRepository> </Credentials> <Request> <ScenarioName>scenario_name</ScenarioName> <ScenarioVersion>scenario_version</ScenarioVersion> <Context>context</Context> <LogLevel>log_level</LogLevel> <Synchronous>synchronous</Synchronous> <SessionName>session_name</SessionName> <Keywords>session_name</Keywords> <Variables> <Name>variable_name</name> <Value>variable_value</Value> </Variables> </Request> </OdiStartScenRequest>
ノート:
前述のxmlに追加する変数が複数ある場合は、次のコマンドを使用します:
<Variables>
<Name>variable_name1</name>
<Value>variable_value1</Value>
</Variables>
<Variables>
<Name>variable_name2</name>
<Value>variable_value2</Value>
</Variables>
シナリオの実行によって、リクエストのsynchronous
要素の値に応じたレスポンスでセッションIDが戻されます。
-
同期モード(
Synchronous
=1)では、セッションが完了するとレスポンスが戻され、レスポンスに実行結果が反映されます。 -
非同期モード(
Synchronous
=0)では、セッションが開始されるとレスポンスが戻され、セッションが正しく開始されたかどうかの事実のみが示されます。
この操作では、次の形式でレスポンスが戻されます。
<?xml version = '1.0' encoding = 'ISO-8859-1'?><ns2:OdiStartScenResponse xmlns:ns2="xmlns.oracle.com/odi/OdiInvoke/"> <Session>543001</Session></ns2:OdiStartScenResponse>
Webサービスを使用したセッション・ステータスのモニタリング
エージェントWebサービスのgetSessionStatus
操作では、指定リポジトリ内の1つ以上のセッションのステータスが、SessionIds
要素に指定したセッション番号で識別されて戻されます。実行中のセッションと完了したセッションの両方が管理されます。
<OdiGetSessionsStatusRequest> <Credentials> <OdiUser>odi_user</OdiUser> <OdiPassword>odi_password</OdiPassword> <WorkRepository>work_repository</WorkRepository </Credentials> <SessionIds>session_number</SessionIds> </OdiGetSessionsStatusRequest>
この操作では、次の形式でレスポンスが戻されます。
<SessionStatusResponse> <SessionId>session_id</SessionId> <SessionStatus>status_code</SessionStatus> <SessionReturnCode>return_code</SessionReturnCode> </SessionStatusResponse>
正常に終了したセッションのリターン・コードはゼロです。可能性のあるステータス・コードは、次のとおりです:
-
D: 完了
-
E: エラー
-
M: 警告
-
Q: キュー化
-
R: 実行中
-
W: 待機中
Webサービスを使用したセッションの再開
エージェントWebサービスのinvokeRestartSess
操作では、指定作業リポジトリ内のセッション番号(SessionID
要素に指定)で識別されたセッションが再開されます。セッションは、Webサービスを提供しているエージェントによって実行されます。
再開できるのは、ステータスが「エラー」または「待機中」のセッションのみです。セッションは、最後の未完了タスク(通常はエラーが発生したタスク)から再開されます。
変数の値を変更したり、KeepVariables
ブール要素を使用して前回のセッション実行からの変数値を再利用できることに注意してください。
<invokeRestartSessRequest> <Credentials> <OdiUser>odi_user</OdiUser> <OdiPassword>odi_password</OdiPassword> <WorkRepository>work_repository</WorkRepository> </Credentials> <Request> <SessionID>session_number</SessionID> <Synchronous>synchronous</Synchronous> <KeepVariables>0|1</KeepVariables> <LogLevel>log_level</LogLevel> <Variables> <Name>variable_name</name> <Value>variable_value</Value> </Variables> </Request> </invokeRestartSessRequest>
この操作では、Synchronous
要素の値に従って、InvokeStartScen
と同様のレスポンスが戻されます。
Webサービスを使用したロード計画の実行
エージェントWebサービスのinvokeStartLoadPlan
操作では、指定作業リポジトリ内のロード計画が開始されます。ロード計画はWebサービスを提供するエージェントによって実行されます。invokeStartLoadPlan
操作のパラメータについて、次のことに注意してください。
-
OdiPassword
: クリアテキストのパスワードを使用します。 -
Context
: コンテキスト・コードを使用します。 -
Keywords
: 複数のキーワードを使用する場合は、キーワードのカンマ区切りリストを入力します。 -
Name
: 変数には完全修飾名(GLOBAL.variable_name
またはPROJECT_CODE.variable_name
)を使用します。
次に、OdiStartLoadPlanRequestの記述形式を示します。
<OdiStartLoadPlanRequest> <Credentials> <OdiUser>odi_user</OdiUser> <OdiPassword>odi_password</OdiPassword> <WorkRepository>work_repository</WorkRepository> </Credentials> <StartLoadPlanRequest> <LoadPlanName>load_plan_name</LoadPlanName> <Context>context</Context> <Keywords>keywords</Keywords> <LogLevel>log_level</LogLevel> <LoadPlanStartupParameters> <Name>variable_name</Name> <Value>variable_value</Value> </LoadPlanStartupParameters> </StartLoadPlanRequest> </OdiStartLoadPlanRequest>
invokeStartLoadPlan
操作のレスポンスでは、次の値が戻されます。
-
ロード計画実行ID
-
ロード計画実行カウント
-
マスター・リポジトリID
-
マスター・リポジトリ・タイムスタンプ
次に、OdiStartLoadPlan
レスポンスの例を示します。
<?xml version = '1.0' encoding = 'UTF8'?> <ns2:OdiStartLoadPlanResponse xmlns:ns2="xmlns.oracle.com/odi/OdiInvoke/"> <executionInfo> <StartedRunInformation> <OdiLoadPlanInstanceId>2001</OdiLoadPlanInstanceId> <RunCount>1</RunCount> <MasterRepositoryId>0</MasterRepositoryId> <MasterRepositoryTimestamp>1290196542926</MasterRepositoryTimestamp> </StartedRunInformation> </executionInfo> </ns2:OdiStartLoadPlanResponse>
Webサービスを使用したロード計画実行の停止
エージェントWebサービスのinvokeStopLoadPlan
操作では、インスタンスIDと実行番号によって識別された、指定作業リポジトリ内の実行中のロード計画実行が停止されます。ロード計画インスタンスは、Webサービスを提供するエージェントによって停止されます。StopLevel
パラメータには、次の値を指定できます。
-
NORMAL
: 現在のタスクが終了するまで待機してからセッションを停止します。 -
IMMEDIATE
: セッションを即時に停止します。オープン中のすべての文が取り消され、トランザクションがロールバックされます。
ロード計画実行の停止方法の詳細は、「ロード計画実行の停止」を参照してください。invokeStopLoadPlan
操作で使用するその他のパラメータの詳細は、「Webサービスを使用したロード計画の実行」を参照してください。
<OdiStopLoadPlanRequest> <Credentials> <OdiUser>odi_user</OdiUser> <OdiPassword>odi_password</OdiPassword> <WorkRepository>work_repository</WorkRepository> </Credentials> <OdiStopLoadPlanRequest> <LoadPlanInstanceId>load_plan_instance_id</LoadPlanInstanceId> <LoadPlanInstanceRunCount>load_plan_run_count</LoadPlanInstanceRunCount> <StopLevel>stop_level</StopLevel> </OdiStopLoadPlanRequest> </OdiStopLoadPlanRequest>
invokeStopLoadPlan
操作のレスポンスでは、次の値が戻されます。
-
ロード計画実行ID
-
ロード計画実行カウント
-
マスター・リポジトリID
-
マスター・リポジトリ・タイムスタンプ
次に、OdiStopLoadPlan
レスポンスの例を示します。
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns2:OdiStopLoadPlanResponse xmlns:ns2="xmlns.oracle.com/odi/OdiInvoke/"> <executionInfo> <StoppedRunInformation> <OdiLoadPlanInstanceId>3001</OdiLoadPlanInstanceId> <RunCount>1</RunCount> <MasterRepositoryId>0</MasterRepositoryId> <MasterRepositoryTimestamp>1290196542926</MasterRepositoryTimestamp> </StoppedRunInformation> </executionInfo> </ns2:OdiStopLoadPlanResponse> </S:Body> </S:Envelope>
Webサービスを使用したロード計画インスタンスの再開
エージェントWebサービスのinvokeRestartLoadPlan
操作では、インスタンスIDによって識別された、指定作業リポジトリ内のロード計画インスタンスが再開されます。ロード計画インスタンスは、Webサービスを提供するエージェントによって再開されます。
<OdiRestartLoadPlanRequest> <Credentials> <OdiUser>odi_user</OdiUser> <OdiPassword>odi_password</OdiPassword> <WorkRepository>work_repository</WorkRepository> </Credentials> <RestartLoadPlanRequest> <LoadPlanInstanceId>load_plan_instance_id</LoadPlanInstanceId> <LogLevel>log_level</LogLevel> </RestartLoadPlanRequest> </OdiRestartLoadPlanRequest>
Webサービスを使用したロード計画実行ステータスのモニタリング
エージェントWebサービスのgetLoadPlanStatus
操作では、インスタンスIDと実行番号によって識別された、指定作業リポジトリ内の1つ以上のロード計画のステータスが戻されます。実行中のロード計画と完了したロード計画の両方のインスタンスが対象となります。
<OdiGetLoadPlanStatusRequest> <Credentials> <OdiUser>odi_user</OdiUser> <OdiPassword>odi_password</OdiPassword> <WorkRepository>work_repository</WorkRepository> </Credentials> <LoadPlans> <LoadPlanInstanceId>load_plan_instance_id</LoadPlanInstanceId> <LoadPlanRunNumber>load_plan_run_number</LoadPlanRunNumber> </LoadPlans> </OdiGetLoadPlanStatusRequest>
getStopLoadPlanStatus
操作のレスポンスでは、次の値が戻されます。
-
ロード計画実行ID
-
ロード計画実行カウント
-
ロード計画実行リターン・コード
-
ロード計画メッセージ
次に、OdiGetLoadPlanStatus
レスポンスの例を示します。
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns2:OdiGetLoadPlanStatusResponse xmlns:ns2="xmlns.oracle.com/odi/OdiInvoke/"> <LoadPlanStatusResponse> <LoadPlanInstanceId>3001</LoadPlanInstanceId> <LoadPlanRunNumber>1</LoadPlanRunNumber> <LoadPlanStatus>E</LoadPlanStatus> <LoadPlanReturnCode>ODI-1530</LoadPlanReturnCode> <LoadPlanMessage>ODI-1530: Load plan instance was stopped by user request.</LoadPlanMessage> </LoadPlanStatusResponse> </ns2:OdiGetLoadPlanStatusResponse> </S:Body> </S:Envelope>
コマンド行からのWebサービスへのアクセス
Oracle Data Integratorには、UNIXプラットフォーム用の2つのシェル・スクリプトが含まれています。これらのシェル・スクリプトでは、Webサービス・インタフェースを使用して、コマンド行からランタイム・エージェントWebサービス操作を介してシナリオを開始およびモニタリングします。
-
startscenremote.sh
は、そのWebサービスのリモート・エージェントでセッションを開始します。このシナリオは、同期または非同期で開始できます。非同期で開始した場合は、セッションが完了するかタイムアウトになるまで、そのセッションに対する定期的なスクリプト・ポーリングを指定できます。 -
getsessionstatusremote.sh
は、Webサービス・インタフェースを介してセッションのステータスを取得します。この2番目のスクリプトは、startscenremote.sh
スクリプトで使用されます。
コマンド行からWebサービスにアクセスする前に、次の重要なノートを慎重に読んでください。
-
この項で説明するタスクの実行に必要なコマンド行スクリプトは、Oracle Data Integratorスタンドアロン・エージェントがインストールされている場合のみ使用できます。スタンドアロン・エージェントのインストール方法の詳細は、『Oracle Data Integratorのインストールと構成』を参照してください。
-
startscen.sh
コマンド行と異なり、これらのスクリプトは、UNIXまたはLinuxプラットフォームにインストールされている軽量WGETユーティリティを使用して、Webサービス・コールを実行します。Javaコードは使用せず、ポーリング・メカニズムを使用して、マシンで実行するプロセスの数を削減します。これらのスクリプトは、大量のシナリオとセッションをコマンド行から同時に管理する必要がある場合に適しています。
シナリオの開始
シナリオをコマンド行からWebサービスを介して開始するには:
-
ディレクトリをOracle Data Integratorインストールの
/agent/bin
ディレクトリに変更します。 -
次のコマンドを入力して、シナリオを開始します。
UNIXシステムの場合:
./startscenremote.sh <scenario_name> <scenario_version> <context_code> <work_repository> <remote_agent_url> <odi_user> <odi_password> -l <log_level> -s <sync_mode>
-n <session_name>
-k <session_keyword>
-a <assign_variable> -t <timeout> -i <interval> -h <http_timeout> -v
表7-9に、このコマンドの様々なパラメータ(必須とオプションの両方)を示します。
表7-9 Startscenremoteコマンドのパラメータ
パラメータ | 説明 |
---|---|
|
シナリオの名前(必須)。 |
|
シナリオのバージョン(必須)。指定したバージョンが-1の場合は、そのシナリオの最新バージョンが実行されます。 |
|
実行コンテキストのコード(必須)。 |
|
シナリオが格納されている作業リポジトリの名前(必須)。 |
|
このセッションを実行するランタイム・エージェントのURL(必須)。 |
|
このセッションの実行に使用するOracle Data Integratorユーザーの名前(必須)。 このパラメータは大/小文字が区別され、ODI Studioに表示されるOracle Data Integratorユーザーと一致する必要があります。このパラメータに入力した値が正しくないと、エラーが発生します。 |
|
このユーザーのパスワード(必須)。 |
- |
保持するロギング情報のレベル。 このパラメータの形式は ログ・レベル6は、ログ・レベル5と動作は同じですが、変数の追跡が追加されていることに注意してください。詳細は、『Oracle Data Integratorでの統合プロジェクトの開発』の変数および順序の追跡に関する項を参照してください。 例: |
|
実行モード:
デフォルトの実行モードは1です。 |
|
セッションの名前。 このパラメータはオプションであり、指定しない場合は値がありません。 |
|
このセッションに関連付けられているキーワードのリスト。これらのキーワードによって、セッションの識別が容易になります。このリストは、カンマ区切りのキーワード・リストです。 このパラメータはオプションであり、指定しない場合は値がありません。 |
|
変数を割り当てます。 このパラメータはオプションであり、指定しない場合は値がありません。 このパラメータを繰り返して、複数の変数を割り当てることができます。 startscenコマンド行では、変数名の接頭辞にハッシュ記号( たとえば: |
|
|
|
|
|
Webサービス・コールのHTTPタイムアウト。デフォルトのHTTPタイムアウトは60です。 |
|
冗長モード。デフォルトでは、冗長モードは'off'に設定されます。 |
セッション・ステータスのモニタリング
コマンド行からWebサービスを介してセッションのステータスをモニターするには:
-
ディレクトリをOracle Data Integratorインストールの
/agent/bin
ディレクトリに変更します。 -
次のコマンドを入力して、シナリオを開始します。
UNIXシステムの場合:
./getsessionstatusremote.sh <session_number> <work_repository> <remote_agent_url> <odi_user> <odi_password> -w <sync_mode> -t <timeout> -i <interval> -h <http_timeout> -v
表7-10に、このコマンドの様々なパラメータ(必須とオプションの両方)を示します。
表7-10 GetSessionStatusRemoteコマンドのパラメータ
パラメータ | 説明 |
---|---|
|
モニターするセッションの数(必須)。 |
|
シナリオが格納されている作業リポジトリの名前(必須)。 |
|
このセッションを実行するランタイム・エージェントのURL(必須)。 |
|
このセッションの実行に使用するOracle Data Integratorユーザーの名前(必須)。 このパラメータは大/小文字が区別され、ODI Studioに表示されるOracle Data Integratorユーザーと一致する必要があります。このパラメータに入力した値が正しくないと、エラーが発生します。 |
|
このユーザーのパスワード(必須)。 |
|
待機モード:
デフォルトの待機モードは0です。 |
|
|
|
|
|
Webサービス・コールのHTTPタイムアウト。デフォルトのHTTPタイムアウトは60です。 |
|
冗長モード。デフォルトでは、冗長モードは'off'に設定されます。 |
外部認証によるランタイムWebサービスの使用
この章のWebサービスの例では、OdiUserおよびOdiPassword要素を使用して、SOAP本文内部のODI認証を使用しています。
Oracle Platform Security Services(OPSS)が構成されたリポジトリおよびコンテナ・ベースの認証に外部認証を設定する場合は(詳細は、「外部認証の構成」を参照)、HTTP基本認証、WS-Securityヘッダー、SAMLトークンなどを使用して認証をWebサービスに渡すことができます。OPSSでは、認証がアイデンティティ・プロバイダによってサーバー側で透過的に処理されます。この場合、OdiUserおよびOdiPassword要素は省略できます。
ランタイムWebサービスは、まずOPSSを使用して認証を試行します。認証パラメータが指定されていない場合は、OPSSによって匿名ユーザーが使用され、OdiUserおよびOdiPasswordがチェックされます。それ以外の場合(つまり、OPSSへの資格証明が正しくない場合)は、OPSSによって認証例外がスローされ、Webサービスは起動されません。
ノート:
OPSS認証は、Oracle WebLogic ServerにデプロイされたパブリックWebサービスまたはJEEエージェントでのみ使用できます。
WS-Addressingの使用
この章で説明しているWebサービスは、オプションでWS-Addressingをサポートしています。WS-Addressingは、ランタイムWebサービス・コールの完了時にエンドポイントでのレスポンスを可能にします。このため、ReplyToおよびFaultToという2つのエンドポイントを、SOAPリクエスト・ヘッダーにオプションで指定できます。
これらのエンドポイントは、次のように使用されます:
-
ランタイムWebサービス・コールが正常に完了した場合は、Actionの結果がReplyToエンドポイントに送信されます。
-
SOAPリクエストでエラーが検出されたり、Oracle Data Integratorがリクエストを処理できない場合は、FaultToアドレスにメッセージが送信されます。FaultToアドレスが指定されていない場合は、かわりにReplyToアドレスにエラーが送信されます。
-
Oracle Data Integratorエージェントでリクエストの処理中にエラーが検出され、ODIエラー・メッセージを生成する必要がある場合は、このエラー・メッセージがReplyToアドレスに送信されます。
有効なReplyToアドレスが指定されていない場合、コールバック操作はコールバック・モードで実行されません。
次に、セッション20001のセッション・ステータスを取得するために送信されたリクエストの例を示します:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:odi="xmlns.oracle.com/odi/OdiInvoke/"> <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <wsa:Action soapenv:mustUnderstand="1">xmlns.oracle.com/odi/OdiInvoke/getSessionStatus</wsa:Action> <wsa:ReplyTo soapenv:mustUnderstand="1"> <wsa:Address>http://host001:8080/examples/servlets/servlet/RequestPrinter</wsa:Address> </wsa:ReplyTo> <wsa:MessageID soapenv:mustUnderstand="1">uuid:71bd2037-fbef-4e1c-a991-4afcd8cb2b8e</wsa:MessageID> </soapenv:Header> <soapenv:Body> <odi:OdiGetSessionsStatusRequest> <Credentials> <!--You may enter the following 3 items in any order--> <OdiUser></OdiUser> <OdiPassword></OdiPassword> <WorkRepository>WORKREP1</WorkRepository> </Credentials> <!--Zero or more repetitions:--> <SessionIds>20001</SessionIds> </odi:OdiGetSessionsStatusRequest> </soapenv:Body> </soapenv:Envelope>
次の呼出しはReplyToアドレス(http://host001:8080/examples/servlets/servlet/RequestPrinter
)に対して行われます。
この呼出しには、リクエストに指定されたActionへのレスポンスと、リクエストとレスポンスを関係付けるための元のMessageIDが含まれています。
<?xml version='1.0' encoding='UTF-8'?> <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Header> <To xmlns="http://www.w3.org/2005/08/addressing">http:// host001:8080/examples/servlets/servlet/RequestPrinter</To> <Action xmlns="http://www.w3.org/2005/08/addressing">xmlns.oracle.com/odi/OdiInvoke/:requestPortType:getSessionStatusResponse</Action> <MessageID xmlns="http://www.w3.org/2005/08/addressing">uuid:eda383f4-3cb5-4dc2-988c-a4f7051763ea</MessageID> <RelatesTo xmlns="http://www.w3.org/2005/08/addressing">uuid:71bd2037-fbef-4e1c-a991-4afcd8cb2b8e</RelatesTo> </S:Header> <S:Body> <ns2:OdiGetSessionsStatusResponse xmlns:ns2="xmlns.oracle.com/odi/OdiInvoke/"> <SessionStatusResponse> <SessionId>26001</SessionId> <SessionStatus>D</SessionStatus> <SessionReturnCode>0</SessionReturnCode> </SessionStatusResponse> </ns2:OdiGetSessionsStatusResponse> </S:Body> </S:Envelope>
WS-Adressingの詳細は、次のURLのWorld Wide Web Consortium (W3C) Webサイトを参照してください。
-
Webサービスのアドレス指定:
http://www.w3.org/Submission/ws-addressing/
-
WS-Addressing SOAPバインディング:
http://www.w3.org/TR/2006/REC-ws-addr-soap-20060509/
-
WS-Addressing WSDLバインディング:
http://www.w3.org/TR/2006/WD-ws-addr-wsdl-20060216/
コールバックを使用する非同期Webサービスの使用
JRF非同期Webサービスまたは非同期BPELプロセスのパターンに従って、時間のかかるWebサービス操作を非同期で開始できます。これらは、"リクエスト-レスポンス・ポート・ペア"のパターンに従います。
このパターンでは、Webサービス・クライアントがコールバック操作を実装します。クライアントがリクエストした操作を完了すると、サーバーはこのコールバック操作に結果を送信します。
エージェントWebサービスのinvokeStartScenWithCallbackおよびinvokeRestartSessWithCallbackという2つの特定の操作では、このパターンがサポートされています。
これらの操作には次の機能があります:
-
レスポンスは返されません。これらは一方向の操作です。
-
これらの2つの操作を呼び出すクライアントは、invokeStartSceCallbackおよびinvokeRestartSessCallbackの一方向操作をそれぞれ実装する必要があります。invokeStartScenWithCallbackおよびinvokeRestartSessWithCallbackの各アクションの結果は、これらの操作に送信されます。
-
呼出しでは、ReplyToアドレスおよび使用する可能性のあるFaultToアドレスをSOAPヘッダーで指定する必要があります。ReplyToアドレスを指定せずにメソッドを呼び出すと、操作は同期で実行されます(これは、invokeStartScenまたはinvokeRestartSess操作に対応します)。操作でエラーが発生した場合は、ReplyToアドレスまたはFaultToアドレスに送信されます。
invokeStartScenWithCallbackおよびinvokeRestartSessWithCallbackを使用して同期で開始されたシナリオまたはセッションは、一方向の操作であるため、SOAPレスポンスを返しません。セッションが完了すると、コールバック・アドレスにレスポンスが送信されます。
ノート:
Oracle BPELではこれらの操作が自動的に実装され、それらのエンドポイントを示すWS-Addressingヘッダーが送信されます。