28 PL/SQL統合診断ログおよびデバッグ・フレームワークの使用
PL/SQL統合診断ログおよびデバッグ・フレームワークが、リコンシリエーションやオンライン・データ・パージなど様々な操作について診断情報をPL/SQLレイヤーから取得します。同時に、パフォーマンス、スケーラビリティおよび可用性は影響を受けないように保証されます。
この章では、フレームワークの使用方法を説明します。次の項目が含まれます。
28.1 PL/SQL統合診断ログおよびデバッグ・フレームワークの理解
PL/SQL統合診断ログおよびデバッグ・フレームワークを理解するには、診断のためのロギングとデバッグ、診断データのロギングを制御するシステム・プロパティの構成方法、およびフレームワークの他の重要な機能を理解する必要があります。
28.1.1 PL/SQL統合診断ログおよびデバッグ・フレームワークについて
PL/SQL統合診断ログおよびデバッグ・フレームワークは、操作に対して選択した診断レベルに基づいて、PL/SQLレイヤーの操作に関する問題の進捗の追跡およびデバッグを支援します。
PL/SQL操作コードになんらかのデバッグ機能がないと、リコンシリエーションやデータ・パージなどの操作のPL/SQLエラーの原因を突き止めるのが難しい場合があります。
フレームワークでは、操作の実行時のロギングおよびデバッグ情報が提供されます。ロギングされる情報の量はシステム・プロパティを使用して制御できます。
サマリーと詳細情報は、2つの個別の診断ロギング表DIAG_LOGおよびDIAG_LOG_DTLSに取得されます。デフォルトでは、DIAG_LOG_DTLS表には正常に完了したOIM操作の診断データは格納されません。失敗した実行に関連するデータのみが格納されます。
28.1.2 フレームワークの特徴
リコンシリエーションおよびデータ・パージ操作のためのPL/SQL統合診断ログおよびデバッグ・フレームワークでのデータ収集のレベルは、システム・プロパティの値を設定して制御できます。
フレームワークは、デフォルトでOracle Identity Managerで使用可能になります。フレームワークに関する次の情報に注意してください。
-
デフォルトでは、リコンシリエーションの実行について低レベルの情報がPL/SQL診断ロギング表に取得され、OIMデータ・パージ・スケジュール済タスクの実行については情報は格納されません。
-
リコンシリエーション操作やデータ・パージの実行に関するPL/SQLレイヤーでのトラブルシューティングでは、システム・プロパティに次の値を設定できます。
-
リコンシリエーションのDB診断レベル: 「詳細レベル(低)」では、詳しい情報イベントを収集します。「詳細レベル(高)」では、詳しい情報イベントに加えてストアド・プログラム・ユニットの入力として使用される収集変数のデータを収集します。推奨値は「詳細レベル(低)」です。
-
オンライン・データ・パージのDB診断レベル: 「詳細レベル(高)」では、オンライン・データ・パージ操作をデバッグするための詳細な情報を収集します
-
-
診断データを取得したら、操作のシステム・プロパティの値をデフォルト値にリセットできます。
-
PL/SQL診断ロギング表でのデータの増加と、その後で生成されるフットプリントは、継続的に制御されます。
28.1.3 フレームワークで提供される構成可能な診断レベル
診断レベルを指定して、PL/SQL診断ロギング表に書き込まれる情報の量とタイプを構成できます。
OIM操作のシステム・プロパティを使用して構成できる診断レベルは次のとおりです。
-
情報: これはリコンシリエーション操作のデフォルト・レベルです。このレベルは、操作の進捗状況を大まかなレベルで強調表示する情報メッセージを示します。これは、操作のパフォーマンスには影響を与えません。
-
詳細レベル(低): このレベルでは、失敗した操作のデバッグに最も役立つ詳細な情報イベントが指定されます。操作が失敗して診断情報が必要な場合は、システム・プロパティを構成して、この診断レベルを設定できます。
-
詳細レベル(高): このレベルでは、操作のデバッグに最も役立つ詳細な情報イベントが指定されます。特定の操作のサブプログラムに入力パラメータとして渡される収集タイプの変数も、このレベルではロギングされます。操作が失敗して診断情報が必要な場合は、システム・プロパティを構成して、この診断レベルを設定できます。
-
なし: これはリアルタイム・データ・パージ操作のデフォルト・レベルです。このレベルではPL/SQL診断ロギングは無効になります。PL/SQL診断ロギングのために操作中にパフォーマンスの問題が発生した場合は、システム・プロパティを構成してこのレベルを設定し、操作のロギングをオフにできます。
診断レベルごとに診断ロギング表に取得されるデータは、表28-1に示すメッセージ・タイプに分類されます。
表28-1 診断レベルのメッセージ・タイプ
メッセージ・タイプ | メッセージの説明 | 含まれる診断レベル |
---|---|---|
NOTIFICATION | 操作のプライマリ・プログラムおよびサブプログラムのアクティブ化や非アクティブ化など、主なライフサイクル・イベント。 | 「情報」、「詳細レベル(低)」、「詳細レベル(高)」 |
DEBUG | 特定の操作における問題を診断するためにOracleサポート・サービスが利用できる詳細トレース情報または詳細デバッグ情報。 | 「詳細レベル(低)」、「詳細レベル(高)」 |
WARNING | 管理者が確認する必要がある潜在的な問題。たとえば、パラメータ値が無効な場合または指定されたファイルが存在しない場合です。 | 「情報」、「詳細レベル(低)」、「詳細レベル(高)」 |
FATAL | 管理者がすぐに対処する必要がある重大な問題。 | 「情報」、「詳細レベル(低)」、「詳細レベル(高)」 |
28.1.4 ロギングを制御する構成可能なシステム・プロパティ
リコンシリエーションとデータ・パージのロギング量を制御するには、OIM.DBDiagnosticLevelRecon
およびOIM.DBDiagnosticLevelDataPurge
システム・プロパティの値として診断レベルを設定できます。
次のシステム・プロパティは、リコンシリエーションおよびOIMデータ・パージ・スケジュール済アスクの実行のロギング量を制御します。
-
リコンシリエーションのDB診断レベル: キーワード
OIM.DBDiagnosticLevelRecon
-
オンライン・データ・パージのDB診断レベル: キーワード
OIM.DBDiagnosticLevelDataPurge
このシステム・プロパティの詳細は、「Oracle Identity Governanceのデフォルトのシステム・プロパティ」を参照してください。
28.2 診断レベルの構成
オンライン・データ・パージのDB診断レベル
およびリコンシリエーションのDB診断レベル
の各システム・プロパティの値を設定することで、リコンシリエーションおよびオンライン・データ・パージ操作の診断レベルを設定できます。
- Oracle Identity System Administrationにログインします。
- 「システム管理」の下で、「システム構成」をクリックします。
オンライン・データ・パージのDB診断レベル
またはリコンシリエーションのDB診断レベル
いずれかのシステム・プロパティを検索して開きます。- システム・プロパティの値を「詳細レベル(低)」または「詳細レベル(高)」に変更します。
- 「保存」をクリックします。
28.3 PL/SQL診断ロギング表に取得されるデータの理解
PL/SQL統合診断ログおよびデバッグ・フレームワークでは、設定された診断レベルに基づいてバックグラウンドで情報が収集されます。
フレームワークでは、次のメトリックを取得できます。
-
操作の実行に関するサマリー・レベル情報:
-
リコンシリエーション操作のバッチレベル・サマリー
-
リアルタイム・データ・パージ操作の実行レベル・サマリー
-
-
トランザクションのECID
-
成功または失敗のステータス
-
操作レベルとサブプログラムレベルの実行の開始、終了および実行時間
-
サブプログラム実行レベルの診断情報
次の表には操作の診断情報が格納されています。
DIAG_LOG表
この表には操作レベルの実行のデータが格納されます。表28-2にDIAG_LOG表の列を示します。
表28-2 DIAG_LOG表
列 | 説明 |
---|---|
DIAG_LOG_KEY | 操作レベルの実行を一意に識別するためのキーを格納します |
ECID | 同じトランザクションに関連付けられたイベントまたはリクエストを複数のコンポーネント間で相関させるための一意識別子を格納します |
MODULE_NAME | 次のOIM操作名を格納します。
|
DIAGNOSTIC_LEVEL |
次の値を格納します。
|
START_TIME | 操作実行全体の開始時間を格納します |
END_TIME | 操作実行全体の終了時間を格納します |
STATUS |
操作実行の全体的なステータスを格納します(実行中は次のいずれかのステータスになります)。
|
DESCRIPTION | RB_KEY (リコンシリエーション・バッチ・キー)、RJ_KEY (リコンシリエーション・ジョブ・キー)、リコンシリエーションのタイプ(信頼できるソース、ターゲット・リソース、ロール、ロール階層など)など、操作実行レベルの説明を格納します。 |
DIAG_LOG_DTLS表
この表には、サブプログラム実行レベルの診断詳細が含まれます。表28-3にDIAG_LOG_DTLS表の列を示します。
表28-3 DIAG_LOG_DTLS表
列 | 説明 |
---|---|
DIAG_LOGDTLS_KEY | 操作のサブプログラムを一意に識別するためのキーを格納します |
DIAG_LOG_KEY | DIAG_LOG表の論理外部キーを格納します |
MESSAGE_TYPE |
操作に設定された診断レベルに基づいて次のメッセージ・タイプを格納します。
|
SUBPROGRAM_NAME | 操作実行中に呼び出されたサブプログラムの名前を格納します |
SUBPROGRAM_EXEC_TIME | 操作実行中に呼び出されたサブプログラムの実行時間を格納します |
SUBPROGRAM_RUN_NOTE | 操作実行中に呼び出されたサブプログラムの実行レベルログを格納します |
28.4 PL/SQL診断ロギング表に取得されるデータの収集
DIAG_LOG表とDIAG_LOG_DTLS表に収集された診断データは、Excel形式として、またはOracle Data Pumpのエクスポート/インポート・ユーティリティを使用して、共有できます。
リコンシリエーションおよびデータ・パージ操作に関する問題のトラブルシューティングを支援するために、診断データをオラクル社と共有してください。DIAG_LOG表とDIAG_LOG_DTLS表に収集された診断データは、次のいずれかの方法を使用して共有できます。
-
データ量が数千件程度であれば、2つの表のデータをMicrosoft Excelスプレッドシートで共有できます。
-
データ量が数千件を超える場合は、診断データをダンプ・ファイルで共有できます。ダンプ・ファイルを作成するには、Oracle Data Pumpのエクスポート/インポート・ユーティリティを使用します。次のコマンドを使用して、2つの表を含む
DiagTblsExp.dmp
ファイルを作成します。expdp system/<SYSTEM_PASSWD> tables=<OIM_SCHEMA_NAME>.DIAG_LOG, <OIM_SCHEMA_NAME>.DIAG_LOG_DTLS directory=DATA_PUMP_DIR dumpfile=DiagTblsExp.dmp logfile=DiagTblsExp.log
このとき、
<SYSTEM_PASSWD>
にSYSTEMユーザーのパスワード、<OIM_SCHEMA_NAME>
にOracle Identity Managerスキーマの名前を指定します。たとえば:expdp system/PASSWORD tables=DEV_OIM.DIAG_LOG, TEST_OIM.DIAG_LOG_DTLS directory=DATA_PUMP_DIR dumpfile=DiagTblsExp.dmp logfile=DiagTblsExp.log
28.5 PL/SQL診断ロギング表に取得されるデータの増加の制御
デフォルトでは、DIAGNOSTIC_MAINTというOracle Databaseのスケジューラ・ジョブが自動的にスケジュールされて、診断ロギング表のデータがパージされます。必要に応じて保存期間を変更できます。
2つのPL/SQL診断ロギング表(DIAG_LOGおよびDIAG_LOG_DTLS)のデータ増加を制御するため、DIAGNOSTIC_MAINTが週1回日曜日の午前5時に実行されるように自動的にスケジュール設定されます。
デフォルトではこのジョブは次の操作を実行します。
-
COMPLETEDのステータスのすべてのレコードがDIAG_LOG表からパージされます。
-
STARTEDまたはERRORED_OUTのどちらかのステータスの過去7日間のすべてのレコードはどちらの表でも保持されます。
デフォルトの7日間から保存期間を延長するには、OIMユーザーとしてログインして、次のブロックを実行します。
BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE ( name => 'DIAGNOSTIC_MAINT', attribute => 'job_action', value => 'BEGIN oim_pkg_db_diagnostics.oim_sp_diag_purge(<RETENTION_PERIOD>); END;'); END; /
このとき、<RETENTION_PERIOD>を、必要な値で置き換えます。たとえば、保存期間を15日に変更するには、次のように実行します。
BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE ( name => 'DIAGNOSTIC_MAINT', attribute => 'job_action', value => 'BEGIN oim_pkg_db_diagnostics.oim_sp_diag_purge(15); END;'); END; /