43 レプリケーションの管理およびモニタリング

この章では、Oracle Directory Services Manager (ODSM)およびLDAPコマンド行ユーティリティを使用して、Oracle Internet Directoryでレプリケーションを監視および管理する方法について説明します。また、Oracle Internet Directory比較調整ツール(oidcmpre)を使用して、一貫性のないデータを比較および調整する方法について説明します。

レプリケーションの構成属性の詳細は、「レプリケーション構成属性の管理」を参照してください。

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

ノート:

一部の変更は、レプリケーション・サーバーが再起動されるまで有効になりません。

43.1 レプリケーションの管理およびモニタリングの概要

レプリケーションのインストールおよび構成後は、レプリケーションに関連する属性のデフォルト値を表示または変更できます。

属性およびそのコンテナの詳細は、「レプリケーション構成属性の管理」を参照してください。

この概要の項目は次のとおりです。

43.1.1 LDAPベースの部分レプリケーションの意味

LDAPベースの部分レプリケーションでは、レプリカのネーミング・コンテキスト・オブジェクトを定義することにより、レプリケートするものとしないものを変更できます。これらのオブジェクトのパラメータは、次の識別名を持つエントリに格納されます。

たとえば:

cn=namingcontext_ID,cn=replication namecontext,
 orclAgreementID=numeric_identifier_of_replication_agreement,
 orclReplicaId=unique_identifier_of_replica, cn=replication configuration

ノート:

ディレクトリ・レプリケーション・サーバーは、レプリカのネーミング・コンテキスト・オブジェクトを、サプライヤ側にある承諾から読み込むため、すべての変更をサプライヤ側およびコンシューマ側(オプション)のネーミング・コンテキスト・オブジェクトに適用する必要があります。

「ldapmodifyを使用したレプリカのネーミング・コンテキスト・オブジェクト・パラメータの変更の概要」を参照してください。

43.1.2 ワーカー・スレッドの管理について

レプリケーション・サーバーはマルチスレッド・プロセスです。

サプライヤ当たりの、次の専用ワーカー・スレッドの数を制御できます。

  • サプライヤからコンシューマへの変更ログの転送

  • 転送された変更ログのコンシューマでの適用

サプライヤ当たりの転送スレッド数および適用スレッド数を設定できます。あるいは、自動調整(負荷に基づいてこの2つのタスクに割り当てるスレッド数を動的に変更)するようにレプリケーション・サーバーを構成することもできます。サーバーを自動調整するように設定した場合は、これらのタスク間で共有するスレッドの最大数を指定する必要があります。

このような数はロードに基づいて調整する必要があります。コマンド行から、ldapmodifyを使用してスレッドを構成します。

43.1.3 ディレクトリ・レプリケーションの変更ログ

Oracle Internet Directoryは、各変更をエントリとして変更ログ・ストアに記録します。各エントリには一意の変更番号があります。

コンシューマは、適用した最後の変更の変更番号を記録しておき、その番号よりも大きい変更番号の変更のみをサプライヤから取得します。

  • LDAPベース・レプリケーション承諾では、変更ログの処理は、変更ログの転送と変更ログの適用という2つのフェーズで構成されています。LDAPベース承諾ごとに、2つの変更ログ処理のステータス(各フェーズに1つ)があります。ディレクトリ・レプリケーション・サーバーは、最後に転送した変更番号を、レプリケーション承諾エントリのorlcllastappliedchangenumber属性のtransportサブタイプに格納します。ディレクトリ・レプリケーション・サーバーは、最後に適用した変更番号を、レプリケーション承諾エントリのorllclastappliedchangenumber属性のapplyサブタイプに格納します。orlcllastappliedchangenumber属性の書式は、表42-2を参照してください。

    ノート:

    Oracle Internet Directory 11g リリース1(11.1.1.7.0)以降では、LDAPレプリケーションのデータフローは適用キューを含む適用フェーズから構成されます。トランスポート・キューを含むトランスポート・フェーズは使用されなくなりました。「LDAPベースのレプリケーションのアーキテクチャ」を参照してください。

  • 複数値属性を変更する場合、Oracle Internet Directoryでは通常、変更により1つの新しい値のみが追加されるときでも、その属性値をすべて含む変更ログが作成されます。ただし、数百万個の値を含む場合があるmemberおよびuniquememberでは、この動作によりパフォーマンスの問題が生じます。memberおよびuniquememberについては、Oracle Internet Directoryではそうせずに、追加または削除された値のみを含む変更ログを生成します。この動作は、DSE属性orclsimplemodchglogattributesによって制御されます。

変更ログは、レプリケーション・サーバーがコンシュームした後、ガベージ・コレクタによってパージされます。

43.1.4 ディレクトリ・レプリケーションの変更ログのパーティション化の概要

Oracle Internet Directoryは、各変更をエントリとして変更ログ表に記録します。

この項には次のトピックが含まれます:

43.1.4.1 ディレクトリ・レプリケーションの変更ログのパーティション化について

変更ログ表には、通常、数千から数百万のレコードが含まれます。しかし、このような大容量の表には、次のように重要な考慮事項があります。

  • これらの表に対するデータの追加が発生する継続的な更新。

  • 新しい変更レコードの継続的なレプリケーション検索。

  • 不要なデータを削除するための定期的なパージ。

これらの要件に対処するため、Oracle Internet Directoryでは、変更ログ表のパーティション化の概念が導入されています。パーティション化によって、大規模な表を、より小規模で管理しやすいパーティションと呼ばれる複数の断片に分割できます。各パーティションには、その独自の名前、コンピューティング・リソースおよび記憶域特性があります。問合せが実行されると、処理が必要な行を保持するパーティションにリクエストが転送されます。これによって、問合せ実行のパフォーマンスが向上し、効率性が強化され、日々のメンテナンスの複雑性が簡略化されます。

ノート:

変更ログのパーティション化は、Oracle Database 11g Enterprise Edition以上のバージョンでサポートされます。

43.1.4.2 変更ログのパーティション化の方法

Oracle Internet Directoryでは、100Kのパーティション範囲を定義して、変更ログ表のODS_CHG_LOGをパーティション化できます。データベースでは100Kのレコードごとに新しいパーティションが作成されるため、各パーティションには100Kのレコードが含まれることになります。

パージが実行されると、個々のレコードではなくパーティションが削除されます。逆に言えば、すべての変更がパージされるわけではありません。パージは、変更ログの最大数が一定の間隔値に到達した場合にのみ発生します。

43.1.4.3 変更ログのパーティション化の構成

変更ログ表のパーティション化を構成するには、製品のアップグレード後またはインストール後に、明示的にoidchlogs.sqlスクリプトを実行する必要があります。このSQLスクリプトは、インストール・パッケージに附属しています。

ノート:

  • Oracle Internet Directoryのデフォルト・インストールでは、変更ログのパーティション化は有効になりません。

  • 変更ログのパーティション化のためにoidchlogs.sqlスクリプトを実行する前に、すべてのOracle Internet Directoryインスタンスを停止する必要があります。

次のディレクトリに移動して、サービスの停止中にOracle Internet Directoryデータベース・ユーザーとしてSQLスクリプトを実行します。

$ORACLE_HOME/ldap/admin/oidchlogs.sql

パーティション化に成功すると、バックアップ・パーティション表ods_chg_logとして、chglog_[timestamp]という名前の表が作成されます。

43.1.5 管理者操作キュー

この項では、レプリケーションの管理者操作キュー、パージ・キューおよびリトライ・キューのロールについて説明します。

レプリケーションの管理者操作キュー、パージ・キューおよびリトライ・キューの役割の詳細は、「マルチマスター・レプリケーション・プロセスを使用したエントリの管理」を参照してください。競合解消におけるこれらのキューの役割の詳細は、「Oracleレプリケーションにおける競合の解消の概要」を参照してください。

43.1.5.1 キューの管理について

管理者操作キュー・ツールのManageHiq.retryおよびManageHiq.purgeにより、管理者操作キューからリトライ・キューまたはパージ・キューにそれぞれ変更を移動できます。「管理者操作キューの管理」を参照してください。

43.1.5.2 キュー統計について

コマンド行を使用してキュー統計を表示できます。「ldapsearchを使用した変更ログの表示の概要」を参照してください。

43.1.5.3 管理者操作キュー・ツールで処理されるエントリ数

レプリケーション・サーバーが一度に処理できる変更ログの最大数を管理者操作キューのエントリ数が超える場合、一部のエントリが処理されません。

レプリケーション・サーバーが一度に処理できる変更ログの最大数は、次の2つの構成属性の最小数です。

  • レプリケーション構成セット内のorclsizelimit

  • レプリケーションがアクティブであるOIDコンポーネントのインスタンス固有の構成エントリ内のorclsizelimit

レプリケーション構成セット内のorclsizelimitのデフォルト値は1000です。これを0に設定すると、デフォルト値の1000が採用されます。

