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

前
 
次
 

14 リコンシリエーション操作のカスタマイズ

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. エンティティを作成、変更または削除するためのイベントを作成します。


関連項目:

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


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

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


関連項目:

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


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

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


関連項目:

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


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

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

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


関連項目:

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


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

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

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


関連項目:

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


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

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

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

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

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

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

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

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

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

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

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

リコンシリエーションに関連する問題をトラブルシューティングする前に、リコンシリエーション・ロギング・レベルをINFOに変更します。これを行うには、次の行をlogging.xmlファイルに追加し、Oracle Identity Managerを再起動します。

<LOGGER NAME="ORACLE.IAM.RECONCILIATION" LEVEL="INFO"/>

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

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

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

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

問題 解決策

イベント処理での失敗

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

  • バッチ処理の場合、例外は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には、接続の問題などの一般的な例外が含まれています。問題を修正し、次のいずれかを実行します。

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

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

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

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

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


14.4.2 信頼できるソースのリコンシリエーションのトラブルシューティング

この項では、信頼できるソースのリコンシリエーションに関連する次の問題について説明します。

リコンシリエーション・プロファイルが存在しない

リコンシリエーション・プロファイルが欠落している場合、次のエラーがログに記録されます。

[EXEC] ORACLE.IAM.RECONCILIATION.EXCEPTION.RECONCILIATIONEXCEPTION: EXCEPTION OCCURRED WHILE INSERTING DATA INTO TABLE RA_TESTRORECON7 DUE TO RA_TESTRORECON7 
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.RECONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.CREATERECONCILIATIONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.CREATERECONCILIATIONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.CREATERECONCILIATIONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.CREATERECONCILIATIONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.API.RECONOPERATIONSSERVICEEJB.CREATERECONCILIATIONEVENTX(UNKNOWN SOURCE)
.....
.....
.....
[EXEC] CAUSED BY: ORACLE.IAM.PLATFORM.ENTITYMGR.NOSUCHENTITYEXCEPTION: RA_TESTRORECON7
[EXEC] AT ORACLE.IAM.PLATFORM.ENTITYMGR.IMPL.ENTITYMANAGERCONFIGIMPL.EXISTS(ENTITYMANAGERCONFIGIMPL.JAVA)
[EXEC] AT ORACLE.IAM.PLATFORM.ENTITYMGR.IMPL.ENTITYMANAGERCONFIGIMPL.GETDATAPROVIDER(ENTITYMANAGERCONFIGIMPL.JAVA)
[EXEC] AT ORACLE.IAM.PLATFORM.ENTITYMGR.IMPL.ENTITYMANAGERIMPL.GETENTITYCAPABILITY(ENTITYMANAGERIMPL.JAVA)
[EXEC] AT ORACLE.IAM.PLATFORM.ENTITYMGR.IMPL.ENTITYMANAGERIMPL.GETENTITYCAPABILITY(ENTITYMANAGERIMPL.JAVA)
[EXEC] AT ORACLE.IAM.PLATFORM.ENTITYMGR.IMPL.ENTITYMANAGERIMPL.CREATEENTITY(ENTITYMANAGERIMPL.JAVA)
[EXEC] AT ORACLE.IAM.PLATFORM.ENTITYMGR.IMPL.ENTITYMANAGERIMPL.CREATEENTITY(ENTITYMANAGERIMPL.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.RECONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.CREATERECONCILIATIONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.CREATERECONCILIATIONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.CREATERECONCILIATIONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.CREATERECONCILIATIONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.API.RECONOPERATIONSSERVICEEJB.CREATERECONCILIATIONEVENTX(UNKNOWN SOURCE)
     .....
     .....
     .....

リコンシリエーション・フィールド・マッピングの欠落または非アクティブな所有者ルール

次のエラーがログに記録される場合は、次のとおりです。

  • 定義されているリコンシリエーション・フィールドがありません。

  • リコンシリエーション・フィールドが追加されているが、マッピングが定義されていません。

  • 定義されている一致ルールが存在しないか、または一致ルールが非アクティブです。

[EXEC] ORACLE.IAM.PLATFORM.UTILS.SUPERRUNTIMEEXCEPTION: -100: ERROR OCCURED IN XL_SP_RECONBLKUSRRQDCVALDNMTCH WHILE PROCESSING BATCH ID 4   ONE OR MORE INPUT PARAMETER PASSED AS NULL
[EXEC] AT ORACLE.IAM.RECONCILIATION.DAO.RECONACTIONDAO.EXECUTEBULKUSERMATCHCRUD(RECONACTIONDAO.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.USERHANDLER.EXECUTEBULKCUD(USERHANDLER.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.BASEENTITYTYPEHANDLER.PROCESS(BASEENTITYTYPEHANDLER.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.PROCESSBATCH(ACTIONENGINE.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.EXECUTE(ACTIONENGINE.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONTASK.EXECUTE(ACTIONTASK.JAVA)
[EXEC] AT ORACLE.IAM.PLATFORM.ASYNC.IMPL.TASKEXECUTOR.EXECUTEUNMANAGEDTASK(TASKEXECUTOR.JAVA)
[EXEC] AT ORACLE.IAM.PLATFORM.ASYNC.IMPL.TASKEXECUTOR.EXECUTE(TASKEXECUTOR.JAVA)
[EXEC] AT ORACLE.IAM.PLATFORM.ASYNC.MESSAGING.MESSAGERECEIVER.ONMESSAGE(MESSAGERECEIVER.JAVA)
.....
.....
.....
[EXEC] CAUSED BY: ORACLE.IAM.PLATFORM.UTILS.SUPERRUNTIMEEXCEPTION: -100: ERROR OCCURED IN XL_SP_RECONBLKUSRRQDCVALDNMTCH WHILE PROCESSING BATCH ID 4   ONE OR MORE INPUT PARAMETER PASSED AS NULL
[EXEC] AT ORACLE.IAM.RECONCILIATION.DAO.RECONACTIONDAO.EXECUTEBULKUSERMATCHCRUD(RECONACTIONDAO.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.USERHANDLER.EXECUTEBULKCUD(USERHANDLER.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.BASEENTITYTYPEHANDLER.PROCESS(BASEENTITYTYPEHANDLER.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.PROCESSBATCH(ACTIONENGINE.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.EXECUTE(ACTIONENGINE.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONTASK.EXECUTE(ACTIONTASK.JAVA)
[EXEC] AT ORACLE.IAM.PLATFORM.ASYNC.IMPL.TASKEXECUTOR.EXECUTEUNMANAGEDTASK(TASKEXECUTOR.JAVA)

リコンシリエーション・アクション・ルールの欠落

適切なリコンシリエーション・フィールドとマッピングが定義されており、一致ルールも有効かつアクティブであるが、依然としてイベント・ステータスが「ユーザーの一致が見つかりません」である場合は、定義されたアクション・ルールが存在しない可能性があります。リコンシリエーション・アクション・ルールを追加すると、ユーザーが正常に作成されます。

14.4.3 ターゲット・リソース・リコンシリエーションのトラブルシューティング

この項では、ターゲット・リソースのリコンシリエーションに関連する次の問題について説明します。

プロセス・フォームの欠落

すべてのプロセス・データ・フィールド・マッピングを削除し、プロファイルを再生成した場合に、次のエラーがログに記録されます。

[EXEC] <APR 19, 2011 11:13:48 PM PDT> <ERROR> <ORACLE.IAM.RECONCILIATION.IMPL> <IAM-5010000> <GENERIC INFORMATION: {0}
[EXEC] ORACLE.IAM.PLATFORM.UTILS.SUPERRUNTIMEEXCEPTION: -1: ERROR OCCURRED IN XL_SP_RECONINPUTPARAMSVALDN ORA-20001: COMMA-SEPARATED LIST INVALID NEAR D
[EXEC] AT ORACLE.IAM.RECONCILIATION.DAO.RECONACTIONDAO.EXECUTEBULKUSERMATCHCRUD(RECONACTIONDAO.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.USERHANDLER.EXECUTEBULKCUD(USERHANDLER.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.BASEENTITYTYPEHANDLER.PROCESS(BASEENTITYTYPEHANDLER.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.PROCESSBATCH(ACTIONENGINE.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.EXECUTE(ACTIONENGINE.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONTASK.EXECUTE(ACTIONTASK.JAVA)

このエラーの原因として、プロセス・フォームの欠落が考えられます。

プロセス・フォーム・マッピングの欠落またはWHERE句選択の欠落

すべてのプロセス・データ・フィールド・マッピングを削除し、プロセス・フォームを追加し、プロファイルを再生成した場合に、次のエラーがログに記録されます。

[EXEC] <APR 19, 2011 11:25:31 PM PDT> <WARNING> <JNDI> <BEA-050007> <AN ATTEMPT WAS MADE TO LOOK UP NON-VERSIONED GLOBAL RESOURCE "QUEUE" FROM AN APPLICATION VERSION "OIM [VERSION=11.1.1.5.0]". THIS CAN POTENTIALLY CAUSE CONFLICT OF THE GLOBAL RESOURCE USAGES AMONG MULTIPLE APPLICATION VERSIONS.> 
[EXEC] <APR 19, 2011 11:25:31 PM PDT> <ERROR> <ORACLE.IAM.RECONCILIATION.IMPL> <IAM-5010000> <GENERIC INFORMATION: {0}
[EXEC] JAVA.LANG.NULLPOINTEREXCEPTION
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.CONFIG.PROFILE.GETACCOUNTMATCHINGRULESWHERECLAUSE(PROFILE.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.PROFILEDATA.GETACCOUNTMATCHINGRULES(PROFILEDATA.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.DAO.RECONACTIONDAO.EXECUTEBULKACCOUNTMATCHCRUD(RECONACTIONDAO.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACCOUNTHANDLER.EXECUTEBULKCUD(ACCOUNTHANDLER.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.BASEENTITYTYPEHANDLER.PROCESS(BASEENTITYTYPEHANDLER.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.PROCESSBATCH(ACTIONENGINE.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.EXECUTE(ACTIONENGINE.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONTASK.EXECUTE(ACTIONTASK.JAVA)

このエラーの原因として、プロセス・フォーム・マッピングの欠落またはWHERE句選択の欠落が考えられます。

有効なアクション・ルールの欠落

すべてのプロセス・データ・フィールド・マッピングを削除し、プロセス・フォームとマッピングを追加し、WHERE句選択を追加し、プロファイルを再生成した場合に、次のエラーがログに記録されます。

[EXEC] <APR 19, 2011 11:36:20 PM PDT> <WARNING> <ORACLE.IAM.PLATFORM.ASYNC> <BEA-000000> <EXCEPTION FOR ABOVE MESSAGE I.E IAM-0050000
[EXEC] ORACLE.IAM.PLATFORM.UTILS.SUPERRUNTIMEEXCEPTION: ORACLE.IAM.PLATFORM.UTILS.SUPERRUNTIMEEXCEPTION: -15: ERROR IN  XL_SP_RECONBLKACNTRQDCMTCHCRUD WHILE PROCESSING BATCH ID 18 ERROR OCCURED IN XL_SP_RECONBLKCHILDMTHACNTCRUD WHILE PROCESSING BATCH ID - 18 ACTION RULE 'CREATE USER' FOR NO ENTITY MATCH FOUND IS INVALID.  YOU MUST PASS A VALID NO USER MATCH FOUND ACTION RULE. -20101 -ERROR- ORA-20101: 
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.PROCESSBATCH(ACTIONENGINE.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.EXECUTE(ACTIONENGINE.JAVA)
[EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONTASK.EXECUTE(ACTIONTASK.JAVA)

このエラーの原因として、有効なアクション・ルールが追加されていないことが考えられます。図14-1に、無効なアクション・ルールが表示されたDesign Console画面を示します。

図14-1 無効なアクション・ルール

図14-1の説明が続きます
「図14-1 無効なアクション・ルール」の説明

有効なアクション・ルールを追加すると、アカウントが正常に作成されます。図14-2に、有効なアクション・ルールが表示されたDesign Console画面を示します。

図14-2 有効なアクション・ルール

図14-2の説明が続きます
「図14-2 有効なアクション・ルール」の説明

プロファイルが生成されていない

すべてのプロセス・データ・フィールド・マッピングを削除し、プロセス・フォームとマッピングを追加し、WHERE句選択を追加し、一致ルールを更新した場合に、プロファイルが生成されず、「有効なアクション・ルールの欠落」と同じエラーがログに記録されます。

一致ルールがNULLまたは非アクティブである

一致ルールがNULLまたは非アクティブな場合、次のエラーがログに記録されます。

Thor.API.Exceptions.tcAPIException:
oracle.iam.reconciliation.exception.ReconciliationException: Matching rule where clause is null

プロファイルXMLファイルを更新します。プロファイルXMLファイルを手動で更新する場合は、次のサンプルXMLを、プロファイル内の明確に定義されたアクティブな一致ルールに使用します。

<ReconUserMatchingRule repo-type="RDBMS" name="AS400TrustedUser Recon
Rule">
<RRL_UPDATE>1301687006000</RRL_UPDATE>
<RRL_VALID>1</RRL_VALID>
<RRL_OPERATOR>AND</RRL_OPERATOR>
<RRL_DESCRIPTION>AS400TrustedUser Recon Rule</RRL_DESCRIPTION>
<RRL_ACTIVE>1</RRL_ACTIVE>
<ReconRuleElement repo-type="RDBMS" id="RRE1">
<RRE_SEQUENCE>1</RRE_SEQUENCE>
<RRE_UPDATE>1301689575000</RRE_UPDATE>
<RRE_FIELDNAME>User Login</RRE_FIELDNAME>
<RRE_CASESENSITIVE>0</RRE_CASESENSITIVE>
<RRE_VALID>1</RRE_VALID>
<RRE_TRANSFORM>None</RRE_TRANSFORM>
<RRE_OPERATOR>Equals</RRE_OPERATOR>
<ORF_KEY Resource="AS400TrustedUser" ReconField="User Login"/>
</ReconRuleElement>
</ReconUserMatchingRule>

Design Consoleを使用した変更の場合は、ルールを更新し、プロファイルを再生成します。

イベントの子データの欠落

イベントの子データを渡さなかった場合にデータが削除されないという現象が、アカウントのターゲットですべての子データが削除されている場合に一部のコネクタで発生します。

アカウントからユーザーへの非定型リンクがある場合に、複数のアカウントが一致する

アカウントからユーザーへの非定型リンクがある場合は、特定のユーザーのアカウントを指定しても、アカウントの一致ルールに基づいて、複数のアカウントが一致する場合があります。これは、一致したアカウント・リストからアカウントを選択し、管理およびユーザー・コンソールで「リンク」をクリックすることによって解決できます。

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

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

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


    関連項目:

    リコンシリエーション用の索引の作成およびデータベース統計の収集の詳細は、Oracle Fusion Middleware Oracle Identity Managerユーザーズ・ガイドのリコンシリエーションのコネクタに関する説明を参照してください。