8 統合プロセスのデバッグ
この章の内容は次のとおりです。
セッションおよびブループリントについて
Oracle Data Integrator Studioでは、セッションのステップとタスクを手動でステップ実行できるグラフィカル・デバッガを提供しています。デバッガを使用して、マッピング、プロシージャ、パッケージまたはシナリオに関する問題を識別できます。デバッグは、アクティブなセッションのブループリントで実行されます。
セッションのブループリントは、Oracle Data Integrator Studioでそのセッションのタブに表示されるのみです。マッピングやシナリオのバージョンおよびタイムスタンプが同じである場合は、異なるセッションで同じブループリントが表示されます。
マッピングを編集すると、それに基づいて実行される新しいセッションでは、前にキャッシュされたブループリントが使用されず、かわりに新しいブループリントが生成されます。マッピングが実行されるたびに、新しいブループリントが再度生成されます。シナリオの場合にのみ、シナリオが変更されないかぎり同じブループリントを複数の実行に対して保持します。シナリオが変更されると、後続セッション用に新しいブループリントが生成されます。
ブループリントのソース・コードおよびターゲット・コード
ブループリントを直接変更することはできません。ただし、セッション・エディタで現在デバッガの対象となっているタスクのソース・コードとターゲット・コードを編集することはできます。編集済コードは、マッピングから実行されるすべてのセッションで使用されます。セッションをすべて削除しても、キャッシュされたブループリントが残り、変更されていないマッピングから次にセッションを開始する際に再使用されます。
ブループリント・キャッシュ管理パラメータの調整の推奨事項
ブループリント・キャッシュ管理パラメータ(「最大キャッシュ・エントリ」と未使用ライフタイム)は、環境の仕様に基づいて調整する必要があります。ブループリント・キャッシュ・パラメータはパフォーマンスの向上に役立ちますが、むやみに変更しないでください。ネットワーク・レイテンシやデータベース・アクセスのラグなどの他のパフォーマンスの要因をすべて評価した後でのみ、これらのパラメータの調整を検討してください。
これらのパラメータを調整することを決定する前に、次の重要な要素を検討する必要があります。
-
安定した状態の実行環境にあるアクティブなシナリオの数
-
シナリオの平均および累積のサイズ
-
シナリオの実行を繰り返す頻度
-
システムの使用可能メモリーとJVMを実行しているODIエージェントに割り当てられたメモリー
デフォルト値(つまり、200)よりもアクティブなシナリオの数が少ない場合、「最大キャッシュ・エントリ」パラメータを変更しないでください。VMでメモリー不足が発生した場合、この数を減らして、他のアクティビティに対するメモリーを解放できます。ただし、これは通常、シナリオ実行のパフォーマンスを低下させるため、お薦めしません。
毎時間シナリオを実行し、すべてのアクティブなシナリオが「最大キャッシュ・エントリ」に収まる場合、および生成されたシナリオをランタイム環境で変更しない場合は、「未使用ブループリント・ライフタイム」パラメータを3600秒を超えるように増やすことができます。ただし、VMメモリーが不足している場合は、「未使用ブループリント・ライフタイム」パラメータを増やすと、有効活用できるメモリーがなくなる可能性があります。
そのため、これらのパラメータを調整する場合は、前述のガイドラインを考慮してパフォーマンスの問題を分類してください。
セッション・エディタでのデバッグの概要
セッション・エディタのブループリントで、実行中のセッションをデバッグし、完了したセッションを再開し、セッションのステップとタスクを手動でステップ実行できます。ブループリントには、ステップとタスクをIDで識別するステップ階層表が含まれます。実行できるデバッガ・タスクは次のとおりです。
-
ステップおよびタスクのブレークポイントの設定。ブレークポイントは、ブループリントにグラフィカルに表示され、「デバッグ・ブレークポイント」ビューにリストされます。
-
セッション内のタスクのソース・コードとターゲット・コードの表示と更新/編集、およびデータを表示する問合せの実行。
-
変数の値およびコミットされていないデータの表示(接続が「自動コミット」接続でない場合)。
-
アクティブなすべてのデバッグ・セッションの表示、およびデバッグ可能セッションに対する切断または接続。
-
接続されているセッションのすべてのスレッドの表示。
アイコン
デバッグの実行は、デバッグ・ツールバーのデバッグ・コマンドで制御できます。
アイコン | コマンド | 説明 |
---|---|---|
![]() |
ブレークポイントの追加 |
ブループリントの現在選択されている行、プロシージャで現在選択されているタスク、またはパッケージで現在選択されているステップでブレークポイントを切り替えます。 |
![]() |
デバッグ・セッションの開始 |
フォーカスのあるエディタのデバッグ・セッションを開始します。セッション・エディタでは、このコマンドを使用してセッションを再開できます。 |
![]() |
デバッグ・セッションに接続 |
エージェントで実行されているデバッグ・セッションに接続します。これにより、現在実行されているセッションが開き、順番に実行できるようになります。ローカル・エージェントに接続することはできません。 |
![]() |
デバッグ・セッションの切断 |
現在のデバッグ・セッションを切断します。デバッグ・セッションを切断した後、実行を継続し、ブレークポイントは無視されます。 切断したセッションに再接続できます。ローカル・エージェントで実行されているセッションからの切断はできません。 |
![]() |
現在のカーソル |
ブループリントの現在のカーソルが強調表示され、セッション・エディタが開いていない場合は開きます。 |
![]() |
データの取得 |
現在選択されているタスクのSQLコードが、「デバッグ・データ」ウィンドウのSQLコマンド・フィールドに挿入されます。「ソース・タスク・データ」と「ターゲット・タスク・データ」の両方のウィンドウに移入されます。 |
![]() |
ステップ・イン |
現在選択されているノードの1つ目の子ノードの最初にステップ・インします。現在選択されているノードに子がない場合は、無効化されます。 |
![]() |
タスク終了まで実行 |
現在選択されているタスクの最後まで実行します。タスクに子がある場合は、タスクの最後に到達するまですべての子を実行します。 タスクの最初でない場合は無効化されます。 |
![]() |
次のタスクまで実行 |
次のタスクの最初まで実行します。タスク・リストの最後のタスクである場合は、親タスクの最後に移動します。 |
![]() |
ステップ終了まで実行 |
現在のステップの最後まで実行します。ステップの最後に到達するまで、すべてのタスクを実行します。 |
![]() |
次のステップまで実行 |
次のステップの最初まで実行します。 |
![]() |
一時停止 |
現在の実行を一時停止します。ステップ/タスクを順番に実行するか、実行を再開することで、実行を続行できます。 |
![]() |
再開 |
現在のカーソルで実行を再開し、セッションが終了するか、ブレークポイントに達するまで続行します。 |
デバッグ・セッションの開始
コンテキスト・メニューまたはツールバーの「デバッグ」コマンドにアクセスして、オブジェクトのデバッグ・セッションを開始できます。デバッグ・セッションを開始すると、「デバッグ・セッションの開始」ダイアログが起動します。「デバッグ・セッションのオプション」を参照してください。
ツールバーからのセッションの開始
Oracle Data Integrator Studioのツールバーからデバッグ・セッションを開始するには:
-
「プロジェクト」ビューで、マッピング、パッケージ、プロシージャまたはシナリオを選択します。
-
ツールバーで、「デバッグ・セッションの開始」を選択します。
-
「デバッグ」ウィンドウで、「デバッグ・セッションのオプション」の説明に従いオプションを構成します。
-
「OK」をクリックします。
情報メッセージで、セッションが開始されたことが示されます。
ナビゲータ・ツリーからのセッションの開始
Oracle Data Integrator Studioのナビゲータ・ツリーからデバッグ・セッションを開始するには:
-
ナビゲータ・ツリーで、マッピング、パッケージ、プロシージャまたはシナリオを選択します。
-
右クリックして、「デバッグ」を選択します。
-
「デバッグ」ウィンドウで、「デバッグ・セッションのオプション」の説明に従いオプションを構成します。
-
「OK」をクリックします。
情報メッセージで、セッションが開始されたことが示されます。
メイン・メニューからのセッションの開始
Oracle Data Integrator Studioのメイン・メニューからデバッグ・セッションを開始するには:
-
「実行」→「デバッグ」→「デバッグ・セッションの開始」を選択します。
-
「デバッグ」ウィンドウで、「デバッグ・セッションのオプション」の説明に従いオプションを構成します。
-
「OK」をクリックします。
情報メッセージで、セッションが開始されたことが示されます。
シナリオのセッションの開始
シナリオのデバッグ・セッションを開始するには:
実行中のデバッグ・セッションへの接続
デバッガを、現在のリポジトリに登録されているエージェント上のデバッグ可能セッションに接続できます。デバッガの接続先のセッションは、「デバッグ・セッションに接続」ダイアログ・ボックスを開く前に開始されていたデバッグ可能セッションである必要があります。エージェントを使用せずに、ローカルで実行されているセッションに接続することはできません。
セッションに接続するには:
組込みエージェントおよび外部エージェント
デバッグ・セッションは、コンテキストおよびエージェントで実行されます。デバッグ・セッションを実行するエージェントの名前を選択できます。「ローカル(エージェントなし)」を選択することにより、組込みエージェントをOracle Data Integrator Studioで使用できます。
デバッグ・セッションのライフサイクル
セッションは、通常セッションまたはデバッグ・セッションであるかどうかに関係なく、オペレータ・ナビゲータに実行中として表示されます。セッションが一時停止されたことは示されません。ローカル・エージェントで実行されていた停止セッションには、「デバッグ・セッション」ウィンドウを介して戻ることができます。
セッションのライフサイクルの詳細は、「ODI実行の理解」を参照してください。
デバッグ・セッションのオプション
起動する前に、デバッガ・セッションのオプションを構成できます。
最初のタスクの前に一時停止
「最初のタスクの前に一時停止」を選択すると、デバッグ可能セッションに接続しているクライアントがない場合でも、最初のタスクの前にデバッガの実行が一時停止されます。
これが選択されていない場合、デバッグ・クライアントに接続されていないデバッグ・セッションは完了するまで続行されます。デバッグ・セッションがデバッグ・クライアントに接続されている場合は、最初のブレークポイント(ある場合)で停止します。
この設定はデフォルトで選択されています。
現在のクライアントに関連付け
「現在のクライアントに関連付け」を選択すると、デバッガによりデバッグ・モードでセッションが開始され、セッションをデバッグするためのブループリントが開きます。
選択を解除すると、デバッガによりデバッグ・モードでセッションが開始されますが、デバッグ用のブループリントは開きません。後で、セッションをこのクライアントまたは他のクライアントに関連付けることができます。
この設定はデフォルトで選択されています。
子孫セッションのデバッグ
「子孫セッションのデバッグ」を選択すると、Startコマンドが実行されるたびに、新しいデバッグ・セッションを開始するかを尋ねられます。この設定が適用されるのはパッケージまたはプロシージャのみで、マッピングには適用されません。
これが選択されていない場合、子孫セッションは通常どおりに実行され、デバッガ・クライアントから接続することはできません。
この設定はデフォルトで選択解除されています。
セッション・エディタでのブループリントのステップ実行
ブループリントには、選択したセッションのすべてのステップ階層とタスク階層が示され、個々のコマンドを確認できます。
「現在のクライアントに関連付け」オプションが選択されている場合、セッションを開始すると、その「ブループリント」ビューのセッション・エディタが開きます。それ以外の場合は、デバッグ・ツールバーで「現在のカーソル」を選択してセッション・エディタを開きます。
デバッグ・カーソルの使用
実行の行の前または後にカーソルを置くことができます。デバッガでは、行の前または後のカーソル位置の半分がハイライト表示されます。
図8-1に、実行の行の前にあるカーソル位置を示します。
デバッグ・アクション
選択したカーソル位置に対してデバッグ・アクションを実行できます。
ステップ・イン
「ステップ・イン」アクションでは、現在選択されているノードの1つ目の子ノードの最初にステップ・インします。現在選択されているノードに子がない場合は、無効化されます。
「ステップ・イン」アクションは、ステップとタスクを含むものすべてに対して機能します。
一時停止
「一時停止」アクションは、現在の実行を一時停止します。実行が一時停止されると、まだ実行されていないタスクのコードを変更でき、実行が再開される際に、変更したコードが取得されます。
ステップ/タスクを順番に実行するか、実行を再開することで、実行を続行できます。
タスク終了まで実行
「タスク終了まで実行」アクションは、現在選択されているタスクの最後まで実行されます。タスクに子がある場合は、タスクの最後に到達するまですべての子を実行します。
このアクションは、カーソルがタスクの最初にない場合は無効になっています。
ブレークポイントの使用
ブループリントのステップおよびタスクにブレークポイントを設定し、デバッグ目的で実行を一時停止できます。
デザイン・ブレークポイントとランタイム・ブレークポイントについて
ランタイム・ブレークポイントおよびデザイン・ブレークポイントという2つのブレークポイント・リストがあります。
-
ランタイム・ブレークポイントは、セッション・エディタの「ブループリント」タブで追加できます。ブループリント上のランタイム・ブレークポイントは、同じブループリントから開始されたセッションにわたって使用されます。シナリオ実行では、シナリオが変更されないままであるかぎり、ブループリントを再使用します。
-
デザイン・ブレークポイントは、パッケージやプロシージャなど、デザイン・アーティファクトで定義されます。実行中、デザイン・ブレークポイントにより、関連付けられているブループリントにランタイム・ブレークポイントが生成されます。デザイン・ブレークポイントは、パッケージ・エディタで追加できます。
ブレークポイントの削除
単一ブレークポイントを削除するには:
-
ステップまたはタスクを右クリックして、「ブレークポイントの削除」を選択します。
すべてのブレークポイントを削除するには(「ブレークポイント」ウィンドウからのみ実行可能):
-
「実行」→「ブレークポイント」→「すべて削除」を選択します。
ブレーク・ポイントの有効化および無効化
単一ブレークポイントを有効化または無効化するには、次を選択します。
-
「実行」→「ブレークポイント」→「有効化」、または
-
「実行」→「ブレークポイント」→「無効化」。
すべてのブレークポイントを有効化または無効化するには(「ブレークポイント」ウィンドウからのみ実行可能)、次を選択します。
-
「実行」→「ブレークポイント」→「すべて有効化」、または
-
「実行」→「ブレークポイント」→「すべて無効化」。
データのデバッグ
「デバッグ・データ」タブを使用して、現在のデバッガ・タスクのコンテキストでデータを問い合せます。
「データ」ウィンドウには、「ソース・タスク・データ」と「ターゲット・タスク・データ」の2つのタブがあり、現在のタスクのソースおよびターゲットに関連付けられているデータ・サーバーの問合せが可能です。メイン・ツールバーにある「データの取得」コマンドを使用すると、現在のタスクのSQLコードが、「ソース・タスク・データ」と「ターゲット・タスク・データ」の両方のフィールドに挿入されます。ウィンドウには、SQLコマンドを入力するためのフィールドがあり、「SQLコードの実行」ボタンをクリックすると実行できます。
SQLコマンドで現在のセッションのトランザクション・コンテキストが使用され、コミットされていないデータを問い合せることができます。セッションのデバッグ実行で複数のタスクがある場合、コマンドでは「データ」ウィンドウに同期化されたタスクのコンテキストを使用します。
データの取得
データの取得により、現在選択されているタスクのSQLコードが、「デバッグ・データ」ウィンドウのSQLコマンド・フィールドに挿入されます。「ソース・タスク・データ」と「ターゲット・タスク・データ」の両方のウィンドウに移入されます。
「データの取得」コマンドは元のカーソル行と連携します。つまり、ステップ処理を継続している場合は、「データ」ウィンドウは元のカーソル行に関連付けられたままとなります。新しい現在のカーソル行に移動するには、「データの取得」を再度押す必要があります。
ソース・タスク・データ
通常は、ソース・コマンドのタスク・コードに、ソースからデータを取得するための選択問合せが含まれています。デフォルトでは、「ソース・タスク・データ」フィールドにこの問合せが表示されます。問合せの内容を変更せずに実行すると適切でない可能性があるため、実行前に問合せを確認して変更する必要があります。
ターゲット・タスク・データ
ターゲット・タスク・データには、通常、挿入や更新などのDML操作が含まれています。Oracle Data Integratorは、ターゲットSQLの解析を試みてターゲット表名を特定し、次のような単純な問合せを提供します。
select * from <parsedTargetTableName>
Oracle Data IntegratorがターゲットSQLを解析してターゲット表名を特定できない場合は、次のような推奨される問合せが表示されます。
select * from <SpecifyTargetTableName>
問合せの内容を変更せずに実行すると適切でない可能性があるため、実行前に問合せを確認して変更する必要があります。
変数のデバッグ
「デバッグ変数」タブを使用して、現在のセッションで使用されているすべての変数を表示し、ステップおよびタスクのステップ実行時の変数の変化を確認します。変数の値を変更して、セッションの実行に影響を与えることができます。
各変数に関する次の情報を表示できます。
プロパティ | 説明 |
---|---|
名前 |
変数の名前。 |
値 |
変数の値。変更して実行を変えることが可能です。 |
タイプ |
変数のタイプ。 |
変数の変更
変数を変更するには:
- 必要な場合、ブレークポイントを設定します。詳細は「ブレークポイントの使用」を参照してください。
- ブループリント内でカーソルを配置します。
- 「デバッグ変数」タブで、値を変更する変数を選択します。
- セッションの実行を開始または再開します。
デバッグ・セッションの管理
「ウィンドウ」→「デバッガ」→「デバッグ・セッション」を選択して、「デバッグ・セッション」ウィンドウですべてのアクティブなデバッグ・セッションのリストを表示できます。
「デバッグ・セッション」ウィンドウで、リストされているセッションへの接続または切断が可能です。
プロパティ | 説明 |
---|---|
エージェント |
セッションを実行するエージェント。 |
セッション番号 |
セッションのID。 |
セッション名 |
セッション名。 |
セッション接続済 |
セッションがデバッガ・クライアントに接続されているかされていないかが表示されます。 |
実行の再開
セッション・ウィンドウで、停止したセッションを再開できます。
セッションを再開するには:
-
セッション・ウィンドウの左上で、「実行再開」を選択します。
「実行再開」ウィンドウが表示されます。
-
セッションを実行するエージェントを選択するには、次のいずれかのオプションを選択します。
-
前のエージェントを使用: 前のセッション実行に使用されたエージェントを使用するために<agent name>を指定する場合。
-
別のエージェントを選択: セッション実行に使用するエージェントを選択する場合。ODI Studio組込みのエージェントを使用する場合は、「内部」を選択します。
-
-
ログ・レベルを選択します。ログ・レベル6は、ログ・レベル5と動作は同じですが、変数と順序の追跡が追加されています。
-
表示されたセッションを再開してダイアログを閉じるには、「OK」をクリックします。
情報メッセージ「セッションが起動しました」が表示され、セッションが「デバッグ・セッション」リストに追加されます。
失敗したセッションをデバッグ・モードで再開するには、次の手順を実行します。