ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Directory Integration Platform管理者ガイド
11g リリース1(11.1.1)
B65032-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

11 サード・パーティのメタディレクトリ・ソリューションとの同期

Oracleバックエンド・ディレクトリは、サポート対象のサード・パーティのメタディレクトリ・ソリューションとの同期を可能にするために変更ログを使用します。Oracle Directory Integration Platformには、サード・パーティのメタディレクトリ・ソリューション用のマッピング・サービスやスケジューリング・サービスは用意されていません。

この章では、変更ログ情報の生成方法およびサポートするソリューションでの変更ログ情報の使用方法について説明します。Oracleバックエンド・ディレクトリと同期化するためにサード・パーティのメタディレクトリ・ソリューションを有効化する方法を示します。

この章は、次の項目を含みます。

11.1 変更ログの概要

Oracleバックエンド・ディレクトリは、各変更をエントリとして変更ログ・コンテナに記録します。サード・パーティのメタディレクトリ・ソリューションは、変更ログ・コンテナから変更を取得し、サード・パーティ・ディレクトリに適用します。これらの変更を取得するために、サード・パーティのメタディレクトリ・ソリューションはOracleバックエンド・ディレクトリの変更ログをサブスクライブする必要があります。

変更ログの各エントリには変更番号があります。サード・パーティのメタディレクトリ・ソリューションは、最後に適用した変更番号を記録しておき、その番号よりも大きい変更番号の変更のみをOracleバックエンド・ディレクトリから取得します。たとえば、サード・パーティのメタディレクトリ・ソリューションが取得した最後の変更の番号が250だった場合、それ以降の変更の番号は251以上になります。


注意:

サード・パーティのメタディレクトリ・ソリューションがOracleバックエンド・ディレクトリの変更ログでサブスクライブされず、ソリューションが最初に取得した変更番号が最後に適用した変更番号よりも2以上大きい場合、Oracleバックエンド・ディレクトリ変更ログ内の変更の一部が、すでにパージされています。この場合、サード・パーティのメタディレクトリ・ソリューションは、Oracleバックエンド・ディレクトリ全体を読み取り、そのコピーとOracleバックエンド・ディレクトリの情報とを同期化する必要があります。



関連項目:

ディレクトリ統合プロファイルの概念は、「Oracleディレクトリの同期に必要なコンポーネント」を参照してください。


11.2 Oracleバックエンド・ディレクトリと同期化するためのサード・パーティのメタディレクトリ・ソリューションの有効化

サード・パーティのメタディレクトリ・ソリューションがOracleバックエンド・ディレクトリから変更を取得できるようにするには、この項で説明するタスクを実行します。

11.2.1 タスク1: 初期ブートストラップの実行

ローカル・ディレクトリとOracleバックエンド・ディレクトリ間のデータを同期化するためにディレクトリをブートストラップするには、次の手順を実行します。

  1. Oracleバックエンド・ディレクトリに記録されている最後の変更番号を検索します。この番号は、DSEルート属性のlastChangeNumberにあります。

    Oracleバックエンド・ディレクトリに記録されている最後の変更番号を検索するには、ldapsearchコマンドを使用します。次のコマンドを入力します。

    ldapsearch -h host_name -p port_number -D binddn -q -s base \
    -b "" 'objectclass=*' lastchangenumber
    

    変更ログがすでにパージされているために変更エントリがない場合、取得される変更番号は0(ゼロ)になります。

  2. ldifwriteコマンドを使用して、データをOracleバックエンド・ディレクトリからLDIFファイルにエクスポートします。

  3. このLDIFファイルをクライアント・ディレクトリに適した形式に変換し、クライアント・ディレクトリにロードします。


    注意:

    Oracleバックエンド・ディレクトリの新規インストールでは、初期ブートストラップは不要です。この場合、新規にインストールしたOracleバックエンド・ディレクトリの現行の変更番号は0(ゼロ)です。



    関連項目:

    Oracleバックエンド・ディレクトリがOracle Internet Directoryである場合は、『Oracle Identity Managementユーザー・リファレンス』のOracle Internet Directoryデータ管理ツールの章のldifwriteに関する説明を参照してください。