Oracle Internet Directoryインスタンス固有のエントリ内のorclsizelimit属性は、検索時に返されるエントリの最大数を指定します。デフォルト値は10000です。

一度に処理する変更ログの数を増やすには、両方の属性を同じ値(1000より大きい値)に設定する必要があります。

Oracle Internet Directoryサーバー・インスタンスのorclsizelimit属性の設定値を大きくしすぎるとサーバーのパフォーマンスに影響を与えます。これはOracle Internet Directoryサーバー・インスタンスのorclsizelimitが、検索時に返されるエントリの最大数も制御するためです。

43.1.6 パイロット・モードについて

パイロット・モードを使用して、アプリケーションを本番環境にデプロイする前にテストします。

通常、パイロット・モードは、本番ノードからの一方向レプリケーションを使用してローカル・ノードに設定します。レプリカはパイロット・モードですが、ローカル・ノードで発生するLDAPの変更はすべて追跡されます。パイロット・モードが終了すると、これらの変更はLDIFファイルに書き込まれます。アプリケーションが本番環境にデプロイされるときに、パイロット・レプリカで追加または変更されたすべてのエントリをldifファイルを使用して本番ノードに追加できます。

43.1.7 Oracleレプリケーションにおける競合の解消の概要

競合は、ディレクトリ・レプリケーション・サーバーがサプライヤからコンシューマにリモートの変更を適用しようとして失敗した場合、常に発生します。

この項では、様々なタイプのレプリケーションの競合、競合の自動解消およびその仕組みについて説明します。

この項には次のトピックが含まれます:

43.1.7.1 Oracleレプリケーションにおける競合の解消について

双方向およびマルチマスターLDAPベース・レプリケーションを使用すると、複数のディレクトリ・サーバーを更新できます。競合は、ディレクトリ・レプリケーション・サーバーがサプライヤからコンシューマにリモートの変更を適用しようとして失敗した場合、常に発生します。

通常、競合はWide Area Network上で発生する場合がある通信速度の低下や送信エラーが原因で発生する変更の時間的なずれが原因です。また、過去に発生した不整合がタイムリに解消されていない場合、引き続き競合が発生する可能性があります。

部分レプリケーションでは、ネーミング・コンテキストが含むから除外に変更されると、レプリケーション・サーバーによりコンシューマ側でネーミング・コンテキストが削除されます。同様に、ネーミング・コンテキストが除外から含むに変更されると、レプリケーション・サーバーで、サプライヤからコンシューマへのネーミング・コンテキスト全体が同期化されます。

競合を引き起こす可能性があるLDAP操作は次のとおりです。

  • 追加

  • 削除

  • 変更

  • 相対識別名または識別名の変更

43.1.7.2 レプリケーション競合が発生するレベル

競合には次の2つのタイプがあります。

  • エントリ・レベルの競合

  • 属性レベルの競合

表43-1 レプリケーション競合のタイプ

レプリケーション競合のレベル 説明

エントリ・レベルの競合

ディレクトリ・レプリケーション・サーバーが、コンシューマに変更を適用するときに発生します。次のいずれかのタイプの変更がコンシューマで発生する可能性があります。

  • すでに存在しているエントリの追加

  • 存在していないエントリの削除

  • 存在していないエントリの変更

  • 存在していない識別名に対する識別名の変更操作

これらの競合は、解消するのが難しい場合があります。たとえば、次のような原因の場合は競合を解消するのが不可能な可能性があります。

  • エントリが別の位置に移動

  • エントリがサプライヤから未到着

  • エントリが削除済

  • エントリがコンシューマに存在しない

存在する必要がないエントリが存在している場合は、以前に追加済であるか、最近識別名の操作変更があった可能性があります。

属性レベルの競合

2つのディレクトリが、同じ属性を異なる値で異なる時間に更新している場合に発生します。属性が単一値の場合、レプリケーション・プロセスは、競合および属性バージョン番号に含まれている変更のタイムスタンプを検証して、競合を解消します。レプリケーション構成設定エントリの属性orclReplAttrConflは、どちらを最初に適用するかを決定します。orclReplAttrConfl0(デフォルト)の場合はタイムスタンプが最初に適用されます。1の場合は属性バージョンが最初に適用されます。

43.1.7.3 レプリケーション競合の自動解消

11gリリース1 (11.1.1.0.0)以降では、競合の自動解消を有効にできます。この機能を有効にすると、サプライヤのスキーマとコンシューマのスキーマが一致するときは、管理者操作キューの競合は自動的にパージ・キューに移動されます。

ldapmodifyコマンドを使用して、競合の自動解決を有効または無効にできます。

コマンド行を使用するには、レプリケーション構成セットのorclconflresolutionの値を変更します。

43.1.7.4 競合の自動解消の動作

ディレクトリ・レプリケーション・サーバーは、次の処理によって、発生した競合をすべて解消しようとします。

  1. 変更が適用されたときに、競合が検出されます。

  2. レプリケーション・プロセスは、特定の待機期間が過ぎると、特定回数分または反復による変更の再適用を、特定期間試行します。

  3. レプリケーション・プロセスが変更の適用に成功しないまま再試行制限に達した場合、変更に競合のフラグを付けた後、解消を試みます。解消規則(次の項で説明)に従って競合を解消できない場合は、優先順位の低い管理者操作キューにその変更を移動します。変更は、レプリケーション承諾されたorclHIQScheduleパラメータに指定した時間単位に従って適用されます。ディレクトリ・レプリケーション・サーバーは、変更を移動する前にシステム管理者用のログ・ファイルに競合を書き込みます。

    ノート:

    レプリケーション時に、スキーマ、カタログおよびグループ・エントリの競合の解消は行われません。これは、多数の複数値の属性の競合を解消しようとすると、パフォーマンスに重大な影響を及ぼす可能性があるためです。一度に複数のマスターからこのようなエントリの更新を行うことは、回避してください。

    関連項目:

    • マルチマスター・レプリケーション・プロセスによるエントリの追加、削除、変更、および識別名と相対識別名の変更方法の詳細は、「レプリケーションの動作」を参照してください。

    • スキーマについて不明な点がある場合は、『Oracle Identity Managementリファレンス』LDAPスキーマの概要に関する項を参照してください

    • カタログについて不明な点がある場合は、『Oracle Identity Managementリファレンス』catalogコマンド行ツールのリファレンスを参照してください

    • グループ・エントリについて不明な点がある場合は、12cリリース2 (12.2.1.3.0)ライブラリの『Oracle Fusion Middleware Oracle Identity Managerでのセルフ・サービス・タスクの実行』のグループ・エントリの管理に関する項を参照してください。

43.2 ODSMを使用したレプリケーションの管理およびモニタリング

ODSMを使用してレプリケーションを管理およびモニタリングできます。

「Oracle Directory Services Managerを使用したローカル変更ログの管理」を参照してください。

43.2.1 Oracle Directory Services Managerを使用したローカル変更ログの管理

Oracle Directory Services Managerでは、最近実行された500件の変更を、変更ログ番号別、発生した操作の種類別(追加、変更、削除など)および各変更が加えられたエントリ別に表示できます。特定の変更を指定して、その詳細を表示することもできます。

この項では、次の項目について説明します。

43.2.1.1 ODSMを使用したローカル変更ログの表示

次のようにOracle Directory Services Managerを使用して、変更ログを表示できます。

  1. タスク選択バーで、「拡張」を選択します。
  2. 「変更ログ」を拡張します(まだ拡張されていない場合)。左側のパネルに、直近の変更から順に最近の500件の変更が表示されます。
  3. 変更を選択してそのプロパティを表示します。
43.2.1.2 変更ログ・エントリのプロパティ

表43-2に、「変更ログ」ページに表示されるプロパティと、対応する変更ログ・エントリの属性を示します。

表43-2 「変更ログ」ページのプロパティ

プロパティ 変更ログ属性

変更番号

changenumber

操作

changetype

ターゲットDN

targetdn

変更

changes

グローバル一意識別子(GUID)

orclguid

親GUID

orclparentguid

変更再試行回数

orclchangeretrycount

変更者名

modifiersname

操作時間

operationtime

サーバー名

servername

43.3 コマンド行を使用したレプリケーションの管理およびモニタリングの概要

ldapmodify、ldapsearch、remtoolおよびコマンド行を使用して、レプリケーションを管理およびモニターする方法について理解します。

この項では、次の項目について説明します。

43.3.1 コマンド行を使用した変更ログ生成の有効化と無効化

変更ログ生成を有効化および無効化するには、ldapmodifyを使用して、インスタンス固有の属性であるorclgeneratechangelogの値を変更します。変更ログ生成を有効化するにはこの値を1に設定し、変更ログ生成を無効化するには0に設定します。

コマンドは次のとおりです。

