ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Identity Manager開発者ガイド
11g リリース2 (11.1.2.1.0)
B69536-05
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

23 リコンシリエーションのカスタマイズ

この章では、リコンシリエーションの機能およびアーキテクチャと、リコンシリエーション操作のカスタマイズの様々な側面について、次の各項で説明します。

23.1 リコンシリエーションの機能

リコンシリエーション機能は、次のカテゴリに分類できます。

23.1.1 パフォーマンス強化の機能

次の機能は、リコンシリエーション時のパフォーマンスの向上に役立ちます。

23.1.1.1 新しいメタデータ・モデル - プロファイル

メタデータがリコンシリエーション・ターゲットに関連付けられていると、同じターゲットに対して複数のジョブを実行して様々なタイプのリコンシリエーションを行う機能が制限されます。そのため、Oracle Identity Managerの各種コンポーネントのすべての構成は、MDSと呼ばれるXMLストアに集中的に格納されています。

下位互換性のために、現在のデプロイメントは、Oracle Identity Manager Design Consoleを介して継続して構成を管理し、構成は引き続きOracle Identity Managerデータベースに格納されます。Oracle Identity Managerでは、構成APIは構成を表から自動的に読み取り、それをデフォルト・プロファイルと呼ばれるXMLプロファイルに変換し、そのプロファイルを既存のリコンシリエーションの実行に関連付けます。

すべてのメタデータは、Oracle Identity Manager Design Consoleを使用して管理されます。Oracle Identity Manager Design Consoleを使用して、デフォルトのリコンシリエーション・プロファイルを生成できます。Oracle Identity Manager Design Consoleからリコンシリエーション構成を変更する場合は、このデフォルトのプロファイルを使用してプロファイルを再生成できます。デプロイメント・マネージャから構成をインポートする場合は、デフォルトでプロファイルが生成されます。

デフォルト以外のすべてのプロファイルは、任意のXMLエディタを使用してすべて管理できます。


関連項目:

リコンシリエーション・プロファイルの詳細は、「リコンシリエーション・プロファイル」を参照してください。


23.1.1.2制御フローとイベントの処理のパラメータ

この項の内容は次のとおりです。

制御イベント処理のパラメータ

BatchSizeは、イベント処理を制御するパラメータです。これはバッチのサイズを決定します。バッチ・サイズが1の場合、一度に1つのイベントが処理されます。バッチ・サイズはシステム・プロパティとして利用でき、Oracle Identity Manager Design Consoleから管理できます。そのプロパティ名は、OIM.ReconBatchSizeです。システムのBatchSizeパラメータのデフォルト値は500です。システム・プロパティの詳細は、『Oracle Fusion Middleware Oracle Identity Manager管理者ガイド』のシステム・プロパティの管理に関する説明を参照してください。

自動再試行を制御するシステム・プロパティ

「リコンシリエーション・イベントの再試行回数」システム・プロパティは、リコンシリエーション・エンジンがエラーとしてフラグを付けるか手動キューに送信する前に項目を再試行する回数を指定して、自動再試行を制御します。このプロパティの値が0の場合は、自動再試行オプションが構成されていないことを意味します。


関連項目:

自動再試行の詳細は、「競合状態の処理」を参照してください。


23.1.1.3 リコンシリエーション実行によるイベントのグループ化

リコンシリエーション・データベースで作成されるすべてのイベントは、リコンシリエーション実行によってグループ化されます。リコンシリエーション実行のすべてのイベントは、共通のリコンシリエーション実行IDによってグループ化されます。各リコンシリエーション実行はプロファイルと関連付けられているため、リコンシリエーション実行のすべてのイベントは、同じプロファイルを使用して処理されます。これにより、構成はリコンシリエーション実行ごとに一度のみ取得されるため、パフォーマンスの最適化に役立ちます。

各プロファイルはそれぞれ異なるバッチ・サイズを使用できます。そのため、各ターゲット・リコンシリエーションに適したバッチ・サイズに調整することで、システム・パフォーマンスを向上させることができます。

23.1.1.4 バッチによるイベントのグループ化

バッチは、リコンシリエーション時のシステム・パフォーマンスを向上させるために導入されました。バッチには多数のイベントが含まれます。これはリコンシリエーション・エンジンの処理の単位です。バッチのサイズは設定可能です。リコンシリエーション実行は、固定サイズのバッチに分割されます。たとえば、リコンシリエーション実行が9900のイベントで構成され、バッチ・サイズが1000の場合、そのリコンシリエーション実行は、各サイズ1000のバッチと最後のサイズ900のバッチの計10個のバッチに分割されます。

バッチを1つの単位として処理すると、一度に1つのイベントを処理する際のオーバーヘッドを排除でき、システム・パフォーマンスが最適化されます。またこれにより、可能な場合にはバルク操作も実行できます。バッチを並列で実行して、ハードウェア・リソースをバランスよく使用することもできます。

23.1.1.5 リコンシリエーション・エンジン・ロジックのデータベースでの実装

以前のリリースでは、すべてのエンジン・ロジックはJavaで実装されており、一度に1つのイベントが処理されていました。11gリリース2 (11.1.2.1.0)では、イベントを処理するロジックのほとんどは、ストアド・プロシージャとして実装されています。バッチ・レベルでの処理とPLSQLで実装されたロジックの組合せにより、SQLレイヤーでバルク操作を実行できるようになりました。次の手順は、バルク(一度に1つのバッチ)で実行されます。

  • 必要なデータのチェック

  • 一致ルールの適用

  • アクション・ルールの適用

23.1.1.6 改善されたJavaエンジン

ストアド・プロシージャで実行できず、Javaレイヤーで実行する必要のある処理でも、次の理由により、以前のリリースのエンジンよりも優れたパフォーマンスが得られます。

  • 次の場合、Javaエンジンはデフォルトでバルク操作を実行します。

    • イベントをバッチでデータベースに送信

    • アクションに応じたバルク後処理編成の送信

  • 可能なかぎり、バルク操作を実行します。

23.1.1.7 改善されたデータベース・スキーマ

11gリリース2 (11.1.2.1.0)の新しいデータベース・スキーマによる顕著なパフォーマンスの向上は、単一の垂直表のかわりに水平表を使用して各種ターゲットのイベント詳細を格納することで実現されます。水平表はプロファイルごとに使用されます。


関連項目:

水平表の詳細は、「ステージング表」を参照してください。


23.1.2 Webベースのイベント管理インタフェース

Oracle Identity Managerには、Webベースのイベント管理インタフェースが付属しており、Webからイベントを管理できます。認可されたユーザーは、イベントとユーザーを検索し、イベントをユーザーおよびアカウントにリンクして例外を処理できます。イベントのクローズ、失敗したイベントの再評価の強制、および非定型リンクも実行できます。

非定型リンクは、「イベント管理」セクションの認可されたユーザーに提供される機能を参照して、イベントをOracle Identity Managerのいずれかのユーザーにリンクします。リコンシリエーション・エンジンによってそのイベントに対するユーザー一致が検出された場合でも、この非定型リンク機能により、ユーザーはその一致を無視して別のユーザーを選択できるようになります。これにより、誤った一致によって生じる例外を処理できます。


関連項目:

リコンシリエーション・イベントを管理するために実行されるタスクの詳細は、『Oracle Fusion Middleware Oracle Identity Manager管理者ガイド』のリコンシリエーションの管理に関する説明を参照してください。


23.1.3 その他の機能

その他のリコンシリエーションの機能について、次の各項で説明します。

23.1.3.1 ステージング表

以前のバージョンのOracle Identity Managerでは、様々なターゲットから取得したすべてのイベント詳細が、リコンシリエーション・スキーマの1つの表に格納されます。各種リコンシリエーション・イベントに含まれる属性およびその名前とタイプのリストは、ターゲットによって異なる場合があります。つまり、あるターゲットのイベントに含まれるデータ・セットが、別のターゲットのイベントに含まれるものと異なる場合があります。このようなイベントのデータを1つの表に格納する唯一の方法は、1行に1つの属性を格納することです。そのため、以前のリリースでは、イベント詳細表の各行が、リコンシリエーション・イベント・データの1つの属性に相当しています。各属性行には、その属性が属するイベント、属性の名前、タイプ、値が格納されます。このような表のことを、このドキュメントでは垂直表とも呼びます。垂直表は、柔軟性と拡張性の面では利点がありますが、パフォーマンスの観点からはイベント・レコードを格納する効率的な方法とはいえません。

垂直表での格納が、水平表またはステージング表と呼ばれるターゲットごとの個別表で置き換えられました。イベントの属性を表内の行として垂直に格納する(属性の数が行数になる)のではなく、イベントの属性を列として格納するため、水平表と呼ばれます。つまり、ターゲットの属性数と同じ数の列が存在します。各イベントは、行として格納されます。異なるターゲットは異なる属性セットを持つことがあるため、各ターゲットは、イベントの詳細を格納するリコンシリエーション・スキーマ内に個別の表を持ちます。子表内の行として格納される複数値属性を処理する要件のために、1つのターゲットに複数の表が存在することがあります。

特定のプロファイルに対するイベント詳細表の各行には、1つのイベントのリコンシリエーション・フィールドのリストが格納されます。たとえば、信頼できるユーザーのリコンシリエーションで姓、名、電子メール属性がリコンサイルされる場合、RA_XELLERATE_USERステージング表に次の列が含まれます。

RE_KEY、RECON_FIRSTNAME、RECON_LASTNAME、RECON_EMAI

ステージング表の作成と管理

ステージング表は、ターゲットをOracle Identity Managerに対してデプロイしている場合のみ作成できます。これは、ターゲットのデプロイ時に、リコンシリエーション・システムがリコンサイルする必要のあるターゲットの属性とそのタイプのリストを把握しているためです。

デプロイメント・マネージャから構成をインポートしたり、Oracle Identity Manager Design Consoleから変更を行ったりした場合には、ステージング表が更新されます。Oracle Identity Manager Design Consoleからステージング表を生成するには、オブジェクト・リコンシリエーション・フォームで、リコンシリエーション・プロファイルの生成をクリックします。

23.1.3.2 競合状態の処理

以前のリリースのOracle Identity Managerでは、イベントをリコンサイルする際に、そのイベントをリコンサイルする前に別のイベントをリコンサイルする必要があるために、リコンシリエーション・エンジンがそのイベントを正常に処理できないことがありました。たとえば、リコンシリエーション・エンジンは、アカウントを作成するイベントをリコンサイルする前に、ユーザーを作成するイベントをリコンサイルする必要があります。これを競合状態と呼びます。

Oracle Identity Manager 11gリリース2 (11.1.2.1.0)では、「リコンシリエーション・イベントの再試行回数」システム・プロパティの値を設定することによって競合状態が処理されます。自動再試行を構成するには、このプロパティに0より大きい値を指定します。自動再試行を構成しない場合は、「リコンシリエーション・イベントの再試行回数」システム・プロパティの値に0を指定します。

自動再試行を構成する場合、リコンシリエーション・エンジンは競合状態をチェックします。競合状態が見つかると、リコンシリエーション・エンジンは、再試行回数に達するまでリコンシリエーション・イベントを再評価キューに入れます。