11.2.2 タスク2: Oracleバックエンド・ディレクトリでのサード・パーティのメタディレクトリ・ソリューション用変更サブスクリプション・オブジェクトの作成

サード・パーティのメタディレクトリ・ソリューションをOracleバックエンド・ディレクトリと同期化できるようにするには、Oracleバックエンド・ディレクトリにそれに対する変更サブスクリプション・オブジェクトを作成する必要があります。この変更サブスクリプション・オブジェクトによって、Oracleバックエンド・ディレクトリに格納されている変更ログ・オブジェクトへのアクセス権限がサード・パーティのメタディレクトリ・ソリューションに付与されます。

11.2.2.1 変更サブスクリプション・オブジェクトの概要

Oracle Internet DirectoryがOracleバックエンド・ディレクトリである場合、変更サブスクリプション・オブジェクトは、次のコンテナの下にあるエントリです。

cn=Subscriber Profile,cn=ChangeLog Subscriber,cn=Oracle Internet Directory

Oracle Unified DirectoryまたはOracle Directory Server Enterprise EditionがOracleバックエンド・ディレクトリである場合、変更サブスクリプション・オブジェクトは、次のコンテナの下にあるエントリです。

cn=Subscriber Profile,cn=ChangeLog Subscriber,cn=Directory Integration Platform, <suffix>

この変更サブスクリプション・オブジェクトは、サード・パーティのメタディレクトリ・ソリューションがOracleバックエンド・ディレクトリとバインドして変更を取得するための一意の資格証明を提供します。変更サブスクリプション・オブジェクトを補助オブジェクト・クラスorclChangeSubscriberと関連付けます。このオブジェクト・クラスには複数の属性がありますが、次の属性が必須です。

  • userPassword

    Oracleバックエンド・ディレクトリの変更ログ・オブジェクトにアクセスするときに、ディレクトリが使用するパスワード。

  • orclLastAppliedChangeNumber

    前回の同期で適用された変更番号。この属性によって、ディレクトリは、Oracleバックエンド・ディレクトリでの変更から未適用の変更のみを取得できます。

11.2.2.2 変更サブスクリプション・オブジェクトの作成

変更サブスクリプション・オブジェクトの作成には、ldapaddコマンドを使用します。次の例では、入力ファイルadd.ldifを使用して、次のコンテナの下でmy_change_subscription_objectという名前の変更サブスクリプション・オブジェクトの作成および有効化を行っています。

  • Oracle Internet DirectoryがOracleバックエンド・ディレクトリである場合:

    cn=Subscriber Profile,cn=ChangeLog Subscriber,cn=Oracle Internet Directory
    
  • Oracle Unified DirectoryまたはOracle Directory Server Enterprise EditionがOracleバックエンド・ディレクトリである場合:

    cn=Subscriber Profile,cn=ChangeLog Subscriber,cn=Directory Integration Platform, <suffix>
    

orclLastAppliedChangeNumber属性は、初期ブートストラップ前のディレクトリにある現行の変更番号で、この例では250です。

  • add.ldifファイルの編集(この例では、Oracle Internet Directoryがバックエンド・ディレクトリ):

    dn: cn=my_change_subscription_object,cn=Subscriber Profile,
      cn=ChangeLog Subscriber,cn=Oracle Internet Directory
    userpassword: my_password
    orclLastAppliedChangeNumber: 250
    orclSubscriberDisable: 0
    objectclass: orclChangeSubscriber
    objectclass: top
  • エントリの追加:

    ldapadd -h my_host -D binddn -q -p PORT -f add.ldif
    

    関連項目:

    変更サブスクリプション・オブジェクトを一時的に無効にする方法、または削除する方法については、「変更サブスクリプション・オブジェクトの無効化と削除」を参照してください。


11.3 同期プロセス

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

11.3.1 接続ディレクトリで初めてOracleバックエンド・ディレクトリから変更を取得する方法

次の例では、my_change_subscription_objectという名前の変更サブスクリプション・オブジェクトを持つ接続ディレクトリがOracleバックエンド・ディレクトリから変更を取得します。