ldapmodify -D cn=orcladmin -q -p portNum -h hostname -f ldifFile 

インスタンス固有のエントリ内のorclgeneratechangelog属性の値を1に変更するLDIFファイルは、次のようになります。

dn: cn=componentname,cn=osdldapd,cn=subconfigsubentry
changetype: modify
replace: orclgeneratechangelog
orclgeneratechangelog: 1

43.3.2 ldapsearchを使用した変更ログの表示の概要

ldapsearchを使用して、変更ログを表示できます。

表43-3で、変更ログの重要な属性も確認できます。

この項には次のトピックが含まれます:

43.3.2.1 ldapsearchを使用した変更ログの表示

コマンド行から変更ログを表示するには、ldapsearchを使用します。表示する変更ログの変更番号または変更番号の範囲を検索フィルタに指定します。サプライヤからローカル・ホストに転送された変更ログを表示するには、サプライヤのレプリカIDも検索フィルタに指定します。

次の例を参考にしてください。

  • サプライヤからローカル・ノードに転送された変更ログの範囲を表示するには、次のように入力します。

    ldapsearch -D cn=orcladmin -p port -q -b "cn=changelog" -s one \ 
       "(&(objectclass=changeLogEntry)(servername=SUPPLIER_REPLICAID)\
       (changeNumber>=FROMCHGNO)(changeNumber<=TOCHGNO))"
    
  • サプライヤからローカル・ノードに転送された単一の変更ログを表示するには、次のように入力します。

    ldapsearch -D cn=orcladmin -p port -q -b "cn=changelog" -s one \
       "(&(objectclass=changeLogEntry)(servername=SUPPLIER_REPLICAID)\
       (changeNumber=CHGNO))" 
    
  • ローカル・ノードで生成された変更ログの範囲を表示するには、次のように入力します。

    ldapsearch -D cn=orcladmin -p port -q -b "cn=changelog" -s one \
     "(&(objectclass=changeLogEntry)(changeNumber>=FROMCHGNO)(changeNumber<=TOCHGNO))"
    
  • ローカル・ノードで生成された単一の変更ログを表示するには、次のように入力します。

    ldapsearch -D cn=orcladmin -p port -q -b "cn=changelog" -s one \
       "(&(objectclass=changeLogEntry)(changeNumber=CHGNO))" 
    

出力の一部の行には、セパレータとして文字列<@! !@>が含まれる場合があります。

43.3.2.2 変更ログの重要な属性

表43-3に、変更ログの重要な属性を示します。

表43-3 変更ログの重要な属性

属性 説明

changenumber

変更番号

changetype

操作

targetdn

ターゲットDN

changes

変更

orclguid

グローバル一意識別子(GUID)

orclparentguid

親GUID

orclchangeretrycount

変更再試行回数

modifiersname

変更者名

operationtime

操作時間

servername

サーバー名

changeloginfo

クライアントIPアドレスの値など、その他の変更ログ情報

たとえば: changeloginfo=clientip=::ffff:10.229.116.104

43.3.3 ldapmodifyを使用したレプリカ・サブエントリの属性の構成の概要

ldapmodifyを使用して、レプリカ・サブエントリ属性を構成できます。

表43-4に、ldapmodifyを使用して変更できる属性を示します。

この項には次のトピックが含まれます:

43.3.3.1 ldapmodifyを使用したレプリカ・サブエントリの属性の構成

レプリカ・サブエントリには、次の識別名があります

orclreplicaid=Replica _ID,cn=replication configuration

ldapmodifyを使用してレプリカ・サブエントリ属性を変更するためのコマンド行構文は、次のとおりです。

ldapmodify -D cn=orcladmin -q -p portNum -h hostname -f ldifFile 

orclreplicastateをゼロに設定するには、次のLDIFファイルを使用します。

dn: orcclreplicaid=Replica _ID,cn=replication configuration
changetype: modify
replace: orclreplicastate
orclreplicastate: 0
43.3.3.2 レプリカ・サブエントリの属性

表43-4に、ldapmodifyを使用して変更できるレプリカ・サブエントリの属性を示します。

表43-4 レプリカ・サブエントリの属性

説明 構成属性

レプリカID

orclreplicaid

レプリカ1次URI

orclreplicauri

レプリカ2次URI

orclreplicasecondaryuri

レプリカ状態

orclreplicastate

レプリカ・タイプ

orclreplicatype

表A-2に、orclreplicastateの値の詳細を示します。値として0、1、2、6または8を設定できます。表A-2にリストされている他のorclreplicastateの値は、ブートストラップ時にレプリケーション・サーバーによって設定される読取り専用値です。

43.3.4 remtoolを使用したレプリカのパイロット・モードの指定

エンタープライズの一部としてレプリカをデプロイする前に、これをパイロット・モードでテストできます。

パイロット・モードを開始および終了するには、remtoolコマンドを使用します。構文は次のとおりです。

remtool -pilotreplica begin -bind hostname:ldap_port 
remtool -pilotreplica end -bind hostname:ldap_port [-bkup file_name]

remtool -pilotreplica beginを実行すると、次のようになります。

  • orclreplicatype2(パイロット)に設定されます。

  • orclpilotmode1に設定されます。

  • pilotstarttimeは現在の時刻に設定されます。

remtool -pilotreplica endを実行すると、次のようになります。

  • orclpilotmode0に設定されます。

ldapmodifyを使用してこれらの属性を直接変更しないようにしてください。

関連項目:

remtool-pilotreplicaオプションの詳細は、『Oracle Identity Managementリファレンス』remtoolコマンドのリファレンスを参照してください。

43.3.5 ldapmodifyを使用したレプリケーション承諾の属性の構成の概要

ldapmodifyを使用して、レプリケーション承諾属性を構成できます。

この項には次のトピックが含まれます:

43.3.5.1 レプリケーション承諾のオプション

表43-5に、ldapmodifyを使用して変更できるレプリケーション承諾の属性を示します。詳細は、表42-2を参照してください。

表43-5 レプリケーション承諾のオプション

説明 構成属性 デフォルト値

レプリケーション頻度

orclupdateschedule

60 (秒)

HIQスケジュール

orclhiqschedule

600 (秒)

ディレクトリ・レプリケーション・サーバーをディレクトリ・サーバーに常時接続するか、変更ログ処理が行われるたびに接続するか

orclldapconnkeepalive

1

関連項目:

表42-2

43.3.5.2 ldapmodifyを使用したレプリケーション承諾の属性の構成

レプリケーション承諾には、次の識別名があります。

orclagreementid=Agreement_ID,orclreplicaid=Replica_ID,cn=replication configuration

ノート:

常に、レプリケーション承諾を削除または変更する前にレプリケーションを非アクティブ化します。unresolvable-reference.htmlを参照してください。

次のLDIFファイルは、レプリケーション承諾のorclHIQSchedule属性の値を900分に変更して管理者操作キュー・スケジュールを変更します。

dn: orclagreementid=Agreement_ID,orclreplicaid=Replica_ID,cn=replication configuration 
changetype: modify
replace: orclhiqschedule
orclhiqschedule: 900

43.3.6 ldapmodifyを使用したレプリカのネーミング・コンテキスト・オブジェクト・パラメータの変更の概要

レプリケーション範囲はコマンド行から変更できます。

レプリケーション範囲を変更するには、レプリケーションのネーミング・コンテキスト・コンテナ・エントリの下のネーミング・コンテキスト・オブジェクト・エントリを作成または変更します。

この項には次のトピックが含まれます:

43.3.6.1 ldapmodifyを使用したレプリカのネーミング・コンテキスト・オブジェクト・パラメータの変更

レプリケーション範囲を変更するには、次のようなコマンド行を使用します。

ldapadd -p port_number -h host -f file.ldif

この場合、LDIFファイルを使用して承諾の範囲を設定します。

たとえば、次のLDIFファイルを使用して、レプリケーション範囲をcn=oraclecontextに設定します。

dn: cn=includednamingcontext000001,cn=replication
 namecontext,orclagreementid=agreementid,orclreplicaid=replicaid,cn=replication
 configurationobjectclass: orclreplnamectxconfig
orclincludednamingcontexts: cn=oraclecontext
cn: includednamingcontext000001

次のファイルを使用して、レプリケーション範囲からEMEAおよびAPACグループと、userpasswordおよびauthpassword属性を除外します

dn: cn=includednamingcontext000002,cn=replication 
 namecontext,orclagreementid=agreementid,orclreplicaid=replicaid,cn=replication
 configuration
objectclass=orclreplnamectxconfig
orclincludednamingcontexts: dc=com
orclexcludednamingcontexts: cn=groups,l=emea,dc=xyz,dc=com
orclexcludednamingcontexts: cn=groups,l=apac,dc=xyz,dc=com
orclExcludedAttributes: userpassword
orclExcludedAttributes: authpassword
cn: includednamingcontext000002