リコンシリエーションの再試行スケジュール済タスクは、再試行を待っているイベントがないか、そして再評価される準備ができているかどうかを定期的にチェックし、ある場合は、それをリコンシリエーション・エンジン処理用のキューに入れます。このスケジュール済タスクは、デフォルトで構成されています。


注意:

自動再試行回数に達すると、リコンシリエーション・エンジンはイベントの処理をやめ、一致ルールによってステータスを設定します。ただし、「イベント管理」から再評価をリクエストすれば、手動で再試行できます。イベントの再評価の詳細は、『Oracle Fusion Middleware Oracle Identity Manager管理者ガイド』のイベントの再評価に関する説明を参照してください。


自動再試行は次の競合状態を処理できます。

  • ユーザーを作成するイベントがまだ処理されていないために、Oracle Identity Managerのアカウントを作成するアカウント・イベントが、このイベントのユーザーが作成される前に処理されます。

  • Oracle Identity ManagerのXellerateユーザーを作成するユーザー・イベントが、このユーザーが属する組織が作成される前に処理されます。

すべての自動再試行パラメータは、リコンシリエーション・プロファイルの一部として格納されます。つまり、あるリコンシリエーション実行に属するイベントに自動再試行が構成されていて、別のリコンシリエーション実行に属するイベントでは自動再試行が構成されていないこともあります。

Oracle Identity Managerでは、このプロファイル内のパラメータを管理するUIがないため、XMLエディタを使用してXMLプロファイルを直接編集してパラメータを管理する必要があります。XMLプロファイルの編集については、「リコンシリエーション・プロファイルの作成および更新」を参照してください。

23.1.3.3 非定型リンク

リコンシリエーション・エンジンで一致ルールに基づいて所有者を決定できない場合は、Oracle Identity Manager拡張管理を使用してアカウントをユーザーに手動でリンクできます。その後のアカウントに対する変更は、そのアカウントに自動的にリンクされます。

非定型リンクは、ユーザー・イベントおよびアカウント・イベントでサポートされています。リコンシリエーション・エンジンで一致ルールに基づいて所有者を決定できない場合は、ユーザー・イベントまたはアカウント・イベントをユーザーに手動でリンクできます。


関連項目:

非定型リンクの実行方法の詳細は、『Oracle Fusion Middleware Oracle Identity Manager管理者ガイド』の非定型リンクに関する説明を参照してください。


23.2 リコンシリエーションのアーキテクチャ

リコンシリエーションは、2つのシステム間のエンティティ・データが整合性のある状態で維持されるように、エンティティ・データをターゲット・システムからOracle Identity Managerに取得するプロセスです。図23-1に、リコンシリエーションに関係するOracle Identity Managerの様々なコンポーネント、およびこれらのコンポーネント間の相互作用を示します。

図23-1 リコンシリエーションのアーキテクチャ

図23-1の説明が続きます
「図23-1 リコンシリエーションのアーキテクチャ」の説明

リコンシリエーションのアーキテクチャを次のステップで説明します。

  1. 各コネクタには、スケジュール済タスクが関連付けられます。スケジューラがコネクタのスケジュール済タスクをトリガーし、このタスクによってイベントを生成するためのリコンシリエーションAPIが起動されます。イベントのタイプは、標準、変更ログまたは削除のいずれかです。

    スケジューラの詳細は、『Oracle Fusion Middleware Oracle Identity Manager管理者ガイド』のスケジューラの管理に関する説明を参照してください。スケジュール済タスクの詳細は、「リコンシリエーションのコネクタ」を参照してください。

  2. リコンシリエーション・イベントがリコンシリエーション・イベント・リポジトリ(Oracle Identity Managerデータベース)に格納されます。

  3. バッチ・サイズが適合する場合は、イベントのバッチをまとめて処理する非同期メッセージが送信されます。スケジュール済タスクの終了時に、最後のバッチのイベントを処理する目的で、別の非同期メッセージが送信されます。


    注意:

    • 図23-1では、リコンシリエーション・エンジンがアクションJAVAレイヤーおよびリコンシリエーション・イベント・リポジトリの一部をカプセル化し、この図の矢印のすべてをオーケストレートしています。

    • このリリースでは、信頼できるソース・リコンシリエーションはユーザーに対してのみサポートされています。ロール、ロール・メンバーシップおよびロール階層のリコンシリエーションはサポートされていません。

    • このリリースのOracle Identity Managerでは、組織に対して、信頼できるソース・リコンシリエーションとアカウント・リコンシリエーションがサポートされています。


  4. 処理には、データの検証、エンティティの照合およびアクション(作成、更新、削除など)が含まれます。その後、カーネル・オーケストレーションを介した後処理が続きます。アクション・モジュールの詳細は、「アクション・モジュール」を参照してください。リコンシリエーション・プロファイルの詳細は、「新しいメタデータ・モデル - プロファイル」を参照してください。

  5. デフォルトでは、リコンシリエーションのイベント処理は大量に発生するため、後処理までのすべてのステップは、PL/SQLストアド・プロシージャで実行されます。次のシナリオでは、イベントを一度に1つずつ処理できます(この場合、照合までのすべてのステップはPL/SQLで処理され、アクションはJavaレイヤーで実行されます)。

    • イベントがイベント管理UIから処理される場合

    • 失敗したイベントが、定期的に実行される再試行のスケジュール済タスクによって再試行される場合

    単一のイベントを処理するリコンシリエーションの場合、アクションおよび後処理はカーネル経由で実行されます。

  6. リコンシリエーション・イベントは、リコンシリエーション管理サービスの別のAPIコールによって、イベント管理UIに対して使用可能になります。

リコンシリエーション・サービスの様々なコンポーネントの機能は、次の各項を参照してください。

23.2.1 リコンシリエーション・プロファイル

リコンシリエーション・プロファイルは、特定のリソースに対するリコンシリエーションの実行方法を管理するために定義された構成です。特定のリソースに複数のリコンシリエーション・プロファイルを指定し、それぞれに一致ルール、アクション・ルールおよびフィールド・マッピングを定義し、その際、リソースに対応する各プロファイルには異なる定義を指定できます。たとえば、削除を1日1回のみ実行する必要がある場合は、一方のリコンシリエーションの実行で新規および変更されたアカウントのリコンシリエーションを実行し、もう一方のリコンシリエーションの実行でアカウントの削除をリコンサイルできます。この例では、2つのリコンシリエーション実行と2つのプロファイルを定義します。各プロファイルはそれぞれのリコンシリエーションの実行に関連付けられ、各プロファイルには独自のリコンシリエーション・ルールがあります。

プロファイルはXMLベースの構成ファイルで、Oracle Identity Manager MetaData Store (MDS)に格納されます。例23-1に、リコンシリエーション・プロファイルのサンプルを示します。

例23-1 リコンシリエーション・プロファイルのサンプル

<?xml version='1.0' encoding='UTF-8'?>
<profile xmlns="http://www.oracle.com/oracle/iam/reconciliation/config" ownerType="User" changeType="CHANGELOG" auditEnabled="true" batchSize="500" resourceType="Account" name="Modified AD User" configure="true" active="true">
   <matchingRule>((UPPER(USR.usr_udf_obguid)=UPPER(RA_ADUSERE469E5C8.RA_OBJECTGUID)))</matchingRule>
   <form oimTableName="UD_ADUSER" stagingTableName="RA_ADUSERE469E5C8" name="Modified AD User" mlsOimTable="mlsOIMTableIfAny" mlsStagingTable="mlsStagingTableIfmlsOIMTable">
      <matchingRule>(UD_ADUSER.UD_ADUSER_OBJECTGUID=RA_ADUSERE469E5C8.RA_OBJECTGUID)</matchingRule>
      <targetAttributes>
         <targetAttribute type="String" name="Status">
            <stagingField type="String" length="256" name="RA_STATUS"/>
         </targetAttribute>
         <targetAttribute type="String" name="copyStatus" ref="Status" mls="true">
            <stagingField type="String" length="256" name="COPY_STATUS"/>
            <oimAttribute type="String" fieldName="OIM_OBJECT_STATUS" fieldType="String" name="OIM_OBJECT_STATUS"/>
         </targetAttribute>
         <targetAttribute type="String" name="password" encrypted="true" keyField="false" required="false">
            <stagingField type="String" length="256" name="PASSWORD"/>
            <oimAttribute type="String" fieldName="UD_ADUSER_PASSWORD" fieldType="String" name="AD Password"/>
         </targetAttribute>         
         <targetAttribute type="Date" name="accountExpires">
            <stagingField type="Date" name="RA_ACCOUNTEXPIRES"/>
            <oimAttribute type="Date" fieldName="UD_ADUSER_DATE" fieldType="Date" name="Account Expiration Date"/>
         </targetAttribute>         
         <targetAttribute type="ITResource" name="IT Resource" keyField="false">
            <stagingField type="ITResource" length="19" name="RA_ITRESOURCE15641F83"/>
            <oimAttribute type="Number" fieldName="UD_ADUSER_AD" fieldType="Number" name="AD Server"/>
         </targetAttribute>
         <targetAttribute type="String" keyField="true" name="objectGUID">
            <stagingField type="String" length="32" name="RA_OBJECTGUID"/>
            <oimAttribute type="String" fieldName="UD_ADUSER_OBJECTGUID" fieldType="String" name="Object GUID"/>
         </targetAttribute>
      </targetAttributes>
      <form oimTableName="UD_ADUSRC" stagingTableName="RA_ADUSERGROUPDETA902DB909" name="memberOf">
         <matchingRule>(UD_ADUSRC.UD_ADUSRC_GROUPNAME=RA_ADUSERGROUPDETA902DB909.RA_MEMBEROF)</matchingRule>
         <targetAttributes>
            <targetAttribute type="String" keyField="true" name="memberOf">
               <stagingField type="String" length="256" name="RA_MEMBEROF"/>
               <oimAttribute type="String" fieldName="UD_ADUSRC_GROUPNAME" fieldType="String" name="UD_ADUSRC_GROUPNAME"/>
            </targetAttribute>
         </targetAttributes>
      </form>
   </form>
   <actionRules>
      <actionRule condition="One Entity Match Found" action="Establish Link"/>
   </actionRules>
</profile>

表23-1に、リコンシリエーション・プロファイルXMLファイルの要素および構造を示します。

表23-1 リコンシリエーション・プロファイルXMLの要素

要素レベル1 サブ要素レベル2 サブ要素レベル3 サブ要素レベル4 サブ要素レベル5 説明

<profile>





リコンシリエーション構成プロファイルのルート要素またはオブジェクト。


<ownerType>




ロール階層、ロール・メンバーシップ、アカウントのみに対して、それぞれRole、Role、Userの値が移入されます。


<changeType>




デフォルトでは(または要素が存在しない場合)、値はCHANGELOGです。それ以外の場合、値はREGULAR、CHANGELOGまたはDELETEとなります。


<auditEnabled>




アカウント・タイプのプロファイルのみで使用されます。デフォルトでは(または要素が存在しない場合)、値はfalseで、リソース・オブジェクトの監査が停止されます。


<batchSize>




バッチごとのリコンシリエーション・イベントのサイズまたは数を変更します。デフォルトでは(または要素が存在しない場合)、バッチ・サイズは500です。


<resourceType>




値は、Account、User、Role、RoleRole、RoleUser、Organizationのいずれかです。


<name>




これは、リソース・オブジェクト名です。