ldapsearch -h my_host -D binddn -q -p PORT -b "cn=changeLog" -s one  
(&(objectclass=changeLogEntry)  
(changeNumber >= orclLastAppliedChangeNumber ) 
( ! (modifiersname =cn=my_change_subscription_object,cn=Subscriber Profile,
     cn=ChangeLog Subscriber,cn=Oracle Internet Directory ) ) )

ディレクトリが初めて変更を取得する場合、orclLastAppliedChangeNumberの値は「タスク2: Oracleバックエンド・ディレクトリでのサード・パーティのメタディレクトリ・ソリューション用変更サブスクリプション・オブジェクトの作成」で設定した番号です。

フィルタ内の(!(modifiersname=client_bind_dn))引数によって、Oracleバックエンド・ディレクトリからは、接続ディレクトリ自体で行われた変更は返されません。

11.3.2 接続ディレクトリでOracleバックエンド・ディレクトリ内のorclLastAppliedChangeNumber属性を更新する方法

Oracleバックエンド・ディレクトリから変更を取得した後、接続ディレクトリはOracleバックエンド・ディレクトリ内の対応する変更サブスクリプション・オブジェクトのorclLastAppliedChangeNumber属性を更新します。これによって、Oracleバックエンド・ディレクトリは接続ディレクトリで適用済の変更をパージできます。また、これによって、接続ディレクトリは適用済の変更を無視して、最新の変更のみを取得できます。

次の例では、接続ディレクトリにmy_change_subscription_objectという名前の変更サブスクリプション・オブジェクトがあり、前回適用した変更番号が121の入力ファイルmod.ldifを使用します。この接続ディレクトリでは、Oracleバックエンド・ディレクトリ内の対応する変更サブスクリプション・オブジェクトのorclLastAppliedChangeNumberを次のように更新します。

  1. mod.ldifファイルの編集:

    dn: cn=my_change_subscription_object,cn=Subscriber Profile,
    cn=ChangeLog Subscriber,cn=Oracle Internet Directory changetype:modify replace: orclLastAppliedChangeNumber orclLastAppliedChangeNumber: 121
  2. ldapmodifyコマンドを使用した編集済mod.ldifファイルのロード:

    ldapmodify -h host -D binddn -q -p port -f mod.ldif
    

    関連項目:

    Oracle Internet DirectoryがOracleバックエンド・ディレクトリである場合、変更番号に応じた変更のパージの詳細は、『Oracle Fusion Middleware Oracle Internet Directory管理者ガイド』のガベージ・コレクションに関する章を参照してください。


11.4 変更サブスクリプション・オブジェクトの無効化と削除

既存の変更サブスクリプション・オブジェクトは、一時的に無効にすることも、削除することもできます。この項の内容は次のとおりです。

11.4.1 変更サブスクリプション・オブジェクトの無効化

サード・パーティのメタディレクトリ・ソリューションにある既存の変更サブスクリプション・オブジェクトを一時的に無効にする場合は、orclSubscriberDisable属性を1に設定します。次の例では、入力ファイルmod.ldifを使用して、変更サブスクリプション・オブジェクトを無効にします。

  • mod.ldifファイルの編集(この例では、Oracle Internet Directoryがバックエンド・ディレクトリ):

    dn: cn=my_change_subscription_object,cn=Subscriber Profile,
        cn=ChangeLog Subscriber,cn=Oracle Internet Directory
    changetype: modify
    replace: orclSubscriberDisable
    orclSubscriberDisable: 1
    
  • エントリの変更:

    ldapmodify -h my_ldap_host -D binddn -q -p PORT -v -f mod.ldif
    

11.4.2 変更サブスクリプション・オブジェクトの削除

変更サブスクリプション・オブジェクトの削除には、ldapdeleteコマンドを使用します。次のコマンドを入力します(この例では、Oracle Internet Directoryがバックエンド・ディレクトリです)。

ldapdelete -h ldap_host -D binddn -q -p ldap_port 
           "cn=my_change_subscription_object,cn=Subscriber Profile,
            cn=ChangeLog Subscriber,cn=Oracle Internet Directory"