レプリカのネーミング・コンテキスト・オブジェクト・パラメータは、『Oracle Identity Managementリファレンス』Oracleディレクトリ・レプリケーションのスキーマ要素に関する項を参照してください。

ノート:

レプリケーション・サーバーは、サプライヤ・レプリカからネーミング・コンテキスト・オブジェクトを読み取ります。

43.3.6.2 LDAPベースのレプリカのネーミング・コンテキスト・オブジェクトの追加

次の操作を実行する、LDAPベースのレプリカのネーミング・コンテキスト・オブジェクトを作成できます。

  • ou=Americas,cn=mycompanyネーミング・コンテキストをレプリケート

  • レプリケーションからcn=customer profile, ou=Americas,cn=mycompanyネーミング・コンテキストを除外

  • レプリケーションからuserpassword属性を除外

次のステップに従って、ネーミング・コンテキスト・オブジェクトを追加します。

  1. サンプル・ファイルmod.ldifを、次のように編集します。
    dn: cn=naming_context_identifier, cn=replication  namecontext,
     orclagreementid=replication_agreement_identifier,
     orclreplicaid=supplier_replica_identifier,cn=replication configuration
    orclincludednamingcontexts: ou=Americas,cn=mycompany
    orclexcludednamingcontexts: cn=customer profile, ou=Americas, cn=mycompany
    orclexcludedattributes: userpassword
    objectclass: top
    objectclass: orclreplnamectxconfig
    
  2. ldapaddを使用して、部分レプリケーションのネーミング・コンテキスト・オブジェクトをサプライヤに追加します。
    ldapadd -D "cn=orcladmin" -q -h supplier_host \
            -p port_number -f mod.ldif
43.3.6.3 ネーミング・コンテキスト・オブジェクトの削除

「LDAPベースのレプリカのネーミング・コンテキスト・オブジェクトの追加」で作成したネーミング・コンテキスト・オブジェクトを削除するには、次のように入力します。

ldapdelete -D "cn=orcladmin" -q \
           -h supplier_host -p supplier_host_port_number \
           "cn=naming_context_identifier, cn=replication namecontext, \
            orclagreementid=replication_agreement_identifier, \
            orclreplicaid=supplier_replica_identifier, \
            cn=replication configuration"
43.3.6.4 レプリカのネーミング・コンテキスト・オブジェクトのorclIncludedNamingContexts属性の変更

ディレクトリ・レプリケーション・サーバーは、レプリカのネーミング・コンテキスト・オブジェクトのorclIncludedNamingcontexts属性の値を使用して、部分レプリケーションに含める最上位サブツリーを指定します。

この例では、含める対象ネーミング・コンテキストがc=usに設定されます。これは、c=usが部分レプリケーションに含められることを意味しています。

  1. サンプル・ファイルmod.ldifを、次のように編集します。
    DN:cn=naming_context_identifier,cn=replication namecontext,
     orclagreementid=replication_agreement_identifier,
     orclreplicaid=supplier_replica_identifier,cn=replication configuration
    Changetype:modify
    Replace: orclIncludedNamingcontexts
    orclIncludedNamingcontexts: c=us
    
  2. ldapmodifyを使用して、レプリケーション承諾のorclupdateschedule属性を更新します。
    ldapmodify -D "cn=orcladmin" -q -h supplier_host -p port -f mod.ldif
    
  3. ディレクトリ・レプリケーション・サーバーを再起動します。
43.3.6.5 レプリカのネーミング・コンテキスト・オブジェクトのorclExcludedNamingContexts属性の変更

ディレクトリ・レプリケーション・サーバーは、レプリカのネーミング・コンテキスト・オブジェクトのorclExcludedNamingcontexts属性の値を使用して、部分レプリケーションから除外する最上位サブツリーを指定します。

この例では、除外対象ネーミング・コンテキストがou=Europe,c=usおよびou=Americas,c=usに設定されます。これは、この2つのネーミング・コンテキストが部分レプリケーションから除外されることを意味しています。

  1. サンプル・ファイルmod.ldifを、次のように編集します。
    DN:cn=naming_context_identifier,
     cn=replication namecontext,
     orclagreementid=replication_agreement_identifier,
     orclreplicaid=supplier_replica_identifier,cn=replication configuration 
    Changetype:modify
    Replace: orclExcludedNamingcontexts
    orclExcludedNamingcontexts: ou=Europe, c=us
    orclExcludedNamingcontexts: ou=Americas, c=us
    
  2. ldapmodifyを使用して、レプリケーション承諾のorclupdateschedule属性を更新します。
    ldapmodify -D "cn=orcladmin" -q -h supplier_host -p port -f mod.ldif
    
  3. ディレクトリ・レプリケーション・サーバーを再起動します。

ノート:

orclexcludednamingcontexts属性に指定されたサブツリーは、同一レプリカのネーミング・コンテキスト・オブジェクトで指定されるincludednamingcontextのサブツリーである必要があります。

43.3.6.6 レプリカのネーミング・コンテキスト・オブジェクトのorclExcludedAttributes属性の変更

含めるネーミング・コンテキストに加えられた特定の変更を、属性レベルで部分レプリケーションから除外するように指定できます。ディレクトリ・レプリケーション・サーバーは、レプリカのネーミング・コンテキスト・オブジェクトのorclExcludedAttributes属性の値を使用して、除外する属性を判別します。

この例では、orclincludednamingcontexts属性に指定されたtelephonenumber属性およびtitle属性が、レプリケーションから除外されます。

  1. サンプル・ファイルmod.ldifを、次のように編集します。
    DN:cn=naming_context_identifier,
     cn=replication namecontext,
     orclagreementid=replication_agreement_identifier,
     orclreplicaid=supplier_replica_identifier,cn=replication configuration 
    Changetype:modify
    Replace: orclExcludedAttributes
    orclExcludedAttributes: telephonenumber
    orclExcludedAttributes: title
    
  2. ldapmodifyを使用して、レプリケーション承諾のorclupdateschedule属性を更新します。
    ldapmodify -D "cn=orcladmin" -q -h my_host -p port -f mod.ldif
    
  3. ディレクトリ・レプリケーション・サーバーを再起動します。

43.3.7 ldapmodifyを使用したレプリケーション構成セットの属性の構成の概要

ldapmodifyを使用して、レプリケーション構成セットの属性を構成できます。

この項には次のトピックが含まれます:

43.3.7.1 ldapmodifyを使用したレプリケーション構成セットの属性の構成について

レプリケーション構成セットには、次の識別名があります。

cn=configset0,cn=osdrepld,cn=subconfigsubentry

たとえば、次のLDIFファイルでは、レプリケーション構成セットにorclreplusesasl;digest-md5属性を追加して設定し、レプリケーションのバインド用SASLを有効にします。

dn: cn=configset0,cn=osdrepld,cn=subconfigsubentry
changetype: modify
add: orclreplusesasl;digest-md5
orclreplusesasl;digest-md5: 1

orclsizelimitの変更の詳細は、「管理者操作キュー・ツールで処理されるエントリ数の管理」を参照してください。

関連項目:

表42-4

43.3.7.2 レプリケーション構成属性およびデバッグ・レベル

表43-6に、ldapmodifyを使用して変更できるレプリケーション構成セットの属性を示します。

表43-6 レプリケーション構成の属性

説明 構成属性 デフォルト値

変更再試行回数

orclchangeretrycount

10

最大ワーカー数

orclreplmaxworkers

20

自動チューニング・レプリケーション

(変更した後、サーバーを再起動します。)

orclreplautotune

1

サプライヤ当たりの適用スレッド数

orclthreadspersupplier;applly

5

サプライヤ当たりの移送スレッド数

orclthreadspersupplier;transport

1

レプリケーション・サイクル当たりの最大プロセス・エントリ数

orclsizelimit

1000

レプリケーション競合の自動解決

orclconflresolution

1

スタック・ダンプの生成

(変更した後、サーバーを再起動します。)

orclsdumpflag

レプリケーション・バインド用SASL

orclreplusesasl;digest-md5

なし

最大ログ・ファイル・サイズ(MB)

orclmaxlogfilesize

1

ローテーション状態を保つログ・ファイルの最大数

orclmaxlogfiles

100

デバッグ・レベル

orcldebuglevel

0

レプリケーション・ステータス

orclreplicationstate

アクティブ化/非アクティブ化

orclactivatereplication

0

属性orcldebuglevelは、表43-7に示す値の任意の組合せに設定できます。値は加算方式です。再起動は不要です。

表43-7 レプリケーションのデバッグ・レベル

デバッグ・レベル orcldebuglevelの値

レプリケーション・プロセスのトレース

4194304

レプリケーション・パフォーマンス・ログ

2097152

ファンクション・コールのトレース

8388608

大容量トレースのデバッグ

16777216

43.3.8 コマンド行を使用した競合解消メッセージのモニタリングの概要