<configure>




デフォルトでは(または要素が存在しない場合)、値はfalseです。システムでリコンシリエーション構成を作成または更新する場合は、これをtrueとしてマークする必要があります。プロファイルのすべての手動修正の後、この属性をtrueとしてマークする必要があります。本番のテストの場合は、ターゲット・システムにインポートする前にこの要素をtrueとしてマークします。


<active>




デフォルトでは(または要素が存在しない場合)、値はtrueです。破損したプロファイルまたは無効なプロファイルの場合、値はfalseで、プロファイルが使用不可とマークされます。このようなプロファイルは、システムにロードされません。プロファイルのすべての手動修正の後、この属性を削除するか、trueとしてマークする必要があります。


<matchingRule>




ロール階層、ロール・メンバーシップ、アカウントのみに対して、所有者一致ルールが移入されます。それ以外の場合、要素は存在しません。


<form>




プロファイルごとに1つの親フォームを指定します。



<oimTableName>



データのリコンサイル先のOracle Identity Manager表。



<stagingTableName>



ターゲット・システムのデータが処理前に格納されるステージング表。



<name>



親フォームの場合はプロファイル名と同じであり、子フォームの場合は複数値属性名と同じです。



<mlsOimTable>



リソース・オブジェクトがMLA対応の場合は、データのリコンサイル先である多言語サポート(MLS) Oracle Identity Manager表。



<mlsStagingTable>



リソース・オブジェクトがMLS対応の場合は、ターゲット・システムのデータが処理前に格納されるMLSステージング表。



<matchingRule>



フォーム(プロファイルに関連付けられているリソース・オブジェクト)の一致ルールであり、必須です。



<targetAttributes>



すべてのターゲット属性をグループ化します。




<targetAttribute>


ターゲット・システムの属性ごとに1つ。





<type>

ターゲット属性のデータ・タイプ。





<keyfield>

デフォルト値はfalseです。アカウント・リソース・タイプの一致ルールで使用されます。





<name>

リコンシリエーションを開始するコネクタによって提供される、ターゲット・システムの属性の名前。





<required>

属性が必須の場合、この要素が存在する必要があります。





<encrypted>

値がtrueの場合、属性値は暗号化されてステージング表およびOracle Identity Manager表に格納されます。





<ref>

値がコピーされてこの属性に格納される、同じフォーム内のターゲット属性の名前。





<stagingField>

ターゲット属性に対応する、ステージング表の列を指定します。これには、次の要素が含まれます。

<type>: ステージング表の列のデータ・タイプ。

<length>: ステージング表の列またはフィールドの長さまたはサイズ。

<name>: ステージング表の列の名前。





<oimAttribute>

マップされたOracle Identity Managerドメイン属性名を指定します。この要素は、ターゲット属性がマップされる場合にのみ存在します。これには、次の要素が含まれます。

<name>: Oracle Identity Manager属性名

<type>: Oracle Identity Manager属性タイプ

<fieldName>: Oracle Identity Managerのマップ済属性に対応するOracle Identity Manager表の列名

<fieldType>: Oracle Identity Managerのマップ済属性に対応するOracle Identity Manager表の列の型



<form>



子フォームか、親フォームまたはルート・フォームのフォームを指定します。複数値属性に対応します。




<matchingRule>


子フォームの一致ルール。




<targetAttributes>


これは、親の<targetAttributes>要素と同じ要素です。この要素は、複数回ネストできます(例: <form><targetAttributes><form><targetAttributes>)。


<actionRules>




リソース・オブジェクトのすべてのアクション・ルールをグループ化します。



<actionRule>



アクション・ルールごとのactionRule要素。




<condition>


値は、No Matches Found、One Entity Match Found、Multiple Entity Matches Found、One Process Match Found、Multiple Process Matches Foundのいずれかです。




<action>


プロファイルXSDに基づいて任意に指定できます。


リソース・オブジェクトには、リコンシリエーション構成に関連付けられたデフォルトのプロファイルが常に存在します。デフォルトのプロファイルは、開発者の環境のOracle Identity Manager Design Consoleから明示的に生成するか、デプロイメント・マネージャからのインポート時に暗黙的に生成できます。プロファイルを作成および更新する方法の詳細は、「リコンシリエーション・プロファイルの手動による更新」を参照してください。

23.2.2 リコンシリエーション・メタデータ

リコンシリエーション・メタデータは、リコンシリエーション・イベントの作成と処理で使用する様々な構成で構成されます。リコンシリエーション・メタデータは、プロファイルと呼ばれる論理的なコンテナに格納されます。リコンシリエーション・プロファイルの詳細は、「リコンシリエーション・プロファイル」を参照してください。

次に、リコンシリエーション・メタデータの例を示します。

  • マッピング・ルール: ターゲット・システムから受け取ったデータを、そのターゲット・システムに関して管理されている、Oracle Identity Managerのデータにマップする際に使用されます。

  • 一致ルール: イベント・データと特定のアカウント、ユーザーまたはロールを相互に関連付けるために、各リコンシリエーション・イベントの処理時に使用されます。

  • アクション・ルール: リコンシリエーション・イベントの処理結果に基づいてOracle Identity Managerが実行するアクションを指定するために使用されます。

  • ターゲット属性のリスト: リコンシリエーションを介してターゲット・システムから受け取ったデータ属性の定義に使用されます。マッピング・ルールで使用され、Oracle Identity Manager Design Consoleを使用して構成されます。

リコンシリエーション・イベントの作成と処理で使用する様々な構成は、Oracle Identity Manager Design Consoleを使用して管理され、下位互換性のために、Oracle Identity Managerリリース9.1.0と同じOracle Identity Managerの表に格納されます。さらに、これらの構成はリコンシリエーション・プロファイルにも格納されます。


注意:

Oracle Identity Managerでのリコンシリエーションには、メタデータ・モデルが使用されます。Oracle Fusion Middleware Oracle Identity Manager管理者ガイドのリコンシリエーション・イベントの管理に関する項を参照してください。


23.2.3 リコンシリエーション・ターゲット

リコンシリエーション・ターゲットとは、Oracle Identity Managerの変更のソースとして機能するアプリケーションのインスタンスです。リコンシリエーション・ターゲットの例には、Oracle Identity Managerのアイデンティティのソースとして機能する人事管理システムがあります。リコンシリエーション・ターゲットのソースは、ユーザーまたはアカウントのいずれかです。

23.2.4 リコンシリエーション実行

リコンシリエーション実行とは、リコンシリエーション・コネクタと関連する構成の組合せを意味し、スケジュール済タスクによって実行される場合は、関連する構成に定義されているルールに基づいてリコンシリエーションを実行します。スケジューラは、リコンシリエーションを固定間隔で定期的に実行します。リコンシリエーション実行はOracle Identity Managerのスケジューラでスケジュールされ、指定した頻度で実行されます。リコンシリエーション実行時に作成されたすべてのイベントは、一意のリコンシリエーション実行IDに従ってグループ化されます。

23.2.5 リコンシリエーションAPI

リコンシリエーションAPIは、リコンシリエーション・データをリコンシリエーション・イベントの形式でOracle Identity Managerに提供するために公開された一連のAPIです。コネクタは、このAPIを使用して、リコンシリエーション・イベント・リポジトリにデータをプッシュできます。リコンシリエーションをスケジュールに従って実行する場合は、APIを実行するスケジュール済タスクを設定できます。既存のAPIがサポートされているため、既存のコネクタを変更する必要はありません。

23.2.6 リコンシリエーション・スキーマ

リコンシリエーション用にターゲット・システムから受け取ったデータは、リコンシリエーション・スキーマに格納されます。このデータには、Oracle Identity Managerとリコンサイルする変更も含まれています。

リコンシリエーション・スキーマとは、リコンシリエーション・データを格納する一連のスキーマ表です。リコンシリエーション・スキーマは、パフォーマンス上の理由および将来の拡張性に備えて再設計されています。リコンシリエーション・スキーマの詳細は、「改善されたデータベース・スキーマ」を参照してください。

23.2.7 リコンシリエーション・エンジン

リコンシリエーション・エンジンでは、構成可能なすべてのコンポーネントが使用され、これらのコンポーネントを使用して入力データをアクション・アイテムのリストに変換するデータ・プロセッサとルール・エバリュエータが組み込まれています。ルールのコンテキストに基づいてアクションを自動化できるかどうかを判断するコンポーネントも組み込まれています。アクションが自動または手動で実行されると、エンジンは適切な更新とプロビジョニング・アクションを実行します。

リコンシリエーション・エンジンのメイン・タスクは、比較を実施して、実行するアクションを判断し、そのアクションをOracle Identity Managerで適用することです。2つのモジュールがあり、各モジュールについては、次の各項で説明します。

23.2.7.1 照合モジュール

プロファイルで指定した照合ルールは、検索対象レコードがOracle Identity Managerにあるかどうかを識別するために使用されます。一致ルールは、Oracle Identity Managerにすでにレコードがあるアイデンティティに対応するデータであるかどうかを識別するためのルール、あるいはOracle Identity Managerでアカウントの所有者を識別するためのルールです。

アカウントのエンティティでは、レコードが見つからない場合は、次に所有者の照合が実行され、アカウントの所有者が識別されます。

ロール階層イベントでは、親ロールおよび子ロールを識別する照合が実行されます。


注意:

ロール階層およびロール・メンバーシップのリコンシリエーションの実行では、照合基準に、ネームスペースとロール名の両方が含まれている必要があります。次に、照合ルールの例を示します。

((UGP.ugp_rolename=x) and (UGP.ugp_namespace=y))

xはロール名にマップされているステージング表名の列の名前で、yはネームスペースにマップされるステージング列の名前です。


評価が終了すると、照合表には、イベントの基準を満たし、Oracle Identity Manager内で検出された考えられる適合すべてが格納され、イベントの状態は表23-2に示すいずれかのステータスに更新されます。

表23-2 リコンシリエーションのステータス・イベント

ステータス・イベント 説明

データを受信しました

イベント・データがデータベースに作成され、次の処理に対する準備が整っています。

イベントを受信しました

リコンシリエーション・イベントが作成され、次の処理に対する準備が整っています。finishReconciliationEvent APIはコールされていません。

データ検証に失敗しました

リコンシリエーション・イベント・レコードは無効です。たとえば、ロール・カテゴリが無効なロール・イベントは検証に失敗します。(この状況は競合状態を示している可能性があります。)RE_NOTEフィールドには失敗の詳細が表示され、ユーザー・インタフェースにも表示されます。

データ検証に成功しました

イベント・データが正常に検証され、イベントはエンジンで支障なく処理できます。

複数のアカウントの一致が見つかりました

現在の一致ルールでは、データと一致する複数のアカウント・レコードが見つかりました。

アカウントの一致が見つかりません

現在の一致ルールでは、データと一致するアカウント・レコードは見つかりません。

単一のアカウントの一致が見つかりました

現在の一致ルールでは、データと一致する単一のアカウント・レコードが見つかりました。

複数の組織の一致が見つかりました

現在の一致ルールでは、データと一致する複数の組織レコードが見つかりました。

組織の一致が見つかりません

現在の一致ルールでは、データと一致する組織レコードは見つかりません。

単一の組織の一致が見つかりました

現在の一致ルールでは、データと一致する単一の組織レコードが見つかりました。

