この章では、Oracle Data Integratorデバッガを使用して、統合プロセスでの問題を解決する方法について説明します。
この章には次の項が含まれます:
Oracle Data Integrator Studioでは、セッションのステップとタスクを手動でステップ実行できるグラフィカル・デバッガを提供しています。デバッガを使用して、マッピング、プロシージャ、パッケージまたはシナリオに関する問題を識別できます。デバッグは、アクティブなセッションのブループリントで実行されます。
セッションのブループリントは、Oracle Data Integrator Studioでそのセッションのタブに表示されるのみです。マッピングやシナリオのバージョンおよびタイムスタンプが同じである場合は、異なるセッションで同じブループリントが表示されます。
マッピングを編集すると、それに基づいて実行される新しいセッションでは、前にキャッシュされたブループリントが使用されず、かわりに新しいブループリントが生成されます。マッピングが実行されるたびに、新しいブループリントが再度生成されます。シナリオの場合にのみ、シナリオが変更されないかぎり同じブループリントを複数の実行に対して保持します。シナリオが変更されると、後続セッション用に新しいブループリントが生成されます。
セッション・エディタのブループリントで、実行中のセッションをデバッグし、完了したセッションを再開し、セッションのステップとタスクを手動でステップ実行できます。ブループリントには、ステップとタスクをIDで識別するステップ階層表が含まれます。実行できるデバッガ・タスクは次のとおりです。
ステップおよびタスクのブレークポイントの設定。ブレークポイントは、ブループリントにグラフィカルに表示され、「デバッグ・ブレークポイント」ビューにリストされます。
セッション内のタスクのソース・コードとターゲット・コードの表示と更新/編集、およびデータを表示する問合せの実行。
変数の値およびコミットされていないデータの表示(接続が「自動コミット」接続でない場合)。
アクティブなすべてのデバッグ・セッションの表示、およびデバッグ可能セッションに対する切断または接続。
接続されているセッションのすべてのスレッドの表示。
デバッグの実行は、デバッグ・ツールバーのデバッグ・コマンドで制御できます。
アイコン | コマンド | 説明 |
---|---|---|
ブレークポイントの追加 | ブループリントの現在選択されている行、プロシージャで現在選択されているタスク、またはパッケージで現在選択されているステップでブレークポイントを切り替えます。 | |
デバッグ・セッションの開始 | フォーカスのあるエディタのデバッグ・セッションを開始します。セッション・エディタでは、このコマンドを使用してセッションを再開できます。 | |
デバッグ・セッションに接続 | エージェントで実行されているデバッグ・セッションに接続します。これにより、現在実行されているセッションが開き、順番に実行できるようになります。ローカル・エージェントに接続することはできません。 | |
デバッグ・セッションの切断 | 現在のデバッグ・セッションを切断します。デバッグ・セッションを切断した後、実行を継続し、ブレークポイントは無視されます。
切断したセッションに再接続できます。 |
|
現在のカーソル | ブループリントの現在のカーソルが強調表示され、セッション・エディタが開いていない場合は開きます。 | |
データの取得 | 現在選択されているタスクのSQLコードが、「デバッグ・データ」ウィンドウのSQLコマンド・フィールドに挿入されます。「ソース・タスク・データ」と「ターゲット・タスク・データ」の両方のウィンドウに移入されます。 | |
ステップ・イン | 現在選択されているノードの1つ目の子ノードの最初にステップ・インします。現在選択されているノードに子がない場合は、無効化されます。 | |
タスク終了まで実行 | 現在選択されているタスクの最後まで実行します。タスクに子がある場合は、タスクの最後に到達するまですべての子を実行します。
タスクの最初でない場合は無効化されます。 |
|
次のタスクまで実行 | 次のタスクの最初まで実行します。タスク・リストの最後のタスクである場合は、親タスクの最後に移動します。 | |
ステップ終了まで実行 | 現在のステップの最後まで実行します。ステップの最後に到達するまで、すべてのタスクを実行します。 | |
次のステップまで実行 | 次のステップの最初まで実行します。 | |
一時停止 | 現在の実行を一時停止します。ステップ/タスクを順番に実行するか、実行を再開することで、実行を続行できます。 | |
再開 | 現在のカーソルで実行を再開し、セッションが終了するか、ブレークポイントに達するまで続行します。 |
コンテキスト・メニューまたはツールバーの「デバッグ」コマンドにアクセスして、オブジェクトのデバッグ・セッションを開始できます。デバッグ・セッションを開始すると、「デバッグ・セッションの開始」ダイアログが起動します。「デバッグ・セッションのオプション」を参照してください。
ツールバーからのセッションの開始
Oracle Data Integrator Studioのツールバーからデバッグ・セッションを開始するには:
「プロジェクト」ビューで、マッピング、パッケージ、プロシージャまたはシナリオを選択します。
ツールバーで、「デバッグ・セッションの開始」を選択します。
「デバッグ」ウィンドウで、「デバッグ・セッションのオプション」で説明しているオプションを構成します。
「OK」をクリックします。
情報メッセージで、セッションが開始されたことが示されます。
ナビゲータ・ツリーからのセッションの開始
Oracle Data Integrator Studioのナビゲータ・ツリーからデバッグ・セッションを開始するには:
ナビゲータ・ツリーで、マッピング、パッケージ、プロシージャまたはシナリオを選択します。
右クリックして、「デバッグ」を選択します。
「デバッグ」ウィンドウで、「デバッグ・セッションのオプション」で説明しているオプションを構成します。
「OK」をクリックします。
情報メッセージで、セッションが開始されたことが示されます。
メイン・メニューからのセッションの開始
Oracle Data Integrator Studioのメイン・メニューからデバッグ・セッションを開始するには:
「実行」→「デバッグ」→「デバッグ・セッションの開始」を選択します。
「デバッグ」ウィンドウで、「デバッグ・セッションのオプション」で説明しているオプションを構成します。
「OK」をクリックします。
情報メッセージで、セッションが開始されたことが示されます。
シナリオのセッションの開始
シナリオのデバッグ・セッションを開始するには:
次のいずれかの方法を使用してシナリオを検索します。
デザイナ・ナビゲータで、「ロード計画とシナリオ」ツリーを展開し、シナリオを見つけます。
デザイナ・ナビゲータで、「プロジェクト」ツリーを展開し、ソースのシナリオ・ノードの下にあるシナリオを見つけます。
マッピング・エディタの「シナリオ」タブで、オブジェクトのシナリオのリストでシナリオを見つけます。
シナリオを右クリックして、「デバッグ」を選択します。
「デバッグ」ウィンドウで、「デバッグ・セッションのオプション」で説明しているオプションを構成します。
「OK」をクリックします。
情報メッセージで、セッションが開始されたことが示されます。
デバッガを、現在のリポジトリに登録されているエージェント上のデバッグ可能セッションに接続できます。デバッガの接続先のセッションは、「デバッグ・セッションに接続」ダイアログ・ボックスを開く前に開始されていたデバッグ可能セッションである必要があります。エージェントを使用せずに、ローカルで実行されているセッションに接続することはできません。
セッションに接続するには:
「実行」→「デバッグ」→「デバッグ・セッションに接続」を選択します。
「デバッグ・セッションの接続」ウィンドウで、次の接続パラメータを入力します。
エージェント: デバッグ可能セッションを実行するエージェントを選択します。「任意のエージェント」を選択すると、構成されているすべてのエージェントのデバッグ可能セッションすべてがセッション・リストに表示されます。
セッション: エージェント・リストに選択されているエージェントからの接続に使用可能なすべてのデバッグ可能セッションが表示されます。
「OK」をクリックします。
デバッグ・セッションは、コンテキストおよびエージェントで実行されます。デバッグ・セッションを実行するエージェントの名前を選択できます。「ローカル(エージェントなし)」を選択することにより、組込みエージェントをOracle Data Integrator Studioで使用できます。
セッションは、通常セッションまたはデバッグ・セッションであるかどうかに関係なく、オペレータ・ナビゲータに実行中として表示されます。セッションが一時停止されたことは示されません。ローカル・エージェントで実行されていた停止セッションには、「デバッグ・セッション」ウィンドウを介して戻ることができます。
セッションのライフサイクルの詳細は、「ODI実行の理解」を参照してください。
起動する前に、デバッガ・セッションのオプションを構成できます。
「最初のタスクの前に一時停止」を選択すると、デバッグ可能セッションに接続しているクライアントがない場合でも、最初のタスクの前にデバッガの実行が一時停止されます。
これが選択されていない場合、デバッグ・クライアントに接続されていないデバッグ・セッションは完了するまで続行されます。デバッグ・セッションがデバッグ・クライアントに接続されている場合は、最初のブレークポイント(ある場合)で停止します。
この設定はデフォルトで選択されています。
「現在のクライアントに関連付け」を選択すると、デバッガによりデバッグ・モードでセッションが開始され、セッションをデバッグするためのブループリントが開きます。
選択を解除すると、デバッガによりデバッグ・モードでセッションが開始されますが、デバッグ用のブループリントは開きません。後で、セッションをこのクライアントまたは他のクライアントに関連付けることができます。
この設定はデフォルトで選択されています。
ブループリントには、選択したセッションのすべてのステップ階層とタスク階層が示され、個々のコマンドを確認できます。
「現在のクライアントに関連付け」オプションが選択されている場合、セッションを開始すると、その「ブループリント」ビューのセッション・エディタが開きます。それ以外の場合は、デバッグ・ツールバーで「現在のカーソル」を選択してセッション・エディタを開きます。
実行の行の前または後にカーソルを置くことができます。デバッガでは、行の前または後のカーソル位置の半分がハイライト表示されます。
図8-1に、実行の行の前にあるカーソル位置を示します。
選択したカーソル位置に対してデバッグ・アクションを実行できます。
「ステップ・イン」アクションでは、現在選択されているノードの1つ目の子ノードの最初にステップ・インします。現在選択されているノードに子がない場合は、無効化されます。
「ステップ・イン」アクションは、ステップとタスクを含むものすべてに対して機能します。
「一時停止」アクションは、現在の実行を一時停止します。実行が一時停止されると、まだ実行されていないタスクのコードを変更でき、実行が再開される際に、変更したコードが取得されます。
ステップ/タスクを順番に実行するか、実行を再開することで、実行を続行できます。
ブループリントのステップおよびタスクにブレークポイントを設定し、デバッグ目的で実行を一時停止できます。
ランタイム・ブレークポイントおよびデザイン・ブレークポイントという2つのブレークポイント・リストがあります。
ランタイム・ブレークポイントは、セッション・エディタの「ブループリント」タブで追加できます。ブループリント上のランタイム・ブレークポイントは、同じブループリントから開始されたセッションにわたって使用されます。シナリオ実行では、シナリオが変更されないままであるかぎり、ブループリントを再使用します。
デザイン・ブレークポイントは、パッケージやプロシージャなど、デザイン・アーティファクトで定義されます。実行中、デザイン・ブレークポイントにより、関連付けられているブループリントにランタイム・ブレークポイントが生成されます。デザイン・ブレークポイントは、パッケージ・エディタで追加できます。
ブレークポイントを追加するには:
「実行」→「ブレークポイント」→「ブレークポイントの追加」を選択します。
ブループリントにブレークポイントを表す赤い点が配置されます。
実行を開始または再開します。
実行がブレークポイントで一時停止した場合は、次のことを調べます。
データのデバッグ。「変数のデバッグ」を参照してください。
変数値。「変数のデバッグ」を参照してください。
セッション・スレッドのデバッグ。「スレッドのデバッグ」を参照してください。
ブレークポイントを編集するには:
「実行」→「ブレークポイント」→「ブレークポイントの編集」を選択します。
「ブレークポイント・プロパティ」ウィンドウが表示されます。
次のプロパティを設定します。
有効: ブレークポイントが有効であるかどうかがチェックされます。
選択すると、ブレークポイントがアクティブになり、実行が一時停止されます。
選択を解除すると、実行中、ブレークポイントは無視されます。
タスクの実行後に一時停止:
選択すると、タスクまたはステップの実行後にブレークポイントが一時停止されます。
選択を解除すると、タスクまたはステップの実行前にブレークポイントが一時停止されます。
パス数: 実行を一時停止する前に、ブレークポイントがパスされる必要のある回数。0の場合は最初のパスで実行が一時停止され、1の場合は実行を一時停止する前に、ブレークポイントが1回パスされます。
「OK」をクリックします。
単一ブレークポイントを削除するには:
ステップまたはタスクを右クリックして、「ブレークポイントの削除」を選択します。
すべてのブレークポイントを削除するには(「ブレークポイント」ウィンドウからのみ実行可能):
「実行」→「ブレークポイント」→「すべて削除」を選択します。
「デバッグ・データ」タブを使用して、現在のデバッガ・タスクのコンテキストでデータを問い合せます。
「データ」ウィンドウには、「ソース・タスク・データ」と「ターゲット・タスク・データ」の2つのタブがあり、現在のタスクのソースおよびターゲットに関連付けられているデータ・サーバーの問合せが可能です。メイン・ツールバーにある「データの取得」コマンドを使用すると、現在のタスクのSQLコードが、「ソース・タスク・データ」と「ターゲット・タスク・データ」の両方のフィールドに挿入されます。ウィンドウには、SQLコマンドを入力するためのフィールドがあり、「SQLコードの実行」ボタンをクリックすると実行できます。
SQLコマンドで現在のセッションのトランザクション・コンテキストが使用され、コミットされていないデータを問い合せることができます。セッションのデバッグ実行で複数のタスクがある場合、コマンドでは「データ」ウィンドウに同期化されたタスクのコンテキストを使用します。
データの取得により、現在選択されているタスクのSQLコードが、「デバッグ・データ」ウィンドウのSQLコマンド・フィールドに挿入されます。「ソース・タスク・データ」と「ターゲット・タスク・データ」の両方のウィンドウに移入されます。
「データの取得」コマンドは元のカーソル行と連携します。つまり、ステップ処理を継続している場合は、「データ」ウィンドウは元のカーソル行に関連付けられたままとなります。新しい現在のカーソル行に移動するには、「データの取得」を再度押す必要があります。
通常は、ソース・コマンドのタスク・コードに、ソースからデータを取得するための選択問合せが含まれています。デフォルトでは、「ソース・タスク・データ」フィールドにこの問合せが表示されます。問合せの内容を変更せずに実行すると適切でない可能性があるため、実行前に問合せを確認して変更する必要があります。
ターゲット・タスク・データには、通常、挿入や更新などのDML操作が含まれています。Oracle Data Integratorは、ターゲットSQLの解析を試みてターゲット表名を特定し、次のような単純な問合せを提供します。
select * from <parsedTargetTableName>
Oracle Data IntegratorがターゲットSQLを解析してターゲット表名を特定できない場合は、次のような推奨される問合せが表示されます。
select * from <SpecifyTargetTableName>
問合せの内容を変更せずに実行すると適切でない可能性があるため、実行前に問合せを確認して変更する必要があります。
「デバッグ変数」タブを使用して、現在のセッションで使用されているすべての変数を表示し、ステップおよびタスクのステップ実行時の変数の変化を確認します。変数の値を変更して、セッションの実行に影響を与えることができます。
各変数に関する次の情報を表示できます。
プロパティ | 説明 |
---|---|
名前 | 変数の名前。 |
値 | 変数の値。変更して実行を変えることが可能です。 |
タイプ | 変数のタイプ。 |
変数を変更するには:
必要な場合、ブレークポイントを設定します。「ブレークポイントの使用」を参照してください。
ブループリント内でカーソルを配置します。
「デバッグ変数」タブで、値を変更する変数を選択します。
セッションの実行を開始または再開します。
「ウィンドウ」→「デバッガ」→「デバッグ・セッション」を選択して、「デバッグ・セッション」ウィンドウですべてのアクティブなデバッグ・セッションのリストを表示できます。
「デバッグ・セッション」ウィンドウで、リストされているセッションへの接続または切断が可能です。
プロパティ | 説明 |
---|---|
エージェント | セッションを実行するエージェント。 |
セッション番号 | セッションのID。 |
セッション名 | セッション名。 |
セッション接続済 | セッションがデバッガ・クライアントに接続されているかされていないかが表示されます。 |
セッションを正常に切断し、即時に切断できます。
「デバッグ・セッション」ウィンドウで、リスト内のセッションを右クリックし、「デバッグ・セッションの切断」を選択します。
セッションがStudioでアクティブになります。
セッション・ウィンドウの左上にある「切断」ボタンを選択して、次を選択します。
標準停止: セッションは、現在のタスクの終了後に停止されます。
即時停止: 現在のタスクがすぐに中断されてセッションが停止されます。このモードを使用すると、長時間実行されているタスク、たとえば長いSQL文をその完了前に停止できます。
「OK」をクリックし、切断を確定します。
セッションが停止すると、「セッションのデバッグが完了しました。」というメッセージが表示されます。セッションは「デバッグ・セッション」リストから削除されます。
「セッションの停止」を参照してください。
セッション・ウィンドウで、停止したセッションを再開できます。
セッションを再開するには:
セッション・ウィンドウの左上で、「実行再開」を選択します。
「実行再開」ウィンドウが表示されます。
セッションを実行するエージェントを選択するには、次のいずれかのオプションを選択します。
前のエージェントを使用: 前のセッション実行に使用されたエージェントを使用するために<agent name>を指定する場合。
別のエージェントを選択: セッション実行に使用するエージェントを選択する場合。ODI Studio組込みのエージェントを使用する場合は、「内部」を選択します。
ログ・レベルを選択します。ログ・レベル6は、ログ・レベル5と動作は同じですが、変数と順序の追跡が追加されています。
表示されたセッションを再開してダイアログを閉じるには、「OK」をクリックします。
情報メッセージ「セッションが起動しました」が表示され、セッションが「デバッグ・セッション」リストに追加されます。
失敗したセッションをデバッグ・モードで再開するには、次の手順を実行します。
ナビゲータ・ツリーで、失敗したセッションを選択します。
右クリックして、「デバッグ」を選択します。
「デバッグ」ウィンドウで、「デバッグ・セッションのオプション」で説明しているオプションを構成します。
「OK」をクリックします。
情報メッセージで、セッションが再開されたことが示されます。