コマンド行を使用して、競合解消メッセージをモニターできます。

表43-8に、変更タイプおよび各競合タイプの解消方法を示します。

この項では、次の項目について説明します。

43.3.8.1 コマンド行を使用した競合解消メッセージのモニタリング

競合がログに書き込まれた場合、それは、システムに備わった解消手順では競合を解消できないということを意味します。以前に適用されなかった変更によって新しいレプリケーション変更の競合が発生することを防止するために、ログを定期的にモニターすることが重要です。

レプリケーション変更の競合をモニターするには、レプリケーション・ログの内容を検証します。それぞれに付加されているタイムスタンプによって、各メッセージを識別できます。

競合解消メッセージは、ファイル$DOMAIN_HOME/servers/OID/logs/componentName/oidrepld00-XXXX.logに記録されます。この場合、XXXXは0000からorclmaxlogfiles configuredの範囲の数値です。

各メッセージには、競合の理由、変更番号、サプライヤ・ノード、変更タイプ、ターゲットDNおよび結果が含まれています。いくつか例を挙げます。

これは、競合がレプリケーション・サーバーによって自動的に解消された競合解消メッセージです。

[2008-10-09T09:57:31-07:00] [OID] [NOTIFICATION:16] [] [OIDREPLD] [host: stacu14]
[pid: 4280] [tid: 3] Worker(Transport)::[[************ Conflict Resolution
Message ************
Conflict reason: Attempted to add an existing entry.
Change number: 3696.
Supplier: stacu14_lm5.
Change type: Add.
Target DN: dc=org.
Result: Dropped a newer change entry.
]] 

次は、管理者操作キューに移動された未解決の競合です。

[2008-10-09T10:03:28-07:00] [OID] [NOTIFICATION:16] [] [OIDREPLD] [host: stacu14]
[pid: 4653] [tid: 13] Worker(Transport)::[[************ Conflict Resolution
Message ************
Conflict reason: Attempted to delete a non-existent entry.
Change number: 3698.
Supplier: stacu14_lm5.
Change type: Delete.
Target DN: dc=imc,dc=org.
Result: Change moved to low priority queue after failing on 10th retry.
]]
43.3.8.2 競合解消メッセージ

表43-8に、競合の理由、変更タイプおよび結果を示します。

表43-8 競合解消メッセージ

競合の理由 変更タイプ 結果

既存のエントリの追加が試行されました

追加

新しい変更エントリが削除されました

N番目の再試行に失敗した後、変更は低優先度のキューに移動されました

変更エントリより後に作成された重複するターゲット・エントリが削除されました。変更エントリを再度適用してください

新しい変更エントリが削除されました

変更エントリは、guidがターゲット・エントリのguidより大きいため削除されました

変更エントリは、guidがターゲット・エントリと同じ(変更エントリとターゲット・エントリが同一)であるため削除されました

変更エントリより大きいguidを持つ重複するターゲット・エントリは削除されました

親エントリが存在しません

追加

N番目の再試行に失敗した後、変更は低優先度のキューに移動されました

内部エラーが発生しました

追加

削除

変更

moddn

N番目の再試行に失敗した後、変更は低優先度のキューに移動されました

存在しないエントリの変更が試行されました

変更

N番目の再試行に失敗した後、変更は低優先度のキューに移動されました

存在しないエントリの削除が試行されました

削除

N番目の再試行に失敗した後、変更は低優先度のキューに移動されました

リーフ以外のエントリの削除が試行されました

削除

N番目の再試行に失敗した後、変更は低優先度のキューに移動されました

存在しないエントリの移動が試行されました

moddn

N番目の再試行に失敗した後、変更は低優先度のキューに移動されました

既存のエントリへの移動が試行されました

moddn

N番目の再試行に失敗した後、変更は低優先度のキューに移動されました

存在しない別のエントリのmoddnの同期化が進行中です

moddn

移動しようとしているエントリより後に作成された既存のエントリが削除されました。エントリの移動が再試行されます

ソース・エントリより新しい既存のエントリへの移動が試行されました

moddn

エントリの移動が再試行されます

移動しようとしているエントリより古い既存のエントリへの移動が試行されました

moddn

ソース・エントリが削除され、変更が削除されました

同時に作成された同じguidを持つ既存のエントリへの移動が試行されました

moddn

ソース・エントリが削除され、変更が削除されました

移動しようとしているエントリより大きいguidを持つ既存のエントリへの移動が試行されました

moddn

重複するターゲット・エントリが削除され、変更が再適用されました

移動しようとしているエントリより小さいguidを持つ既存のエントリへの移動が試行されました

moddn

ソース・エントリが削除され、変更が削除されました

43.3.9 管理者操作キューの管理

レプリケーションの競合が発生すると、Oracle Internet Directoryレプリケーション・サーバーは変更をリトライ・キューに入れ、そこからの変更の適用を指定された回数試行します。指定された再試行回数の後に失敗した場合、レプリケーション・サーバーは変更を管理者操作キューに入れます。レプリケーション・サーバーは、管理者によるアクションを待ちながら、そこから長い間隔で変更適用プロセスを繰り返します。

管理者操作キュー・ツールのManageHiq.retryおよびManageHiq.purgeにより、管理者操作キューからリトライ・キューまたはパージ・キューにそれぞれ変更を移動できます。パージ・キューに変更を移動すると、以降ログ・エントリに対する変更の再適用は試行されません。管理者操作キューの変更を処理するには、次の一般的なステップを実行してください。

  1. 管理者操作キューの変更を検証します。
  2. 比較調整ツールを使用して競合している変更を調整します(「一貫性のないデータのoidcmprecによる比較調整の概要」を参照してください)。
  3. ManageHiq.retryを使用してリトライ・キューに、またはManageHiq.purgeを使用してパージ・キューに変更を戻します。

関連項目:

管理者操作キュー・ツールの使用方法の詳細は、『Oracle Identity Managementリファレンス』Oracle Internet Directoryレプリケーション管理ツールに関する項を参照してください

43.3.10 remtool -pthputを使用したディレクトリ・レプリケーション・グループでのレプリケーションの進行状況のモニタリング

レプリケーション環境管理ツールremtoolを使用して、ディレクトリ・レプリケーション・グループでのレプリケーションの進行状況をモニターできます。

-pthputオプションを指定してremtoolを起動すると、ツールは指定されたノードにバインドされ、ディレクトリ・レプリケーション・グループ内のすべてのノードに関する情報が収集されます。この情報は、指定された間隔で表示されます。

構文は次のとおりです。

remtool -pthput [-bind hostname:port] -interval time_in_seconds [-file filename]

bind引数はオプションです。これを指定しない場合、remtoolからhostnameportを入力するように求められます。レプリケーションdnのパスワードの入力を求められます。

intervalパラメータは、オプション・パラメータです。値は秒で指定します。デフォルト値は60秒です。各時間隔が経過するたびに、ディレクトリ・レプリケーション・グループ内のサプライヤおよびコンシューマ・ノードごとに次の情報がツールに表示されます。

  • 最後の時間隔でキューに入れられた変更、q_chgs

  • 最後に適用された変更番号、LA_Chg#

  • 最後の時間隔で適用された変更、Appl_chgs

  • 最後の3回の時間隔での平均スループット、Avg_thput

fileパラメータを指定すると、コマンド行に表示される出力がそのファイルに記録されます。指定しないと、タイムスタンプに基づいた名前のファイルに出力が記録されます。

出力例

------------------------------------------------------------------------------
Directory Replication Group (DRG) details :
--- ------------------ ----------------------- ----------------------- -----
Sl  Replicaid          Directory Information   Supplier Information    Repl. No.                                                                    Type
--- ------------------ ----------------------- ----------------------- -----
001 adc2101322_nldap32 adc2101322.us.example.com:3070 adc2101322_nldap3      RW
002 adc2101322_nldap3  adc2101322.us.example.com:3061 adc2101322_nldap32     RW
--- ------------------ ----------------------- ----------------------- -----
Queue Statistics :
------------ ------------- ----- ------- ------ ------ ------ --------- --------- --------------------------------
     Supplier            Consumer           Queued      Last Applied     Applied      Average
                                            Changes     Change Number    Changes      Throughput
                                                                                     Of 3 intervals
------------- ------------- ----- ------- ------ ------ ------ --------- --------- -----------------------------
adc2101322_nldap3    adc2101322_nldap32        0          134369             0            0
adc2101322_nldap32   adc2101322_nldap3         0           47342             0            0
------------- ------------- ----- ------- ------ ------ ------ --------- --------- --------------------------
adc2101322_nldap3    adc2101322_nldap32     2286          136214          1845           615
adc2101322_nldap32   adc2101322_nldap3         0           47342             0             0
------------- ------------- ----- ------- ------ ------ ------ --------- --------- -----------------------
adc2101322_nldap3    adc2101322_nldap32     1608          137886          1672          1172
adc2101322_nldap32   adc2101322_nldap3         0           47342             0             0
------------- ------------- ----- ------- ------ ------ ------ --------- --------- ------------------------
adc2101322_nldap3    adc2101322_nldap32      189          140302          2416          1977
adc2101322_nldap32   adc2101322_nldap3         0           47342             0             0
------------- ------------- ----- ------- ------ ------ ------ --------- --------- -----------------------