複数のロール付与の一致が見つかりました

ロール内のユーザー・メンバーシップと一致する複数のレコードが見つかりました。

ロール付与の一致が見つかりません

ロール内のユーザー・メンバーシップと一致するレコードは見つかりません。

単一のロール付与の一致が見つかりました

ロール内のユーザー・メンバーシップと一致する単一のレコードが見つかりました。

複数のロールの一致が見つかりました

現在の一致ルールでは、データと一致する複数のロール・レコードが見つかりました。

ロールの一致が見つかりません

現在の一致ルールでは、データと一致するロール・レコードは見つかりません。

単一のロールの一致が見つかりました

現在の一致ルールでは、データと一致する単一のロール・レコードが見つかりました。

ロール・メンバーが見つかりませんでした

現在の一致ルールでは、データと一致するロール・メンバーは見つかりません。

ロールの親が見つかりません

現在の一致ルールでは、データと一致するロールは見つかりません。

複数のロール関係の一致が見つかりました

現在の一致ルールでは、イベントのデータと一致する複数のロール対ロールの関係が見つかりました。

ロール関係の一致が見つかりません

現在の一致ルールでは、イベントのデータと一致するロール対ロールの関係は見つかりません。

単一のロール関係の一致が見つかりました

現在の一致ルールでは、イベントのデータと一致する単一のロール対ロールの関係が見つかりました。

複数のユーザーの一致が見つかりました

現在の一致ルールでは、データと一致する複数のユーザー・レコードが見つかりました。

ユーザーの一致が見つかりません

現在の一致ルールでは、データと一致するユーザー・レコードは見つかりません。

単一のユーザーの一致が見つかりました

現在の一致ルールでは、データと一致する単一のユーザー・レコードが見つかりました。

無効なイベント・データが渡されました

イベントに無効なデータが含まれています。

再評価中です

リコンシリエーション・イベントは、現在、リコンシリエーション・イベント管理UIで再評価されています。

再試行中です

リコンシリエーション・イベントは、現在、自動的に再試行されています。このステータス・イベントは非推奨になりました。

作成に失敗しました

ユーザー、アカウントまたはロールのエンティティが、正常に作成されていません。

作成に成功しました

ユーザー、アカウントまたはロールのエンティティは、正常に作成されました。

削除に失敗しました

ユーザー、アカウントまたはロールのエンティティが、正常に削除されていません。

削除に成功しました

ユーザー、アカウントまたはロールのエンティティは、正常に削除されました。

イベントがクローズされました

リコンシリエーション・イベントは、リコンシリエーション・イベント管理UIからクローズされました。変更は完了しています。

更新に失敗しました

ユーザー、アカウントまたはロールのエンティティが、正常に更新されていません。

更新に成功しました

ユーザー、アカウントまたはロールのエンティティは、正常に更新されました。


23.2.7.2 アクション・モジュール

このモジュールでは、表23-3に示すように、イベントの状態、エンティティ・タイプおよびアクション・ルールに基づいてアクションが適用されます。

表23-3 アクション・ルール

イベントの状態 エンティティ・タイプ アクション 説明

ユーザーの一致が見つかりません

ユーザー

なし

アクションは実行されません。



ユーザーの作成

Oracle Identity Managerのユーザーを作成します。

アカウントの一致が見つかりません

アカウント

なし

アクションは実行されません。

単一のユーザーが一致しました

ユーザーまたはアカウント

なし

アクションは実行されません。


ユーザー

リンクの確立

変更タイプに基づいて一致したユーザーを変更または削除します。


アカウント

リンクの確立

所有者が識別され、アカウントが作成されます。

複数のユーザーが一致しました

ユーザーまたはアカウント

なし

アクションは実行されません。

単一のアカウントが一致しました

アカウント

なし

アクションは実行されません。



リンクの確立

変更タイプに基づいてアカウントを変更または失効します。

複数のアカウントが一致しました


なし

アクションは実行されません。

ロールの一致が見つかりません

ロール

なし

アクションは実行されません。

単一のロールの一致が見つかりました

ロール

なし

アクションは実行されません。



リンクの確立

ロールを変更または削除します。


ロール・メンバーシップ

ロール・メンバーシップの作成

ロール・メンバーをOracle Identity Managerに付与します。



ロール・メンバーシップの削除

ロール・メンバーをOracle Identity Managerから削除します。



なし

アクションは実行されません。


ロール階層

ロール階層の作成

Oracle Identity Managerにロール階層を作成します。



ロール階層の削除

Oracle Identity Managerのロール階層を削除します。



なし

アクションは実行されません。

複数のロールが一致しました

ロール、ロール・メンバーシップおよびロール階層

なし

アクションは実行されません。

ロール付与の一致が見つかりません

ロール・メンバーシップ

なし

アクションは実行されません。



ロール・メンバーの作成

Oracle Identity Managerにロール・メンバーを作成します。

単一のロール付与の一致が見つかりました

ロール・メンバーシップ

なし

アクションは実行されません。



リンクの確立

ロール・メンバーの削除

複数のロール付与の一致が見つかりました

ロール・メンバーシップ

なし

アクションは実行されません。

注意: ロール付与の照合は主キー(ユーザー・キーとグループ・キーの組合せ)を検索することで処理されるため、この状態は発生しません。

ロールの親の一致が見つかりません

ロール階層

なし

アクションは実行されません。



ロールの親の作成

Oracle Identity Managerにロールの親を作成します。

単一のロールの親の一致が見つかりました

ロール階層

なし

アクションは実行されません。



リンクの確立

ロールの親を削除します。

複数のロールの親の一致が見つかりました

ロール階層

なし

アクションは実行されません。

データ検証に失敗しました

ロール、ロール階層、ロール・メンバー

競合状態

アクションは実行されません。イベントを再評価する必要があります。

親ロールが見つかりません

ロール階層

競合状態

アクションは実行されません。イベントを再評価する必要があります。

ロール・メンバーが見つかりません

ロール・メンバーシップ

競合状態

アクションは実行されません。イベントを再評価する必要があります。


23.2.8 リコンシリエーションのコネクタ

コネクタとは、ターゲット・システムから変更を抽出し、リコンシリエーションAPIをコールしてリコンシリエーション・スキーマにイベントを作成するソフトウェアです。使用するコネクタが事前定義済リコンシリエーション・モジュールに付属している場合は、スケジュール済タスク定義を使用できます。このコンポーネントを使用して、データおよび他のコネクタ固有のパラメータを追跡するために、ターゲット・システムで変更がポーリングされる頻度を制御します。

リコンシリエーションのコネクタは、デプロイメント・マネージャを使用してデプロイされます。コネクタがデプロイされると、そのコネクタの対応するリコンシリエーション・プロファイルがメタデータ・ストア(MDS)に作成され、イベント・データを格納する水平表も作成されます。


注意:

リコンシリエーションの実行中は、リコンシリエーション・プロファイルを手動で更新したり、デプロイメント・マネージャまたはOracle Identity Manager Design Consoleからリコンシリエーション構成を更新しないでください。これは、リコンシリエーションの実行中にリコンシリエーション・フィールドが削除または更新されると、イベント・データが無効になる可能性があるためです。


コネクタの構成の詳細は、Oracle Identity Managerのコネクタのドキュメントを参照してください。


関連項目:


23.2.9 アーカイブ

リコンシリエーション・アーカイブ・ユーティリティを使用すると、処理したイベントをアクティブ・リコンシリエーション表からアーカイブ表に移動できます。移動するイベントは、時間の範囲に基づいて選択できます。アーカイブできるのは、リンクしたイベントおよびクローズしたイベント(つまり、正常に処理されたか、管理者がクローズしたイベント)のみです。


関連項目:

リコンシリエーション・アーカイブ・ユーティリティの使用方法は、『Oracle Fusion Middleware Oracle Identity Manager管理者ガイド』のリコンシリエーション・アーカイブ・ユーティリティの使用に関する説明を参照してください。


23.2.10 下位互換性

新規のリコンシリエーション・サービスを活用するために、既存のリコンシリエーション構成またはスケジュール済タスクを変更する必要はありません。

Oracle Identity Managerの以前のリリースでのリコンシリエーション設定に関する既存の構成は、11gリリース2 (11.1.2.1.0)にアップグレードした後も引き続き機能します。アップグレードの一環として、リコンサイル対象の既存のオブジェクト・タイプごとに、対応するリコンシリエーション・イベントの表が作成されます。

23.2.11 リコンシリエーション・イベントの管理

リコンシリエーション・イベントは、Oracle Identity System Administrationの「イベント管理」セクションを使用して管理されます。「イベント管理」セクションでは、Oracle Identity Managerリコンシリエーション・エンジンによって生成されたリコンシリエーション・イベントを表示および管理できます。これらのイベントは、スケジュール済リコンシリエーション実行を介して生成されます。「イベント管理」セクションには、リコンシリエーション実行およびイベントの検索機能が用意されています。「イベント管理」セクションを使用すると、生成されたイベントに対してリコンシリエーションを手動で実行できます。


関連項目:

Oracle Identity System Administrationでのリコンシリエーション・イベントの管理の詳細は、『Oracle Fusion Middleware Oracle Identity Manager管理者ガイド』のリコンシリエーション・イベントの管理に関する説明を参照してください。


23.3 リコンシリエーション・ルールの定義

次のインスタンスで起動されるリコンシリエーション・ルールを定義できます。

Design Consoleの「リコンシリエーション・ルール」フォームは、Oracle Identity Managerのリコンシリエーション・ルールを作成および管理するために使用します。このフォームは、「開発ツール」フォルダにあります。図23-2に、「リコンシリエーション・ルール」フォームを示します。

図23-2 「リコンシリエーション・ルール」フォーム

図23-2については周辺のテキストを参照

前述のように、このフォームを使用して定義されたルールは、信頼できるソースまたはターゲットのリソースでの変更に関連付けられているユーザーまたは組織いずれかとの一致に使用されます。これらのタイプのルールは、それぞれユーザー一致ルールまたは組織一致ルールと呼ばれます。これらのルールは、「ルール・デザイナ」フォームを使用して定義できるルールと似ていますが、「リコンシリエーション・ルール」フォームを使用して作成されたルールは、(単一のターゲット・リソースに関連するため)リソース・オブジェクト固有で、リコンシリエーション関連の機能のみに影響します。

リコンシリエーション・ルールの使用に関するトピックは次のとおりです。

23.3.1 リコンシリエーション・ルールの定義

次の手順では、リコンシリエーション・ルールの定義方法について説明します。


注意:

次の手順では、必ず「アクティブ」チェック・ボックスが選択されていることを確認してください。このチェック・ボックスが選択されていない場合、リソースに関連するリコンシリエーション・イベントの処理時に、Oracle Identity Managerのリコンシリエーション・エンジンによってルールが評価されません。ただし、このチェック・ボックスを選択できるのは、Oracle Identity Managerによって「valid」システム・チェック・ボックスが選択されている場合のみです。「valid」チェック・ボックスは、1つ以上のルール要素が作成され、そのルール要素のロジックが有効であるとOracle Identity Managerによって判断された後でのみ選択可能です。


ユーザーの一致または組織の一致用にリコンシリエーション・ルールを定義するには、次の手順を実行します。

  1. 「リコンシリエーション・ルール」フォームに移動します。

  2. 「名前」フィールドに、ルール名を入力します。

  3. 「オブジェクト」フィールドで、このルールを関連付けるターゲット・リソースを選択します。

  4. 「説明」フィールドにルールの説明を入力します。

    ルールに使用する「および」演算子または「または」演算子を選択します。「および」を選択した場合は、ルールのすべての要素(およびルールがネストされている場合はそれらのルール)が一致しないかぎり、ルールがtrueと評価されません。「または」を選択した場合は、ルールのいずれかの要素(またはルールがネストされている場合はそのいずれか)が一致すると、trueと評価されます。

  5. 「保存」をクリックします。

    ルール定義が保存されます。次に、このルールのルール要素を作成する必要があります。

23.3.2 ルール要素の追加

リコンシリエーション・ルールの個々の要素を定義するには、次の手順を実行します。

  1. 要素を追加するルール定義に移動します。

  2. 「ルール要素」タブのルール要素の追加をクリックします。

    ルール要素の追加ダイアログ・ボックスが表示されます。

  3. 「ルール要素」タブをクリックします。

  4. 「ユーザー・データ」メニューからユーザー関連のデータ項目を選択します。

    これが、ルール要素の評価時にOracle Identity Managerによって調査されるユーザー・データ要素になります。このメニューには、Oracleユーザー・フォームのすべてのフィールド(作成済のユーザー定義フィールドを含む)が表示されます。


    注意:

    組織の一致のためのルールを定義する場合、使用可能なデータおよびメニュー名は、ユーザーではなく組織に関連付けられます。


  5. 「演算子」メニューから演算子を選択します。

    これは、ルール要素の評価時に、選択したデータ項目の属性にOracle Identity Managerによって適用される条件です。有効な演算子は次のとおりです。

    • 次と等しい: このオプションを選択した場合、ユーザーまたは組織のレコードのデータ要素は、選択された属性と完全に一致する必要があります。


      注意:

      • ユーザーの信頼できるソースのリコンシリエーションを構成する場合は、Oracle Identity Managerユーザー・アカウントの「ユーザーID」フィールドがリコンシリエーション一致ルールで使用されていることを確認する必要があります。

      • 組織の信頼できるソースのリコンシリエーションを構成する場合は、Oracle Identity Managerユーザー・アカウントの「組織名」フィールドがリコンシリエーション一致ルールで使用されていることを確認する必要があります。


    • 次を含む: このオプションを選択した場合、ユーザーまたは組織のレコードのデータ要素は選択された属性と完全に一致するのではなく、この属性を含んでいる必要があります。

    • 次で始まる: このオプションを選択した場合、ユーザーまたは組織のレコードのデータ要素は、選択された属性で始まる必要があります。

    • 次で終わる: このオプションを選択した場合、ユーザーまたは組織のレコードのデータ要素は、選択された属性で終わる必要があります。

  6. 「属性」メニューから値を選択します。このメニューの値は、ルールに関連付けられているリソースに対して、「リコンシリエーション・フィールド」タブで定義されたフィールドです。そのリソースのリコンシリエーション・フィールドが指定されていない場合、値は選択できません。


    注意:

    (信頼できるソースとは対照的に)ターゲット・リソースのルール要素を定義する際には、リソースのカスタム・プロセス・フォームの親表に関連付けられているフィールドのみが、「属性」フィールドで選択可能になります。


  7. 「属性」フィールド内のデータに対して(演算子を適用する前に)Oracle Identity Managerで特定の変換処理が実行されるようにするには、変換メニューから目的の変換処理を選択します。


    注意:

    このメニューで「なし」以外の値を選択した場合は、Oracle Identity Managerによって変換処理が正しく実行されるように、「保存」をクリックした後でタブを選択し、適切なプロパティを設定する必要があります。


    表23-4に、実行できる変換処理を示します。

    表23-4 変換プロパティ

    変換 ルール要素プロパティ・タブで設定するプロパティ

    部分文字列

    開始ポイント、終了ポイント

    終了文字列

    開始ポイント

    トークン化

    デリミタ、トークン番号、スペース・デリミタ


  8. 大文字/小文字を区別チェック・ボックスを選択します。

    このチェック・ボックスを選択した場合、ルール要素が条件と一致するには、「属性」フィールドで選択された値と、リコンシリエーション・イベント・レコードで評価される値の大/小文字が一致している必要があります。このチェック・ボックスの選択を解除した場合、「属性」フィールドで選択された値と、リコンシリエーション・イベント・レコードで評価される値の大/小文字が一致する必要はありません。

  9. 「保存」をクリックします。

  10. 変換メニューで(「なし」以外の)値が選択されていても、変換処理のプロパティが設定されていない場合は、プロパティが設定されていますチェック・ボックスは選択されません。

    その場合は、ルール要素プロパティ・タブを選択し、適切なプロパティを設定して、再度「保存」をクリックする必要があります。

    ルール要素がルールに追加されます。

  11. ルールに追加するルール要素ごとに、この手順全体を繰り返します。


    注意:

    「アクティブ」チェック・ボックスが選択されていることを確認してください。


23.3.3 ルール内でのルールのネスト

ルールの中に既存のルールをネストできます。Oracle Identity Managerでは、ネストされたルールの条件は、他のルールの要素と同様に評価されます。


注意:

ダイアログ・ボックスで選択できるのは、同じリソース・オブジェクトに関連付けられているリコンシリエーション関連のルールのみです。


ルールの中にルールをネストするには、次の手順を実行します。

  1. 別のルールが追加されるルールに移動します。

  2. 「ルール要素」タブの「ルールの追加」をクリックします。

  3. ルールの選択参照ダイアログ・ボックスが表示されます。

    目的のルールの場所を特定し、選択します。

  4. 「OK」をクリックします。

    選択したリコンシリエーション・ルールがルールに追加されます。

  5. ルールにネストするルールごとに、手順2から4を繰り返します。

23.3.4 ルール要素またはルールの削除

ルール要素またはルールを削除するには、次の手順を実行します。

  1. 要素を削除するルールに移動します。

  2. 「ルール要素」タブで、削除するルール要素またはルールを選択します。

  3. 「削除」をクリックします。

23.4 リコンシリエーションのスケジュール済タスクの開発

Oracle Identity Managerでは、Microsoft Active Directory、Sun Java System Directory、Oracle Internet Directory、Oracle E-Business Suiteなどの様々なターゲット・システムからユーザーやアカウントをリコンシリエーションするためのコネクタを提供しています。これらのコネクタの詳細は、次のURLのOracle Technology Network (OTN) WebサイトにあるOracle Identity Managerコネクタのドキュメントを参照してください。

http://www.oracle.com/technetwork/indexes/documentation/index.html

ただし、カスタム・コネクタを作成するには、次を実行する新しいスケジュール済タスクを開発する必要があります。

  1. ターゲット・システムからユーザーやアカウント情報を取得します。

  2. リコンシリエーションAPIを使用して、イベント・データを送信するリコンシリエーション・イベントを作成します。

  3. エンティティを作成、変更または削除するためのイベントを作成します。


関連項目:

スケジュール済タスクの開発の詳細は、第26章「スケジュール済タスクの開発」を参照してください。


特定のターゲット・システムに接続するには、次のことを実行する必要があります。


関連項目:

ITリソース定義を参照するためのAPIの詳細は、Oracle Fusion Middleware Oracle Identity Manager Java APIリファレンスを参照してください。


Oracle Identity Managerでは、プロビジョニング・プロセスとプロセス・インスタンスは、ユーザーまたはアカウントに関係するアクティビティに関連付けられています。これにより、様々なアクションに対するカスタマイズを追加するためのフックまたはポイントが提供されます。

ユーザー状態またはアカウント状態に対する変更が、直接APIまたはリコンシリエーションを介して発生する場合があります。変更には、次のように様々なタイプがあります。


関連項目:

リコンシリエーションAPIの詳細は、「リコンシリエーションAPIの理解」を参照してください。


これらの各変更の場合は、プロセス定義により、これらのいずれかの変更時に実行されるフックを追加する機能が提供されます。リコンシリエーションの場合は、プロセス定義により、次の条件付きタスクの形式でフックが提供されます。

これらのタスクでは、ワークフローの開始ポイントを提供します。プロビジョニング・プロセスにカスタム・ワークフローを作成したり、リコンシリエーション・トリガー・タスクとワークフロー間の依存性を作成できます。これにより、ワークフローが個別のトリガーで実行されるようになります。

ユーザーまたはアカウントに正常にリンクされているすべてのリコンシリエーション・イベントが、条件付きタスクからの単一トリガーを挿入します。ユーザー・プロファイルおよびアカウント・プロファイル内のすべてのデータが、これらの依存タスクのいずれかにアタッチされているアダプタで状況依存データとして使用できます。


関連項目:

条件付きタスク、アダプタおよび依存性の作成の詳細は、第III部「コネクタ」および第IV部「リクエストおよび承認プロセス」を参照してください。


23.5 リコンシリエーション・プロファイルの手動による更新

この項では、リコンシリエーション・プロファイルの手動による更新について、次の各項で説明します。

23.5.1 リコンシリエーション・プロファイルの作成および更新

リソース・オブジェクトに基づいたリコンシリエーションでは、プロファイル名はリソース・オブジェクトの名前と同じです。たとえば、リソース・オブジェクト名がtestresourceとすると、デフォルトのプロファイル名もtestresourceになります。対応するリコンシリエーション・ステージング表の名前は、プロファイルで使用できます。リソースに多言語サポート(MLS)データが含まれる場合は、MLSステージング表名およびOracle Identity Manager表名もプロファイルで使用できます。リコンシリエーション・プロファイルの構造および要素の詳細は、表23-1「リコンシリエーション・プロファイルXMLの要素」を参照してください。

リソース・オブジェクトに子フォームが含まれる場合は、子フォームごとに、Oracle Identity Manager表名とステージング表名をプロファイルで使用できます。各ステージング表には、対応するエンティティ定義XMLファイルがあります(名前はステージング表名と同じでドットxml拡張子(.xml)が付き、MDSに格納されています)。

batch size属性など、リコンシリエーション・プロファイル内でなんらかの変更を行う場合は、手動により、またはDesign Consoleを使用してプロファイルを更新できます。リコンシリエーション・プロファイルを更新するには、次の手順を実行します。


注意:

Design Consoleを使用してリコンシリエーション・プロファイルを変更した場合は、Design Consoleのオブジェクト・リコンシリエーション・タブのリコンシリエーション・プロファイルの作成ボタンをクリックして、リコンシリエーション・プロファイルを再生成する必要があります。


  1. MDSから/db/PROFILE_NAMEプロファイル・ドキュメントをエクスポートします。

  2. XMLファイルを修正します。たとえば、バッチ・サイズの値を変更します。

  3. configure属性の値をtrueに設定します。この属性の詳細は、表23-1「リコンシリエーション・プロファイルXMLの要素」を参照してください。

  4. 更新したプロファイルをMDSにインポートします。MDSとの間のメタデータのエクスポートおよびインポートの詳細は、「ユーザーが修正可能なメタデータ・ファイルの移行」を参照してください。

    これによって、ステージング表および対応するステージング表のエンティティ定義が自動的に更新されます。

23.5.2 プロファイル・モードの変更