43.3.11 remtoolを使用したキュー統計の表示およびレプリケーションの検証について

レプリケーション環境管理ツールremtoolを使用すれば、レプリケーション・プロセスの状態をモニターできます。

remtoolを定期的に実行して、レプリケーション・プロセスが正常に実行されていることを確認できます。remtoolコマンドには、キュー統計を表示し、レプリケーションを検証するオプションがあります。

LDAPベースのレプリケーション承諾をモニタリングするためのremtoolオプションは、-pdipqstat-pverifyです。構文は次のとおりです。

remtool -pdispqstat [-v] [-bind hostname:port_number]
remtool -pverify [-v] [-bind hostname:port_number] [-hiqmax hiqmax] [-tbtmax tbtmax]

これらすべてのコマンドで、replication_dn_passwordの入力を求められます。

最初に、-pdispqstatオプションを指定してremtoolを実行します。DRGのキュー統計が表示されます。管理者操作キュー(HIQ)エントリの数および移送される変更ログ(ログTBP)の数が通常よりも多いかどうかを確認します。多い場合は、レプリケーションが本来よりもゆっくりと実行されています。-pverifyオプションを指定してremtoolを実行し、レプリケーション構成を検証します。

-pverifyオプションを使用したremtoolによりテストの失敗が報告された場合は、生成されるレポートをチェックし、レポートの提案に従い、失敗を修正します。

関連項目:

『Oracle Identity Managementリファレンス』remtoolコマンドのリファレンス

43.3.12 管理者操作キュー・ツールで処理できるエントリの数の管理

一度に処理する変更ログの数を増やすには、レプリケーション構成セット内のorclsizelimitと、レプリケーションが実行されているサーバー・インスタンス内のorclsizelimitを同じ値(1000より大きい値)に設定する必要があります。ldapmodifyを使用して両方を変更します。

いずれの場合も、次のように入力します。

ldapmodify -D cn=orcladmin -q -p portNum -h hostname -f ldifFile 

レプリケーション構成セットのorclsizelimitを5000に設定するには、次のようなLDIFファイルを使用します。

dn: cn=configset0,cn=osdrepld,cn=subconfigsubentry
changetype: modify
replace: orclsizelimit
orclsizelimit: 5000

サーバー・インスタンスのorclsizelimitを5000に設定するには、次のようなLDIFファイルを使用します。

dn: cn=componentname,cn=osdldapd,cn=subconfigsubentry
changetype: modify
replace: orclsizelimit
orclsizelimit: 5000

Oracle Internet Directoryサーバー・インスタンスのorclsizelimitパラメータの設定値を大きくしすぎるとサーバーのパフォーマンスに影響を与えます。これはorclsizelimitが、検索時に返されるエントリの最大数も制御するためです。

43.3.13 orclEntryExclusionFilter属性を使用したレプリケーション・フィルタリングの構成

11gリリース1 (11.1.1.9.0)以降のOracle Internet Directoryサーバーおよびディレクトリ・レプリケーション・サーバーでは、レプリケーション承諾のorclEntryExclusionFilter属性で構成されたLDAPフィルタに基づいて、特定のエントリを除外できます。

orclEntryExclusionFilter属性はオプションで、カッコで囲まれた有効なLDAPフィルタ文字列を指定する単一値属性です。詳細は、「レプリケーション承諾エントリの属性」を参照してください。

ノート:

orclEntryExclusionFilter属性のLDAPフィルタ文字列では、非カタログ化属性と集合属性はサポートされません。指定しない場合、フィルタは適用されません。

orclEntryExclusionFilter属性を使用したレプリケーション・フィルタリングは、一方向LDAPレプリケーションにのみ適用され、他のレプリケーション機能は変更されません。

orclEntryExclusionFilter属性を使用してレプリケーション・フィルタリングを構成するには:

  1. "cn=replication configuration"ldapsearchを使用して、レプリケーション承諾エントリのdnを検索します。
  2. ldapmodifyを使用して、ステップ1のレプリケーション承諾エントリにorclEntryExclusionFilter属性を追加します。次の例で、orclEntryExclusionFilter属性は、LDAPフィルタを(sn=smith)と指定しています。
    dn: orclagreementid=000001,orclreplicaid=supplier,cn=replication configuration
    changetype: modify
    add: orclentryexclusionfilter
    orclentryexclusionfilter: (sn=smith)
    
  3. レプリケーション・サーバーを再起動してLDAPフィルタを有効化します。

サプライヤでLDAPフィルタ(sn=smith)に一致するすべてのエントリに対する後続の変更は、コンシューマにレプリケートされません。

43.4 一貫性のないデータのoidcmprecによる比較調整の概要

oidcmprecツールについて説明し、oidcmprecの使用方法の例をいくつか示します。

ノート:

比較調整ツールoidcmprecでは、一方向認証または双方向認証はサポートされず、認証なしモードでのみ動作します。

この項では、次の項目について説明します。

43.4.1 一貫性のないデータのoidcmprecによる比較調整

ディレクトリ・レプリケーション・サーバーが一貫性のないデータを検出した場合、Oracle Internet Directory比較調整ツールを使用して、コンシューマのエントリをサプライヤのエントリと同期化させることができます。

次の一般的なステップを実行します。

  1. サプライヤとコンシューマを、読取り専用モードに設定します。「サーバー・モードの変更」の手順のいずれかを使用します。
  2. サプライヤとコンシューマが安定した状態、つまり変更の供給も適用も行っていない状態にあることを確認します。安定した状態にない場合は、更新が完了するまで待ちます。
  3. コンシューマ上の一貫性のないエントリまたはサブツリーを識別します。
  4. Oracle Internet Directory比較調整ツールを使用して、コンシューマ上の一貫性のないエントリまたはサブツリーを修正します。
  5. サプライヤとコンシューマを、読取り/書込みモードに戻します。

    関連項目:

    Oracle Internet Directory比較調整ツールの構文と動作の詳細は、『Oracle Identity Managementリファレンス』oidcmprecコマンド行ツールのリファレンスを参照してください。

比較調整ツールoidcmprecを使用すると、2つのディレクトリを比較できます。これにより、競合が検出され、解消されます。2つのディレクトリのうち、1つのディレクトリはソース・ディレクトリ、つまり真のソースとみなされます。もう1つのディレクトリは、ソース・ディレクトリと同期する必要がある宛先ディレクトリです。比較対象となるディレクトリは、どのレプリケーション・グループのメンバーでもないディレクトリ、同じレプリケーション・グループのメンバーであるディレクトリ、または別のレプリケーション・グループのメンバーであるディレクトリです。

43.4.2 競合の例

oidcmprecツールは、様々なの競合シナリオを検出し、解消できます。

oidcmprecツールは、次の競合の例を検出し、解消できます。

  • ソース・ディレクトリ内のみのエントリ(entos)

  • 宛先ディレクトリ内のみのエントリ(entod)

  • ソース・ディレクトリ内のみの属性(atros)

  • 宛先ディレクトリ内のみの属性(atrod)

  • 異なる単一値属性(svatrdif)

  • 異なる複数値属性(mvatrdif)

  • 異なるエントリ識別名(dndif)

    dndifの例は、一方のノードで実行されたmodrdnまたはmoddn操作が、もう一方のノードにレプリケートされないときに、レプリケーション環境で発生する可能性があります。結果として、そのエントリは、orclguidは同じでも、識別名が2つのノードで異なります。ツールでは、orclguid属性を使用して、この競合を検出します。

oidcmprecツールは、次のスキーマ競合の例を検出し、解消できます。

  • オブジェクト・クラス定義が、ソース・ディレクトリにのみ存在(odefos)

  • オブジェクト・クラス定義が、宛先ディレクトリにのみ存在(odefod)

  • ソースおよび宛先ディレクトリで異なるオブジェクト・クラス定義(odefdif)

  • 属性定義が、ソース・ディレクトリにのみ存在(adefos)

  • 属性定義が、宛先ディレクトリにのみ存在(adefod)

  • ソースおよび宛先ディレクトリで異なる属性定義(adefdif)

43.4.3 oidcmprecでサポートされる操作

このツールは、5つの操作をサポートします。各操作は、エントリを比較し、競合を検出し、オプションで競合を解消します。操作は、競合の解消方法に違いがあります。