次のいずれかの方法を使用して、プロファイル・モードのプロパティをCHANGELOGからREGULARに変更できます。


関連項目:

変更ログおよび定期リコンシリエーション・モードの詳細は、Oracle Fusion Middleware Oracle Identity Managerユーザーズ・ガイドのリコンシリエーションのモードに関する項を参照してください。


  • 次の例のように、プロファイルのchangeType属性の値を変更します。

    <profile xmlns="http://www.oracle.com/oracle/iam/reconciliation/config" changeType="REGULAR" batchSize="500" resourceType="Organization" name="Xellerate Organization">
    
  • 次の方法で、イベント作成時に属性を変更します。

    Oracle Identity Manager 11gリリース2 (11.1.2.1.0)で導入されたイベント作成APIには、3つのパラメータが含まれています。最初の2つのパラメータは、以前の作成イベントAPIで使用されるパラメータと同じです。3番目のパラメータは、dateFormat、changeType、eventFinished、actionDateなどの属性を持つことができます。

    このAPIを使用してchangeTypeを次のように設定できます。

    public long createReconciliationEvent(String objName, Map<String, Object>inputData, EventAttributes eventAttribs);
    

    注意:

    APIを使用したchangeType属性の設定は、プロファイルで設定されたchangeType属性の値より優先されます。


23.6 リコンシリエーションAPIの理解

リコンシリエーションAPIは、単一値や複数値の属性データおよびその他の機能でリコンシリエーション・イベントを作成するために使用できる一連の公開APIです。

リコンシリエーション・コネクタの開発者は、これらのAPIを使用して、リコンシリエーション・イベント・リポジトリにデータをプッシュする必要があります。


関連項目:

Oracle Identity ManagerでのAPIの使用の詳細は、第31章「APIの使用」を参照してください。


これらのAPIのほとんどが、以前のバージョンのOracle Identity Managerに存在していました。ただし、11gリリース2 (11.1.2.1.0)では、実装が変更され、このリリースで導入された新しいリコンシリエーション・アーキテクチャに基づいています。

以前のAPIが引き続きサポートされているため、既存の標準コネクタでもこれらのAPIが使用され、これらのコネクタに対する変更は必要ありません。

callingEndOfJobAPIは、11gリリース2 (11.1.2.1.0)における唯一の新しいリコンシリエーションAPIです。

コネクタの各実行は、ジョブと呼ばれます。11gリリース2 (11.1.2.1.0)では、リコンシリエーション・イベントはリコンシリエーション・エンジンにバッチ送信されます。ジョブが終了すると、(コネクタのスケジュール済タスクを実行する)スケジューラはリスナーを実行し、リスナーはcallingEndOfJOBAPIを呼び出します。このAPIは、すべてのオープン・バッチを処理のためにリコンシリエーション・エンジンに送信します。

このAPIコールは、多言語サポート(MLS)データと非MLSデータで類似しています。コネクタは、HashMapとしてリコンサイルされるデータを渡します。相違点は、属性がMLS対応である場合、キーが属性名で、値がMLSデータの別のHashMapであることです。このMLS固有のHashMapのキーは言語コードで、値はターゲット・システムから取得された対応するロケール固有データです。定義されたロケールがないMLSデータがターゲット・システムに存在する場合、そのデータはMLS入力データHashMapでキーbaseを使用して渡されます。

23.6.1 ReconOperationsService API

oracle.iam.reconciliation.api.ReconOperationsServiceのAPIには、次のタスクが必要です。

  • イベントの無視

  • イベントの作成(単一/バルク)

  • プロセス・イベント

  • 削除の検出


関連項目:

oracle.iam.reconciliation.api.ReconOperationsServiceのAPIの詳細は、Oracle Fusion Middleware Oracle Identity Manager Java APIリファレンスを参照してください。


優先APIとそのAPI呼出しの順序は、次のとおりです。

  1. イベントの無視: Oracle Identity Managerにすでに存在するイベント作成やターゲット・システム・データの処理を回避する方法です。API呼出しは次のようになります。

    boolean ignoreEvent(String resourceObjectName, Map inputData, String dateFormat) throws tcObjectNotFoundException, tcAPIException
    

    このAPIを使用して、指定されたオブジェクトに対してリコンシリエーション作成イベントを要求する必要があるかどうかが検証されます。このAPIによりtrueが返されると、イベント作成をスキップでき、データベースに追加のイベント作成が保存されます。

    ignoreEvent API同様、ignoreEventAttributeDataメソッドを使用して、ターゲット・システムから入力される単一値および複数値のデータに対してリコンシリエーション作成イベント・フローを要求する必要があるかどうかが検証されます。このリリースでこのようなデータがあるのは、アカウント・エンティティ・タイプに限られます。APIは次のようになります。

    boolean ignoreEventAttributeData(String resourceObjectName, Map inputData, String multiValueFieldName, Map[] childDataList, String dateFormat) throws tcAPIException, tcObjectNotFoundException
    

    注意:

    ignoreEventまたはignoreEventAttributeDataが呼び出される必要があります。APIはどちらも呼出しに必要ありません。


  2. イベントの作成: 単一イベント作成APIまたはバルク・イベント作成APIを使用して実行できます。このフローにより、ターゲット・システム・データがステージング表に簡単に格納されます。このデータの処理は後で非同期に行われます。

    イベントの作成(単一): 次のAPIで構成されています。

    • createReconciliationEventメソッド。リコンシリエーション・イベントを作成するためのデータを指定します。子データまたは複数値のデータがある場合は、eventAttribs.eventFinishedフラグの値をfalseに設定します。それ以外の場合は、値をtrueに設定します。作成されたイベントのeventIdが返されます。

      long createReconciliationEvent(String resourceObjectName, Map<String, Object> inputData, EventAttributes eventAttribs)
      
    • addMultiAttributeDataメソッド。子データを指定します。子データがない場合、またはeventAttribs.eventFinishedフラグがtrueに設定されている場合は、こをAPIを呼び出すことはできません。

      long addMultiAttributeData(long eventId, String resourceObjectName, Map inputData) throws tcAPIException, tcEventNotFoundException, tcEventDataReceivedException, tcAttributeNotFoundException
      

      注意:

      バルク複数値属性または単一の子レコードではなく複数の子レコードのデータを使用して性能を向上するために、次のAPIを使用します。

      void addDirectBulkMultiAttributeData(long reconciliationEventKey, long reconciliationAttributeKey, String tableFieldName, List dataList,String dateFormat) throws tcAPIException, tcEventNotFoundException, tcAttributeNotFoundException, tcEventDataReceivedException,tcInvalidAttributeException
      

    • providingAllMultiAttributeDataメソッド。指定される複数値のデータがデータの完全リストであるかまたは追加/更新された変更セットのみであるかを指定します。デフォルトでは、allDataFlagの値はfalseです。子データがない場合、またはeventAttribs.eventFinishedフラグがtrueに設定されている場合は、こをAPIを呼び出すことはできません。

      void providingAllMultiAttributeData(long eventId, String resourceObjectName, boolean allDataFlag) throws tcAPIException
      
    • finishReconciliationEventメソッド。イベント作成フローの最後にマークを付けます。特定のイベント・ステータスがデータを受信しましたに更新されます。これは、子データ(あれば)を含むすべての特定イベントのデータが指定されたことを意味します。eventAttribs.eventFinishedフラグがtrueに設定されている場合は、このAPIを呼び出すことはできません。

      void finishReconciliationEvent(long eventId) throws tcAPIException, tcEventNotFoundException, tcEventDataReceivedException
      
    • callingEndOfJobAPIメソッド。ジョブ内のすべてのリコンシリエーション・バッチを処理します。スケジュール済ジョブの場合、ジョブ終了時にこのAPIが自動的に呼び出されます。このAPIは、非スケジュール済ジョブのAPI呼出しに対して明示的に呼び出される必要があります。

      void callingEndOfJobAPI() throws tcAPIException
      

    イベントの作成(バルク): 次のAPIで構成されています。

    ReconciliationResult createReconciliationEvents(BatchAttributes batchAttribs, InputData... input)
    

    これは、バルク作成APIです。入力データに渡されたデータのバルク・リコンシリエーション・イベントを作成します。複数値属性を含むすべてのデータを確定し、データのサイズがバッチ・サイズ以下の場合に1パッチとして処理するために送信します。それ以外の場合は、複数バッチのデータを送信します。これ以降、他のAPIを呼び出す必要はありません。

  3. プロセス・イベント: 作成済イベントのバックエンド処理を強制する方法です。processReconciliationEvent(eventId) APIは、作成イベント・フローの完了後に呼び出されます。作成済イベントにも同様の処理が必要です。このAPIは特定のイベントのみ処理するため、バッチ・ステータスまたはジョブ・ステータスは更新されません。バッチ・ステータスも同様に更新する必要がある場合は、この後callingEndOfJobAPI APIを呼び出します。このAPIはバッチ処理ではなくデータを1つずつ同期処理するため、このAPIの使用はお薦めしません。

  4. 削除の検出: ターゲット・システムに存在しないOracle Identity Managerでの余分なデータを削除する方法です。次のAPIで構成されています。

    • provideDeletionDetectionDataメソッド。リソース・オブジェクトの既存のターゲット・システム・データのリストをすべて入力データとして受け取り、Oracle Identity Managerで見つかった一致データのリストを返します。

      Set provideDeletionDetectionData(String resourceObjectName, Map[] inputData) throws tcAPIException, tcIDNotFoundException, tcMultipleMatchesFoundException
      
    • getMissingAccountsメソッド。Oracle Identity Managerで確認済データのリスト・キーを受け取り、ターゲット・システムではなくOracle Identity Managerにある追加データのリストを返します。Oracle Identity Managerのすべてのキーを検索し、provideDeletionDetectionDataメソッドにより返された設定にあるキーと比較します。

      Thor.API.tcResultSet getMissingAccounts(String objectName, Set accountsFound) throws tcAPIException, tcIDNotFoundException, tcDataNotProvidedException
      
    • deleteDetectedAccountsメソッド。Oracle Identity Managerでのみ見つかったデータのリストを入力データとして受け取り、削除タイプの作成リコンシリエーション・イベントAPIコールを1つずつ呼び出します。getMissingAccountsメソッドにより返されたtcResultSetは、このAPIにパラメータとして渡されます。

      long[] deleteDetectedAccounts(Thor.API.tcResultSet poDetectedAccounts) throws tcAPIException, tcAPIException
      

23.6.2 マルチスレッド環境における非スケジュール済タスクベース・リコンシリエーションの呼出し

例23-2に、マルチスレッド環境で非スケジュール済タスクベース・リコンシリエーションを呼び出すサンプル・コードを示します。

例23-2 マルチスレッド環境における非スケジュール済タスクベース・リコンシリエーションの呼出し

public class UserNonSTBasedRecon{
 
     private AtomicInteger threadCount =new AtomicInteger(0);
 
     @Test
     public void testCreateUsersUsingNonScheduleTaskConnectorWithThreads() throws Exception {
 
         Thread t = new CreateEvent();
         t.start();
         Thread t2 = new CreateEvent();
         t2.start();
 
     while (true) {
             Thread.currentThread().sleep(5000);
             if (threadCount.get() == 2){
                 ReconOperationsService reconServ = getService(ReconOperationsService.class);
                 reconServ.callingEndOfJobAPI();
                 break;
             }
         }
     }
 
     public class CreateEvent extends Thread {
 
         Override
         public void run() {
 
         String ctxFactory = "weblogic.jndi.WLInitialContextFactory";
             OIMProfileReader reader = new OIMProfileReader();
             String appServerType = reader.getString("appserver.type");
             String hostName = reader.getString("weblogic.host");
             String port = reader.getString("weblogic.port");
             String serverURL = "t3://" + hostName + ":" + port;
             System.out.println("Server URL is : " + serverURL);
             System.out.println("Context Factory is : " + ctxFactory);
             Hashtable<String, String> env = new Hashtable<String, String>();
             env.put(OIMClient.JAVA_NAMING_PROVIDER_URL, serverURL);
             env.put(OIMClient.JAVA_NAMING_FACTORY_INITIAL, ctxFactory);
 
             OIMClient client = new OIMClient(env);
             String username = "xelsysadm";
             String password = "Welcome1";
             try {
                 client.login(username , password.toCharArray());
             } catch (LoginException e1) {
                 throw new SuperRuntimeException(e1.getMessage(), e1);
             }
 
             String uniq2 = getRandomLong(10000).toString();
             long jobId = getRandomLong(10000);
             ContextManager.setValue(Constants.JOB_HISTORY_ID, new ContextAwareNumber(jobId));
             ContextManager.setValue(Constants.JOB_NAME_CONTEXT, new ContextAwareString(jobId +""));
             ReconOperationsService recon;           
             try {
                 recon = getService(ReconOperationsService.class);
                 int count = 50;
                 HashMap<String, String> hm = new HashMap<String, String>();
                 ArrayList<Long> eventKeys = new ArrayList<Long>();
                 for (int i = 0; i < count; i++) {
                     hm.put("UserLogin", uniq2 + "ThreadTest" + i);
                     hm.put("FirstName", uniq2 + "Thread" + i);
                     hm.put("lastname", "Test");
                     hm.put("Type", "End-User");
                     hm.put("OrganizationName", "Xellerate Users");
                     hm.put("EmpType", "Full-Time");
                     hm.put("Middlename", "MID");
                     System.out.println("Creating Recon event i ="+ i);
                     long rceKey = recon.createReconciliationEvent("Xellerate User", hm, true);
                     eventKeys.add(rceKey);
                 }
                 assertEquals(count, eventKeys.size());               
             } catch (Exception e) {
                 throw new SuperRuntimeException(e.getMessage(), e);
             } finally {
                 threadCount.set(threadCount.get()+1);
                 ContextManager.popContext();
             }
         }
     }
 }

23.7 信頼できるリコンシリエーションの後処理

信頼できるリコンシリエーションにユーザー・ログインが渡されない場合は、ログイン・ハンドラがユーザー・ログインを生成します。パスワードは、後処理イベント・ハンドラで生成されます。このことを示す通知を送信するようにOracle Identity Managerを構成できます。

通知は、Recon.SEND_NOTIFICATIONシステム・プロパティの値がtrueに設定されている場合にのみ送信されます。Recon.SEND_NOTIFICATIONシステム・プロパティの詳細は、Oracle Fusion Middleware Oracle Identity Manager管理者ガイドのOracle Identity Managerのシステム・プロパティに関する説明を参照してください。

SSOが無効な環境では、リコンシリエーションを介したユーザー作成の場合、ユーザー・ログインとパスワードの両方が後処理ハンドラで生成され、単一の通知がユーザー・ログインとパスワードの両方に送信されます。

SSOが有効な環境では、パスワードは生成されないため、ログインが後処理ハンドラで生成されると、通知はユーザー・ログインに対してのみ送信されます。

23.8 リコンシリエーションのトラブルシューティング

リコンシリエーションに関連する問題をトラブルシューティングする前に、リコンシリエーション・ロギング・レベルをINFOに変更します。これを行うには、Oracle Enterprise Managerを使用して次のロガーを追加します。

ロガーを追加する手順の詳細は、『Oracle Fusion Middleware Oracle Identity Manager管理者ガイド』のロギングの構成に関する項を参照してください。


注意:

ロギング・レベルを変更するために、/domains/DOMAIN_NAME/config/fmwconfig/servers/OIM_SERVER/logging.xmlファイルを変更することもできます。これを行うには、次の手順を実行します。

  1. 次に示すように、logging.xmlファイルに新しいロガーを追加します。

    <LOGGER NAME="oracle.iam.reconciliation" LEVEL="INFO"/>
    
  2. 'console-handler' log_handlerのロギング・レベルをINFOに変更します。

  3. Oracle Identity Managerを再起動します。


この項では、リコンシリエーション問題のトラブルシューティングについて次の各項で説明します。

23.8.1 一般的なリコンシリエーション問題のトラブルシューティング

表23-5に、リコンシリエーション・エラーが発生した場合に実行できるトラブルシューティング手順を示します。

表23-5 リコンシリエーションのトラブルシューティング

問題 解決策

イベント処理での失敗

エラーの詳細は、リコンシリエーション表から次のように取得できます。

  • バッチ処理の場合、例外はRECON_BATCHES.RB_NOTE列に格納されています。

  • 単一イベントの処理の場合、例外はRECON_EVENTS.RE_NOTE列に格納されています。

カーネル編成ハンドラで発生した失敗

編成IDは、リコンシリエーション表で追跡でき、この表をさらに使用して、次のように関連ハンドラのステータスを確認できます。

  • バッチ処理の場合、後処理のみの編成IDをRECON_BATCHES.RB_NOTE列から読み取ることができます。

  • 単一イベントの処理の場合、エンドツーエンド編成IDをRECON_EVENTS.RE_NOTE列から読み取ることができます。

リコンシリエーション時にLDAP同期を表示するUIはありません。したがって、LDAPの成功または失敗は、RB_NOTE/RE_NOTE列で使用可能なIDに基づいて、編成内のLDAP同期イベント・ハンドラのステータスを確認することによってのみ追跡できます。

ジョブの実行後、多数のイベントが「データを受信しました」ステータスになる

次の文を使用して、関連するバッチが処理の準備完了ステータスであるかどうかを確認します。

select rb_batch_status, rb_note from recon_batches where rb_batch_status = 'Ready For Processing' and rj_key = JOB_ID_ON_UI

また、RECON_BATCHES.RB_NOTEには、接続の問題などの一般的な例外が含まれています。問題を修正し、次のいずれかを実行します。

  • 多数のデータがある場合は、リコンシリエーション・ジョブを返します。

  • このような失敗したバッチを手動で再試行するために提供されているスケジュール済タスク、「リコンシリエーション・バッチの再試行」があります。これは、特定のバッチの再試行にのみ使用できます。カンマ区切りの複数のバッチがサポートされています。このスケジュール済タスクに関連付けられている事前定義済ジョブはありません。必要に応じて、ジョブを作成できます。

競合状態: 一部の依存属性がまだリコンサイルされていないため(ユーザーより先にユーザーのマネージャ/組織をリコンサイルする必要があるなど)、イベントが失敗ステータスにある

  • データのサイズが小さい場合は、リコンシリエーションを再試行すると自動的に競合状態が処理されますが、低速です。

  • データのサイズが大きい場合は、リコンシリエーションを2回実行します。1回目の完全リコンシリエーションで依存フィールドのマッピングを削除し、次に依存フィールド・マッピングを追加してから2回目の完全リコンシリエーションを実行します。

信頼できるソースのリコンシリエーションの場合にユーザー更新を実行すると、次のエラーが生成される

ORA Error Code =>ORA-00001: unique constraint (.) violated

信頼できるソースのリコンシリエーションでは、一致ルールがUsr_loginに基づいている場合、その一致ルールでは大文字/小文字が区別されていないことが必要です。そうでないと、ユーザーの更新がユーザーの作成として機能し、エラーが生成される場合があります。


23.8.2 データベース関連のリコンシリエーション問題のトラブルシューティング

この項では、次のデータベース関連のリコンシリエーション問題について説明します。

Oracle Database 11gリリース1の重要な個別パッチの欠落

RDBMS個別パッチ# 7614692が欠落している場合は、次のエラーがログに記録されます。

ORA-02291: INTEGRITY CONSTRAINT (FK_RECON_EVENTS_USR) VIOLATED - PARENT KEY NOT FOUND
[EXEC] ORA-06512: AT "OIM_SP_RECONBLKUSERCRUD"
[EXEC] ORA-06512: AT "OIM_SP_RECONBLKUSRMLSWRAPPER"
[EXEC] ORA-06512:

この問題を解決するには、次のパッチがOracle Database 11gリリース1 (11.1.0.7.0)にインストールされている必要があります。

  • p7614692_111070

  • p7000281_111070

  • p8327137_111070

  • p8617824_111070


注意:

次のURLからすべての個別パッチをダウンロードできます。

http://support.oracle.com


Oracle Database 11gリリース2の重要な個別パッチの欠落

一部のSQLスクリプトを実行すると、Oracle Database 11gリリース2 (11.2.0.2.0)で誤った結果または矛盾した結果が生成される場合があり、これは以前のリリースのOracle Databaseでは発生しませんでした。

この問題を解決するには、Oracle Database 11gリリース2用のパッチ# 10259620がインストールされている必要があります。

低速なリコンシリエーションおよびエラー・ログ内の類似トレース

SQLスクリプトに大量の一致ルールがある場合、エンティティ表が低速になるのは、データベースでの全表スキャンや最適化されていないSQL計画が原因であると考えられます。

リコンシリエーションは、一致ルールの列が適切に索引付けされていなかったり、スキーマ統計が古いと、低速になる場合があります。低速の結果として、次のようなエラー・ログが記録されます。

oracle.iam.platform.utils.SuperRuntimeException: java.sql.SQLException:
ORA-01013: user requested cancel of current operation
ORA-06512: at "XL_SP_RECONBLKROLEMATCH"
ORA-06512: at "OIM_SP_RECONBLKROLEMLSWRAPPER"
ORA-06512:
 
at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkMana gerImpl.java)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java)
at weblogic.work.ExecuteThread.run(ExecuteThread.java)
Caused by: java.sql.SQLException: ORA-01013: user requested cancel of current operation
ORA-06512: at "XL_SP_RECONBLKROLEMATCH"
ORA-06512: at "OIM_SP_RECONBLKROLEMLSWRAPPER"
ORA-06512: 
.
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java)

この問題の解決方法:

  1. 一致ルールの列に対して適切な索引がすべて作成されていることを確認します。

  2. データベースのスキーマ統計がガイドラインに従って収集されていることを確認します。


    関連項目:

    リコンシリエーション用の索引の作成およびデータベース統計の収集の詳細は、「リコンシリエーションのベスト・プラクティス」を参照してください。


23.8.3 リコンシリエーション・プロファイル構成の失敗のトラブルシューティング

プロファイル構成の失敗に関連する問題が発生した場合、Oracle Enterprise Managerで使用可能なvalidateProfile Mbeanを使用してプロファイルを検証します。プロファイルが無効である場合、プロファイルとともにそのプロファイルが無効である理由が表示されます。

表23-6に、リコンシリエーション・エラーが発生した場合に実行できるトラブルシューティング手順を示します。