操作は次のとおりです。

  • 比較操作: 2つのディレクトリを比較し、変更をLDIFレコードとしてファイルに格納します。LDIFファイルは、宛先ディレクトリに適用でき、ソース・ディレクトリと同一にできます。ソース・ディレクトリ内のデータのみが有効とみなされます。

  • 調整操作: 2つのディレクトリを比較し、宛先ディレクトリ側で、ソース・ディレクトリに一致させるために必要な変更を適用します。ディレクトリに対して加えられた変更はすべて、LDIF記録としてファイルに格納されます。ソース・ディレクトリ内のデータのみが有効とみなされます。

  • マージまたは双方向調整操作: 2つのディレクトリを比較し、ソース・ディレクトリまたは宛先ディレクトリで、2つを一致させるために必要な変更を適用します。両ディレクトリのデータは有効とみなされます。たとえば、エントリが宛先ディレクトリにのみ存在することがツールにより検出された場合、ツールはこのエントリをソースに追加します。この操作ではまた、ディレクトリに加えられた変更をすべて、LDIFレコードとしてファイルに記録します。

  • マージ・リハーサル操作: マージ操作と同様に2つのディレクトリを比較しますが、ディレクトリでの変更適用は行いません。かわりに、変更をLDIF記録としてファイルに格納します。ソース・ディレクトリと宛先ディレクトリに適用される変更は、2つの異なるファイルに格納されます。

  • ユーザー定義の比較調整操作: 競合の例ごとに選択した競合解消規則を使用します。各競合の例に使用できる競合解消規則のリストは、『Oracle Identity Managementリファレンス』を参照してください。

43.4.4 oidcmprecからの出力

oidcmprecツールは通常、複数の出力ファイルを生成します。oidcmprecのオプションを使用して、ファイルの生成を抑止できます。

ファイルとこれに対応するオプションは次のとおりです。

  • filename.rpt: 比較されたすべてのエントリの識別名と比較結果が含まれます。logrpt=falseを使用してこのファイルの生成を抑止します。

  • filename.s2d.ldif: 宛先ディレクトリに適用された、または宛先ディレクトリに後から適用するために格納されたすべての変更が含まれます。名前は、宛先ディレクトリからソース・ディレクトリへの省略形です。logs2d=falseを使用してこのファイルの生成を抑止します。

  • filename.d2s.ldif: ソース・ディレクトリに適用された、またはソース・ディレクトリに後から適用するために格納されたすべての変更が含まれます。名前は、宛先ディレクトリからソース・ディレクトリへの省略形です。logd2s=falseを使用してこのファイルの生成を抑止します。

  • filename.eos.rpt: ソース・ディレクトリにのみ存在するエントリの識別名のリストが含まれます。スキーマが操作の対象に含まれている場合は、ソース・ディレクトリでのみ定義されている属性およびオブジェクト・クラスの名前のリストも含まれます。この名前は、ソース・ディレクトリでのみ使用可能なエントリの省略形です。logeos=falseを使用してこのファイルの生成を抑止します。

  • filename.eod.rpt: 宛先ディレクトリにのみ存在するエントリの識別名のリストが含まれます。スキーマが操作の対象に含まれている場合は、宛先ディレクトリでのみ定義されている属性およびオブジェクト・クラスの名前のリストも含まれます。名前は、宛先ディレクトリでのみ使用可能なエントリの省略形です。logeod=falseを使用してこのファイルの生成を抑止します。

  • filename.dif.rpt: 異なるすべてのエントリの識別名と、異なる属性の名前が含まれます。スキーマが操作の対象に含まれている場合は、定義が異なる属性およびオブジェクト・クラスの名前のリストも含まれます。このファイルはdifファイルと呼ばれます。logdif=falseを使用してこのファイルの生成を抑止します。

  • filename.err: すべてのエラー・メッセージが含まれます。このファイルは、errファイルと呼ばれます。logerr=falseを使用してこのファイルの生成を抑止します。

ツールによってロードされたエントリの合計数およびoidcmprecの各キューのエントリの数をツールでダンプできます。エントリ数はファイルoidcmprec.logに記録されます。qlogfreq=frequency引数を使用してoidcmprecがこの情報を記録する頻度を指定します。使用できるfrequency値は1から5000です。値が小さいほど間隔が短くなります。頻度の高いエントリ数の場合5から10の値を使用します。

43.4.5 oidcmprecの動作

レプリケーション識別名とレプリケーション識別名パスワードを資格証明として使用して、ツールは3つのタスクを実行します。まず、スキーマ情報をメモリーにロードします。次に、比較対象のエントリを収集し、それらを属性ごとに比較します。ツールは、スキーマ情報を使用して、属性ごとに使用する比較規則を判断します。次に、比較結果に基づき、必要な処置を行います。

これらの操作は、異なるスレッドによって実行されます。

  • 識別名スレッドは、比較対象となるエントリを収集します。エントリの収集時に一度にツリー全体をフェッチすることはありません。最初にベース・エントリをフェッチして処理します。次に、ベース・エントリ直下の子をフェッチして処理し、さらにその下の子をフェッチして処理する、というように処理していきます。収集されたエントリはワーカー・スレッドに渡されます。識別名スレッドの数は、dnthreads引数を使用して制御できます。

  • ワーカー・スレッドは、エントリを属性ごとに比較し、競合解消規則を適用する作業を担当します。ワーカー・スレッドは、その後、エントリをログ・ライター・スレッドに渡します。ワーカー・スレッドの数は、threads引数を使用して制御できます。ワーカー・スレッドと識別名スレッドの合計数は、6×(CPU数)- 2に相当する最大値以下です。これを超える値を指定すると、ツールは、ワーカー・スレッドと識別名スレッドの数を、最大値を超えないように調整します。

  • ログ・ライター・スレッドは、「oidcmprecからの出力」に示した7つの出力ファイルすべてへのコンテンツの書込みを担当します。ログ・ライター・スレッドは1つのみです。この数は増やせません。

これらのスレッドは、メイン・スレッドによって生成、モニター、終了されます。メイン・スレッドは、コマンド行の引数とパラメータ・ファイルを処理し、別のスレッドを生成します。メイン・スレッドは、全操作の完了を検出すると、ただちにすべてのスレッドを終了し、接続をすべてクリーンアップします。

各スレッドは、ソース・ディレクトリと宛先ディレクトリへのLDAP接続を確立します。これらの接続は、すべての操作がスレッドによって完了されるまで、オープンのままです。なんらかの理由で接続がクローズされると、continueOnError引数がTRUEの場合、ツールは接続を再確立します。ツールが接続を再確立できると、操作を続行します。

ノート:

continueOnError引数を使用して、ツールがエラーの処理を続行するかどうかを指定します。この引数は、TRUEにもFALSEにも設定できます。デフォルトでは、TRUEに設定されています。

43.4.6 ソース・ディレクトリと宛先ディレクトリの設定

sourceオプションとdestinationオプションを使用して、ソース・ディレクトリと宛先ディレクトリを設定します。

次に示すように、ソース・オプションおよび宛先オプションを設定できます。

oidcmprec source=staqj13:3060 destination=staqj:3070 base="''" \
          scope=subtree file=temp operation=compare

コマンド行でパスワードが指定されていないと、ツールがパスワードを要求します。

Enter replication DN password of the source directory     : 
Enter replication DN password of the destination directory :

43.4.7 oidcmprec操作のDIT

basedns2Excludeおよびscopeオプションを使用して、比較と調整の対象となる領域を選択します。

次の例では、c=us,dc=mycom,dc=comc=uk,dc=mycom,dc=comを除く、ディレクトリ全体を比較します。

oidcmprec base="''" \
          dns2exclude="'c=us,dc=mycom,dc=com' 'c=uk,dc=mycom,dc=com'" \
          operation=compare scope=subtree \
          source=myhost1.mycom.com:3060 \
          destination=myhost2.mycom.com:3060 \
          threads=5 dnthreads=2 file=cmpres

次の例では、c=us,dc=mycom,dc=comツリーとc=uk,dc=myorg,dc=orgツリーを除く、ネーミング・コンテキストdc=comおよびdc=orgを比較します。

oidcmprec base="'dc=com' 'dc=org'" \
          dns2exclude="'c=us,dc=mycom,dc=com' 'c=uk,dc=myorg,dc=org'" \
          operation=compare scope=subtree \
          source=myhost1.mycom.com:3060 \
          destination=myhost2.mycom.com:3060 \
          threads=5 dnthreads=2 file=cmpres

43.4.8 操作の属性の選択

デフォルトでは、oidcmprecは、操作属性のcreatorsnamecreatetimestampmodifiersnamemodifytimestamporclentrydnおよびorclnormdnを除くすべての属性を比較します。

選択した操作に含める、または操作から除外する属性は、それぞれexcludedAttributesまたはincludedAttributesを使用して制御できます。excludedAttributes引数とincludedAttributes引数により、パターン一致を制限できます。attributename*を使用すると、attributenameで始まるすべての属性を一致させることができます。attributename;*を使用すれば、attributenameのすべてのサブタイプも一致させることができます。

次の例では、標準の除外属性に加えて、authpassword属性(サブタイプのあるものとないもの)、さらにuserpassword属性とcategory属性を除外します。

oidcmprec operation=compare scope=subtree base="'dc=com' 'dc=org'" \
          source=myhost1.mycom.com:3060\
          destination=myhost2.mycom.com:3060 \
          exclattr="authpassword authpassword;* userpassword category" \
          threads=5 dnthreads=2 file=compare

次の例では、比較操作に属性uidcnsngivennameおよびmailのみを含めます。

oidcmprec operation=compare scope=subtree base="'dc=com'" \
          source=myhost1.mycom.com:3060 \
          destination=myhost2.mycom.com:3060 \
          inclattr="uid cn sn givenname mail" \
          file=compare

次の例では、orclguidcreatorsnameおよびmodifiersnameを除き、比較操作の対象となるすべての属性を含めます。この例ではまた、continueOnError=falseを設定することで、エラーが発生したら停止するように、ツールに指示しています。

oidcmprec operation=compare scope=subtree base="'dc=com'" \
          source=myhost1.mycom.com:3060 \
          destination=myhost2.mycom.com:3060 \
          inclattr="*" exclattr="orclguid creatorsname modifiersname" \
          file=compare contonerr=false

43.4.9 変更ログ生成の制御

oidcmprecによって加えられた変更に対する変更ログの生成は、ルートDSEのorcldiprepository属性によって決まります。ただし、変更ログ生成の動作は、generateChangeLog引数を使用することで制御できます。

generateChangeLog引数には、次の値を指定できます。

  • default: ディレクトリ・サーバーの設定により、変更ログが生成されるかどうかが決まります。ルート・エントリのorcldiprepository属性がtrueに設定されている場合は、変更ログが生成されます。orcldiprepositoryfalseに設定されている場合は、生成されません。ソース・ディレクトリと宛先ディレクトリの両方に同じルールが適用されます。defaultが、gechglogのデフォルト値です。

  • true: ソース・ディレクトリと宛先ディレクトリに対する設定に関係なく、変更ログは常に生成されます。

  • false: ソース・ディレクトリと宛先ディレクトリに対する設定に関係なく、変更ログは常に生成されません。

次の例では、generateChangeLog falseで、変更ログの生成を停止します。

oidcmprec operation=merge scope=subtree base="'dc=com'" \
          source=myhost1.mycom.com:3060 \
          destination=myhost2.mycom.com:3060 \
          inclattr="*" exclattr="orclguid creatorsname modifiersname" \
          file=merge genchglog=false

43.4.10 テキストまたはXMLパラメータ・ファイルでのoidcmprecコマンド行引数の指定

パラメータ・ファイルでoidcmprecコマンド行引数を指定することもできます。

parameterFileオプションを使用してテキスト・パラメータ・ファイルを指定するか、xmlparameterFileオプションを使用してXMLパラメータ・ファイルを指定します。コマンド行とパラメータ・ファイルの両方で引数を指定した場合、コマンド行で指定した引数が、パラメータ・ファイルで指定した引数に優先します。たとえば:

oidcmprec paramfile=comp_param threads=4

この例では、次のサンプル・テキスト・パラメータ・ファイルを使用します。

#############################################
#Parameter file for compare and reconcile tool
#Creator   : Admin
#Date      : 21-Mar-2012
#File Name : comp_param
#############################################
operation=compare
source=staqj13:3060/ods
destination=staqj13:3070/ods
base='("cn=oraclecontext" "c=uk,dc=example,dc=com" "c=us,dc=example,dc=com")'
verbose=false
force=true
threads=6
dnthreads=2
exclattr=orclguid userpassword authpassword;*
filename=cmp2012Feb01

この例では、ツールにより4つのワーカー・スレッドが生成され、コマンド行引数が優先されます。

次のXMLパラメータ・ファイルは、サンプル・テキスト・パラメータ・ファイルと同等です。

  <?xml version="1.0" standalone="yes" ?> 
- <input>
  <operation>compare</operation> 
- <source>
   <host>staqj13</host> 
   <port>3060</port> 
   <binddn>cn=orcladmin</binddn>
   <password>source-password</password>
  </source>
- <destination>
   <host>staqj13</host> 
   <port>3070</port> 
   <binddn>cn=orcladmin</binddn>
   <password>destination-password</password>
  </destination>
  <base>
   <dn>cn=oraclecontext</dn>
   <dn>c=uk,dc=example,dc=com</dn>
   <dn>c=us,dc=example,dc=com</dn>
  </base>
  <threads>6</threads> 
  <dnthreads>2</dnthreads> 
  <exclattr>
   <attribute>orclguid</attribute>
   <attribute>userpassword</attribute>
   <attribute>authpassword</attribute>
  <exclattr/> 
  <force>true</force> 
  <verbose>false</verbose> 
  <filename>cmp2012Feb01</filename> 
  </input>

43.4.11 oidcmprecにディレクトリ・スキーマを含める

ベース引数にcn=subschemasubentryを含めると、oidcmprec操作の対象にスキーマを含めることができます。

たとえば:

oidcmprec operation=merge scope=subtree \
          base="'dc=com' 'cn=subschemasubentry'" \
          source=myhost1.mycom.com:3060 \
          destination=myhost2.mycom.com:3060 \
          inclattr="*" exclattr="orclguid creatorsname modifiersname" \
          file=merge genchglog=false

スキーマに加えてその他の識別名を含めた場合、oidcmprecは、最初にスキーマで操作を実行します。

43.4.12 事前に定義された競合解消規則の無視

競合名と、コマンド行またはパラメータ・ファイルで使用する規則を指定することにより、事前に定義された競合解消規則を無視できます。

各操作の競合の例と競合解消規則の詳細は、『Oracle Identity Managementリファレンス』oidcmprecコマンドのリファレンスを参照してください。

次の例では、競合dndifおよびmvatrdifに使用される競合解消規則を、compare操作に対してignoreに変更します。

oidcmprec operation=compare source=host1:3060 destination=host2:3070 \
          base="''" scope=subtree file=temp operation=compare \
          dndif=ignore mvatrdif=ignore

43.4.13 ユーザー定義の比較調整操作

次のコマンド行では、userdefinedcr操作を使用しています。

事前に定義されたcomparereconcilemergeおよびmerge dry run操作に加えて、oidcmprecにはユーザー定義の比較調整操作userdefinedcrがあり、競合解消規則引数を指定できます。-userdefinedcrで指定しない競合解消規則はすべて、デフォルトがignoreに設定されます。次のコマンド行では、userdefinedcr操作を使用しています。

oidcmprec operation=userdefinedcr scope=subtree \
          base="'dc=com' 'dc=org'" \
          source=myhost1.mycom.com:3060 \
          destination=myhost2.mycom.com:3060 \
          entos=add entod=ignore atros=add atrod=ignore \
          svatrdif=usesrc mvatrdif=usesrc dndif=ignore \
          threads=5 dnthreads=2 file=myreconcile

競合の例と競合解消規則の詳細は、『Oracle Identity Managementリファレンス』oidcmprecコマンドのリファレンスを参照してください。

43.4.14 oidcmprecツールの既知の制限事項

oidcmprecツールには、次の制限事項があります。

  • LDIFレコードに対する変更をツリーの削除のためにfilename.s2d.ldifまたはfilename.d2s.ldifファイルに記録する際、ツールはまず親レコードを記録し、次にその子のレコードを記録します。ldapmodifyコマンド行ツールを使用してこの変更を適用しようとすると、ディレクトリ・サーバーではリーフのないエントリの削除が許可されていないため、変更の適用は失敗します。ldapmodifyの失敗を防ぐには、ldapmodifyを実行する前に、ファイルを編集してレコードの順序を並べ替えます。

  • エントリに対して削除操作を実行する際、ツールはそのエントリとその子を削除します。ツールにより、エントリが削除されたことは記録されますが、その子も削除されたことは記録されません。

  • ツールには、複合相対識別名に関する制限があります。相対識別名には、+で区切られた2つ以上のattribute=attrvalueペアがあります。たとえば:

    uid=jpaul + cn=john paul + mail=john.paul@example.com,dc=oracle,dc=com
    

    比較対象のディレクトリの1つに複合相対識別名が含まれている場合、ツールが推奨するfilename.s2d.ldifまたはfilename.d2s.ldifファイルのmodrdn/moddnの変更でdeleteoldrdn値が正しくないことがあります。

  • oidcmprecにフィルタを指定し、出力をldapmodifyの入力として使用する場合、まず出力を編集してエントリが正しい順序かどうかを確認します。特に、ツリー全体を移行する場合、ツリーのルートが最初のエントリであることを確認します。