表23-6 リコンシリエーション・プロファイル構成の失敗のトラブルシューティング

問題 解決策

プロファイルが無効なため、次の例外でロードに失敗します。

oracle.iam.reconciliation.exception.ConfigNotFoundExceptionまたは

oracle.iam.reconciliation.exception.Configおよび内部例外org.xml.sax.SAXParseException

次のいずれかを実行します。

  • 正確な問題は、スキーマ検証メッセージを確認することによって診断および修正できます。

  • Oracle Enterprise ManagerのMBeanまたは診断ダッシュボードの「リコンシリエーション・プロファイルの検証」テストを使用して、リコンシリエーション・プロファイルXMLを検証します。

  • プロファイルおよびXSDをXMLスキーマ対応のエディタにインポートしてリコンシリエーション・プロファイルを検証し、このエディタでそのスキーマに対して検証すると、失敗の正確な原因が示される可能性があります。

有効なリコンシリエーション・プロファイルXMLをシステムにインポートする際に、必要な構成の作成に失敗します。

profile.configure属性を確認します。この属性の値は、trueである必要があります。

profile.active属性を確認します。これの値は、trueである必要があります。または、この属性が存在しない場合、profile.activeがtrueであることを意味します。

次のエラーが生成されます。

oracle.iam.reconciliation.exception.ReconciliationException: Exception occurred while inserting data into table STAGING_TABLE_NAME due to STAGING_TABLE_NAME

これは、有効なリコンシリエーション・プロファイルがロードされており、このプロファイルによってOracle Identity Managerで構成が作成されていないことを意味します。

profile.configure属性およびprofile.active属性を確認します。



注意:

validateProfile Mbeanはリコンシリエーション・プロファイルの検証のために用意されています。このMBeanは、Oracle Enterprise Managerを使用してアクセスできます。


23.9 RECON_EXCEPTIONS表へデータ移入

Oracle Identity Managerデータベース内のRECON_EXCEPTIONS表は、アカウント・リコンシリエーション中に生成されるエラー・メッセージを取得するために使用されます。このデータは、レポートの生成目的で収集されます。


関連項目:

アカウント・リコンシリエーションの詳細は、Oracle Fusion Middleware Oracle Identity Managerユーザーズ・ガイドのアカウント・リコンシリエーションに関する項を参照してください。


リコンシリエーションが削除されたユーザーに一致することが検出された場合は、USER_DELETEDをREX_EXCEPTION列に、削除されたユーザーのキーをRECON_EXCEPTIONS表のUSR_KEY列に挿入する必要があります。

一致が検出されなかった場合は、USER_NOT_FOUNDをREX_EXCEPTION列に挿入します。

アカウント一致が検出された場合は、アカウントがすでにプロビジョニング解除されているかどうかチェックします。それからプロビジョニングされるユーザーに対して、RECON_EXCEPTIONS表のREX_EXCEPTION列に値RESOURCE_DEPROVISIONEDを挿入します。

RECON_EXEPTIONS表に例外データを移入するには:

  1. 変更タイプ!= ('Modify' , 'Delete')でイベント・ステータスが('Single User Match Found', 'Single Org Match Found')のイベントをすべてフェッチします。

  2. 次の手順を実行して、エンティティに対してリソース・オブジェクトをプロビジョニングします。

    1. RECON_EXCEPTION DB表から例外データを収集します。これを行うには、次のいずれかを実行します。

      • XL.EnableExceptionReportsプロパティの値がTRUEかどうかをチェックします。これがTRUEに設定されている場合は、次のステップに進みます。そうでない場合は、例外データを収集しないでください。

      • プロビジョニングされたリソース・オブジェクトに対してobj表のobj_initial_recon_dateを選択し、今日の日付以前かどうかチェックします。以前の日付が表示される場合は、次のステップに進みます。そうでない場合は、例外データを収集しないでください。

    2. リソース・オブジェクトをユーザーにプロビジョニングするときには、Oracle Identity Managerでリソース・オブジェクトがすでにプロビジョニング解除されているかどうかチェックします。:

      • リソース・オブジェクトがすでにプロビジョニング解除されている場合は、プロビジョニングされるユーザーに対して、RECON_EXCEPTIONS表のREX_EXCEPTION列に値RESOURCE_DEPROVISIONEDを挿入します。

      • リソース・オブジェクトがプロビジョニング解除されていない場合は、プロビジョニングされるユーザーに対して、RECON_EXCEPTIONS表のREX_EXCEPTION列に値RESOURCE_NEVER_PROVISIONEDを挿入します。

23.10 リコンシリエーションのベスト・プラクティス

この項では、コネクタ表およびリコンシリエーション表に必要な索引を指定してパフォーマンスを向上させる方法について説明します。内容は次のとおりです。


注意:

効率的な重複権限または子データ検証を有効にするように、リコンシリエーション・フィールド・マッピングの子データの権限属性およびキー属性の両方を構成することをお薦めします。権限または子データの重複検証の詳細は、『Oracle Fusion Middleware Oracle Identity Manager管理者ガイド』の権限または子データの重複検証に関する説明を参照してください。


23.10.1 照合モジュールの追加の索引要件

Oracle Identity Managerをインストールすると、必要な索引がOracle Identity Managerデータベース・スキーマに作成されます。ただし、Oracle Identity Managerのいくつかの機能の動的な性質のために、追加の索引が必要になる場合があります。これは、特にリコンシリエーションに当てはまります。

リコンシリエーションでは、照合アルゴリズムを使用して、変更がリクエストされたユーザー、アカウント、ロールまたは組織がOracle Identity Managerにすでに存在するかどうかが検索されます。照合アルゴリズムでは、Oracle Identity Managerの一連の列のデータとターゲット水平表の列のデータが比較されます。一致ルールを格納する列は、リコンシリエーション・プロファイルに定義されます。照合操作のパフォーマンスを迅速に改善するためには、照合ルールの列に正しい索引が作成されている必要があります。

適切な索引を識別する推奨方法を示すために、メタデータ・ストア(MDS)リポジトリに存在するサンプルActive Directory (ADUser)プロファイルを例として取り上げます。

リコンシリエーションに対する索引の選択

一致ルール基準に基づいて索引を選択するには、次の手順を実行します。

  1. テキスト・エディタでADプロファイル・ファイルを開きます。


    注意:

    「ユーザーが修正可能なメタデータ・ファイルの移行」の説明に従い、Oracle Enterprise Managerを使用してADユーザー・プロファイルをMDSからインポートする必要があります。


  2. 図23-3に示すように、ADプロファイル内のすべての<matchingRule>タグ要素を検索します。

    図23-3 <matchingRule>タグ要素

    図23-3の説明が続きます
    「図23-3 <matchingRule>タグ要素」の説明

  3. それぞれの一致ルールを構成する列を識別した後は、それに応じて索引を作成します。


注意:

  • キー・フィールドがOracle Identity Managerで大/小文字を区別しないように定義されている場合は、そのキー・フィールドに対して関数ベースの索引を作成する必要があります。たとえば、コネクタ・コードで姓名の名の検索を内部的に実行する場合(FIRST_NAMEがキーの場合)は、適切な索引付けが必要です。

  • ユーザーの参照で複数のキーまたはコンポジット・キーが使用される場合は、個々の索引またはコンポジット索引を選択します。

  • 必要な索引のポインタは、Oracle Enterprise Managerなどのパフォーマンス・モニタリング・ツールを使用するか、またはOracle Database 11gで使用可能な自動ワークロード・リポジトリ(AWR)のレポートを介して、データベース側からリコンシリエーション・プロセスのリアルタイム実行を監視することで取得することもできます。

  • Design Consoleまたはデプロイメント・マネージャのインポート経由で作成または更新されたプロファイルについては、索引の作成がある程度自動化されています。この自動的に作成された索引を、この項で定義されているルールごとに検証します。問題がある場合は、索引を手動で修正する必要があります。手動で作成または更新されたプロファイルについては、索引は自動的に作成されず、手動で作成する必要があります。また、「一致ルール」フィールドが変更された場合、索引は自動的には削除されません。索引の削除は手動で行う必要があります。

  • 既存の索引の一覧は、validateProfile Mbeanを使用してOracle Enterprise Managerで表示できます。


23.10.2 リコンシリエーション・パフォーマンスに関するデータベース・スキーマ統計の収集

データベース統計は、SQL問合せの実行時にOracleオプティマイザが最適な計画を選択するために不可欠な情報です。Oracle Identity Managerスキーマの統計は、定期的に収集することをお薦めします。Oracle Identity Manager 11g リリース2 (11.1.2.1.0)では、リコンシリエーション・プロセスに多数のデータベースSQL機能が使用されるため、スキーマ統計が更新されていることを確認してからリコンシリエーションを実行してください。


注意:

  • DBMS_STATS.GATHER_SCHEMA_STATS APIでは、環境、データ・プロファイル、Oracle DBエディションおよび基礎となるハードウェア機能に基づいて、他のオプション(DEGREE、ESTIMATE_PERCENTなど)を必要に応じて使用できます。

  • データベース・スキーマ統計の収集の詳細は、Oracle Fusion Middleware Oracle Identity Manager管理者ガイドのデータベース・パフォーマンスの監視に関する項を参照してください。


また、Oracle Identity Managerリコンシリエーション・プロセスは、データ量が多く、大量のデータが高速で移動するため、データベース統計によって基礎となるデータが正確に表現される必要があります。そのためには、次のガイドラインを参考にしてください。

  • 統計が、Oracle Identity Managerスキーマの新規の設定のリコンシリエーション、または既存のデータがない(あるとしてもわずかな)少量のリコンシリエーションを対象として収集されるようにします。Oracle Identity Managerの関連する表の最大行数は、100から1000までの行にする必要があります。表の例には、信頼できるソース・リコンシリエーションのUSR表や、ターゲット・リソースのリコンシリエーションの親アカウント表があります。

  • 20000を超えるユーザーやアカウントなど、大量のデータの移動が予想されるリコンシリエーションが開始した後も、統計が適切な表現のデータ配信になるために、次のようにしてOracle Identity Managerスキーマ統計を収集してください。

    1. リコンシリエーションが正常に開始して、しばらく実行されていた場合にのみ、初期コレクション後の統計を収集するように計画します。これを確認するには、信頼できるソース・リコンシリエーションのUSR表や、ターゲット・リソースのリコンシリエーションの親アカウント(UD_*)表など、Oracle Identity Managerスキーマで主要な複数の表の件数をチェックします。

    2. リコンシリエーションによってUSR表または親アカウント表で約20000から25000行が移動した後で、統計を収集します。


      注意:

      • 統計は、リコンシリエーションの実行と同時に収集できます。

      • ガイドラインに指定されている行数は例であり、収集する統計に応じて別の行数にできます。


  • 統計を収集した後、パフォーマンスは即時には改善されない可能性があります。ただし、Oracle Databaseの共有プールから以前のSQL計画が消去され、さらに効率的な新しい計画が作成されるに従って、パフォーマンスは向上します。

23.11 DMSを使用したリコンシリエーション・パフォーマンスの監視

ダイナミック・モニタリング・サービス(DMS)コマンドは、パフォーマンス・メトリックの表示およびイベント・トレースの構成に使用します。次のDMSメトリックは、リコンシリエーション・パフォーマンスの監視に適しています。