ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Directory Server Enterprise Edition管理者ガイド
11g リリース1 (11.1.1.7.0)
B72439-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

12 Directory Serverの索引付け

書籍の索引と同様に、Directory Serverの索引を利用することで、検索文字列とディレクトリの内容への参照を関連付け、検索が速くなります。

索引のタイプと索引のチューニングについては、Oracle Directory Server Enterprise Editionのリファレンスの第9章のDirectory Serverの索引付けに関する説明を参照してください。

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

12.1 索引の管理

この項では、特定の属性に対する索引の管理方法について説明します。この項には、索引の作成、変更および削除に関する情報が含まれます。仮想リスト表示(VLV)操作に固有の手順は、「参照索引の管理」を参照してください。

dsconf infoコマンドを実行して、索引の作成が必要な属性をチェックすることもできます。

12.1.1 索引をリストするには

WebインタフェースのDirectory Service Control Center (DSCC)を使用して、このタスクを実行できます。

既存の索引およびそのプロパティをリストするには、次のコマンドを使用します。

$ dsconf list-indexes -h host -p port -v suffix-DN

12.1.2 索引を作成するには


注意:

新しいシステム索引は作成できません。Directory Serverで内部的に定義される既存のシステム索引のみが維持されます。


WebインタフェースのDirectory Service Control Center (DSCC)を使用して、このタスクを実行できます。

  1. 新しい索引構成を作成します。

    dsconf create-indexコマンドライン・ユーティリティを使用して、索引を作成する属性を指定することにより、新しい索引情報を構成します。

    たとえば、preferredLanguage 属性の索引エントリを作成するには、次のコマンドを使用します。

    $ dsconf create-index -h host -p port dc=example,dc=com preferredLanguage
    

    注意:

    コマンドdsconf create-indexでは索引構成が設定されますが、検索に必要な索引ファイルが実際に作成されるわけではありません。索引ファイルの生成はパフォーマンスに影響を及ぼす場合があります。索引作成手順をより厳密に制御するには、新しい索引構成が作成された後に、手動で索引ファイルを生成します。

    索引の作成時には、常に属性の基本名を使用します。属性の別名は使用しないでください。属性の基本名とは、スキーマの属性にリストされる最初の名前です。たとえば、userid属性ではuidとなります。


  2. dsconf set-index-propコマンドを使用して、索引のプロパティを設定します。

    dsconf create-indexコマンドにより、デフォルト・プロパティで索引が作成されます。これらのプロパティを変更するには、dsconf set-index-propコマンドを使用します。索引のプロパティ変更の詳細は、「索引を変更するには:」を参照してください。


    注意:

    索引の構成を変更する場合、その変更を反映させて索引を再度使用するには、索引の再作成が必要です。


  3. 索引ファイルを生成します。

    「索引を生成するには:」を参照してください。

  4. 索引を作成するすべてのサーバーで、前述の手順を繰り返します。

12.1.3 索引を変更するには

WebインタフェースのDirectory Service Control Center (DSCC)を使用して、このタスクを実行できます。

  1. 索引のプロパティを変更します。

    $ dsconf set-index-prop -h host -p port suffix-DN attr-name property:value
    

    たとえば、preferredLanguage索引の近似索引approx-enabledを有効にするには、次のコマンドを使用します。

    $ dsconf set-index-prop -h host -p port dc=example,dc=com \
    preferredLanguage approx-enabled:on
    

    各索引の次のプロパティを変更できます。

    • eq-enabled等価性

    • pres-enabled実在性

    • sub-enabledサブストリング

    変更する可能性があるプロパティの1つに、オプションのnsMatchingRule属性があります。この属性には、サーバーが把握するあらゆるマッチング・ルールのOIDが含まれます。これは、多言語化された索引のための言語照合順序と、CaseExactMatchなどの他のマッチング・ルールのOIDを有効にします。サポートされるロケールとそれらに関連付けられた照合順序のOIDのリストについては、Oracle Directory Server Enterprise Editionのリファレンスを参照してください。

    索引構成属性の詳細は、Oracle Directory Server Enterprise Editionのリファレンスを参照してください。


    注意:

    索引の構成を変更する場合、その変更を反映させて索引を再度使用するには、索引の再作成が必要です。

    dsconf infoを実行して、索引の再作成が必要な属性を表示します。たとえば、次の出力では、索引の再作成が必要なcnおよびuid属性を示しています。

    $ dsconf info
    Instance path    :  /local/dsInst
    Global State     :  read-write
    Host Name        :  hostname
    Port             :  port
    Secure port      :  secure-port
    Total entries    :  160
    Server version   :  11.1.1.6
    
    Suffixes         :  dc=example,dc=com
    
    No active tasks
    
    dc=example,dc=com
    =================
    Attribute to reindex  :  cn
                             uid
    

  2. 新しい索引を再生成します。

    「索引を生成するには:」を参照してください。

  3. 変更した属性の索引を含むすべてのサーバーに対し、前述の手順を繰り返します。

12.1.4 索引を生成するには

次の手順では、索引ファイルを生成して、新規または変更後の索引を検索できるようにします。属性の索引構成を変更する場合、その属性をフィルタとして含むすべての検索の索引が作成されるとはかぎりません。その属性を含む検索が確実に実行されるようにするには、次の手順のコマンドを使用して、属性の索引構成を作成または変更するたびに、既存の索引を再生成します。

WebインタフェースのDirectory Service Control Center (DSCC)を使用して、このタスクを実行できます。

次のいずれかの方法で索引ファイルを生成します。

  • 新しい索引ファイルをオンラインで生成します。

    $ dsconf reindex -h host -p port [-t attr] suffix-DN
    

    -tは、すべての属性ではなく、指定された属性のみ索引を再作成することを指定します。

    たとえば、preferredLanguage索引を再生成するには、次を入力します。

    $ dsconf reindex -h host -p port -t preferredLanguage dc=example,dc=com
    

    dsconf reindexコマンドを実行中でも、接尾辞の内容はサーバー経由で使用できます。ただし、コマンドが完了するまで検索の索引は作成されません。索引の再作成はリソースを大量に消費するタスクであり、サーバーでの他の操作のパフォーマンスに影響する可能性があります。

  • 新しい索引ファイルをオフラインで生成します。

    $ dsadm reindex -t attr instance-path suffix-DN
    

    たとえば、preferredLanguage索引を再生成するには、次を入力します。

    $ dsadm reindex -t preferredLanguage /local/dsInst dc=example,dc=com
    
  • 接尾辞の再初期化により、オフラインですべての索引を迅速に再生成します。

    接尾辞を初期化した場合、すべての索引ファイルは自動的に再生成されます。ディレクトリのサイズにもよりますが、通常、接尾辞の再初期化は複数の属性の索引再作成よりも高速となります。ただし、初期化中は接尾辞を使用できません。詳細は、「再初期化による接尾辞の索引再作成」を参照してください。

12.1.5 索引の解析

索引の解析では、特にフィルタで指定された値など、ユーザーのリクエストから検索フィルタの使用パターンを収集し、さらに索引ファイル内でそれらの値を調べることが必要となります。内部的にまたはユーザーにより生成された検索リクエストが処理されると、最初のフェーズで返す可能性のあるエントリを検出するために索引が使用されます。検索フィルタにもよりますが、指定された属性のいずれかの索引で一致するエントリが多すぎる場合(ALLID)、その検索では索引作成なしとなります(アクセス・ログ内のnotes=U)。いずれの場合でも、収集されたすべてのエントリ(またはDIT全体)は、実際に検索結果を返すためのフィルタと一致しています。


注意:

ALLIDと一致するすべての索引の値で検索の索引作成が強制されることにならないよう、Directory Serverでは検索の最適化が試みられます。


12.1.5.1 索引フィルタを解析するには

dsconf analyze-index-filtersコマンドが有効な場合、Directory Server検索フィルタがその統計とともに表示されます。

  1. 次のコマンドを使用して、索引フィルタ・アナライザを有効にします。

    $ dsconf enable-index-filter-analyzer [--max-entries INT] SUFFIX_DN
    

    たとえば、o=example.comで索引フィルタ・アナライザを有効にするには、次のコマンドを実行します。

    $ dsconf enable-index-filter-analyzer -p port-number o=example.com
    $ dsconf get-suffix-prop -p port-number o=example.com \
    index-filter-analyzer-enabled index-filter-analyzer-max-entries
    
    
    index-filter-analyzer-enabled      :  on
    index-filter-analyzer-max-entries  :  2000
    
  2. 索引フィルタを解析して、索引の再作成が必要な索引を把握します。

    $ dsconf analyze-index-filters -p port-number SUFFIX_DN
    

    出力には、索引の再作成が必要なすべての属性、索引フィルタの使用に関する統計、ヒット数およびallidsヒット数が表示されます。パフォーマンスを向上させるため、この出力に基づいて、all-ids-thresholdプロパティを変更するか、索引を作成することにより、索引を様々に構成できます。

    $ dsconf analyze-index-filters -p port-number o=example.com
    
    Observations started at Nov 13, 2008 12:01:29 PM
    
    Total number of search requests :   8
    Total number of Allids :            7
    
    filter                Type  #allids/#hits  Threshold  Max matching  Additional info
                                                          entries
    -------------------   ----  -------------  ---------  ------------  ---------------
    (departmentNumber       eq            1/1                        2  "departmentNumber"
     =9415)                                                             is not indexed
    
    (objectClass            eq            1/1      *4000         10000  To investigate
     =inetOrgPerson)
    
    (objectClass=*)       pres            1/1                    10006  "pres" type is 
                                                                        disabled for 
                                                                        "objectClass" 
                                                                        system index
    
    (roomNumber=*)        pres            1/1                    10000  "roomNumber" is
                                                                        not indexed
    
    (roomNumber=1*)         eq            1/1                     4071  "roomNumber" is
                                                                        not indexed
    
    (telephoneNumber=*)   pres            2/2      *4000         10000  To investigate
    
    (telephoneNumber=1*)    eq            0/1       4000         10000
    
    ## * indicates thresholds which have been crossed.
    
    No attributes need to be reindexed
    
    Use "dsconf set-index-prop o=example.com ATTR_NAME..." to set the allids threshold 
    value and to take benefit of indexes.
    

    表示されるフィルタは、次の情報を含む基本的なフィルタ要素です。

    • 処理中に使用されるタイプ

    • フィルタ要素の使用回数および索引の値がAllidsとなった回数


      注意:

      権限が不十分な場合、または検索タイプの構成が変更された場合、Allidsが発生する可能性があります。後者の場合、データが偏向する可能性があります。

      複合フィルタでは、それらの基本要素に分割され、全体としては表示されません。


    出力の例では、次の情報が表示されます。

    • いくつかの索引の値がAllidsである。

    • いくつかの属性は索引が作成されていない(roomNumberdepartmentNumber)。

    • 合計4071のエントリがroomNumber=1*フィルタと一致している。

    • いくつか索引が一部のフィルタの使用に合うように構成されている(telephoneNumber=1*)。

  3. 属性roomNumberの新しい索引を作成します。

    $ dsconf create-index -p port-number o=example.com roomNumber
    
  4. analyze-index-filtersコマンドを再度実行して、ステータスをチェックします。

    $ dsconf analyze-index-filters -p port-number o=example.com
    
    Observations started at Nov 13, 2008 12:01:29 PM
    
    Total number of search requests :   9
    Total number of Allids :            8
    
    filter                Type  #allids/#hits  Threshold  Max matching  Additional info
                                                          entries
    --------------------  ----  -------------  ---------  ------------  -----------------
    (departmentNumber       eq            1/1                        2  "departmentNumber" 
     =9415)                                                             is not indexed
    
    (objectClass            eq            1/1      *4000         10000  To investigate
    =inetOrgPerson)
    
    (objectClass=*)       pres            1/1                    10006  "pres" type is 
                                                                        disabled for 
                                                                        "objectClass" 
                                                                        system index
    
    (roomNumber=*)        pres            1/1      *4000         10000  To investigate
    
    (roomNumber=1*)         eq            1/1      *4000          4071  To investigate
    
    (telephoneNumber=*)   pres            2/2      *4000         10000  To investigate
    
    (telephoneNumber=1*)    eq            0/1       4000         10000
    
    ## * indicates thresholds which have been crossed.
    
    Attributes to reindex :  roomNumber
    
    Use "dsconf reindex --attr ATTR_NAME... o=example.com" to reindex.
    Use "dsconf set-index-prop o=example.com ATTR_NAME..." to set the allids 
    threshold value and to take benefit of indexes.
    

    必要に応じて、出力の最後に示される適切な手順に従います。

  5. 索引フィルタ・アナライザを再起動して、最新の索引の更新を反映させます。

    索引フィルタ・アナライザを再起動するには、disable-index-filter-analyzerサブコマンドを使用してアナライザを無効にし、enable-index-filter-analyzerサブコマンドを使用して再度アナライザを起動します。


    注意:

    監視はパフォーマンスに影響を及ぼします。監視用に構成されたフィルタの最大数に基づいて、大量のメモリー・リソースも必要になります。

    dsconf infoコマンドを実行して、アナライザが有効になった時間を把握します。索引の監視およびanalyze-index-filtersが不要の場合、アナライザを実行したままにすることはお薦めしません。

    Directory Serverでは検索の最適化が試みられるので、複合フィルタの評価時には、すべての要素を処理できません。アクセス・ログ内の表示内容と、複合フィルタおよびその構成要素が1対1で対応することは期待しないでください。


関連項目:

詳細は、dsconfに関する説明を参照してください。

12.1.5.2 属性の索引を解析するには

dsconf analyze-index-filtersコマンドを使用して、最もよく使用されるフィルタとそれらの動作を収集します。一方で、索引ファイル内に出現したデータを把握するには、dsadm analyze-indexesを使用して、索引ファイルのスナップショットを取得します。

  1. 属性の索引を解析する前には、サーバーを停止する必要があります。

    $ dsadm stop INSTANCE_PATH
    
  2. 次のコマンドを使用して、属性の索引を解析します。

    $ dsadm analyze-indexes [-bRi] [-o FILE] INSTANCE_PATH SUFFIX_DN
    

    たとえば、接尾辞o=example.comの属性の索引を解析するには、次のコマンドを実行します。

    $ dsadm analyze-indexes /local/myinst o=example.com
    This operation may take a long time and generate important amounts of data
    Do you want to continue [y/n]? y
    Generating raw index data, please wait...
    Raw index data available in file '/local/myinst/logs/db_stat_example%2ecom'
    
    Index            Type       Total Keys  ALLIDs  95%  90%  80%
    ---------------  ---------  ----------  ------  ---  ---  ---
    aci              PRESENCE            1       0    0    0    0
    ancestorid       EQUALITY            6       6    0    0    0
    cn               EQUALITY       200000       0    0    0    0
    cn               SUBSTRING       14828      15    0    0    0
    entrydn          EQUALITY       100006       0    0    0    0
    givenName        EQUALITY         8605       0    0    0    0
    givenName        SUBSTRING        4762       4    0    0    0
    givenName        PRESENCE            1       1    0    0    0
    mail             EQUALITY       100000       0    0    0    0
    mail             SUBSTRING       14975      26    1    3    2
    mail             PRESENCE            1       1    0    0    0
    nsuniqueid       EQUALITY       100007       0    0    0    0
    numsubordinates  PRESENCE            1       0    0    0    0
    objectclass      EQUALITY            7       4    0    0    0
    parentid         EQUALITY            6       5    0    0    0
    sn               EQUALITY       100000       0    0    0    0
    sn               SUBSTRING       12993       0    0    0    0
    telephoneNumber  EQUALITY        99924       0    0    0    0
    telephoneNumber  SUBSTRING        1106      24    0    0    0
    telephoneNumber  PRESENCE            1       1    0    0    0
    uid              EQUALITY       200000       0    0    0    0
    uid              PRESENCE            1       1    0    0    0
    
    aci PRESENCE
    ============
    ALLIDs keys : 0 / 1
    
    ancestorid EQUALITY
    ===================
    ALLIDs keys : 6 / 6
         [1] [2] [3] [4] [5] [6]
    
    cn EQUALITY
    ===========
    ALLIDs keys : 0 / 200000
    
    cn SUBSTRING
    ============
    ALLIDs keys : 15 / 14828
         [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [^us]
         [er1] [r10] [ser] [use]
    
    entrydn EQUALITY
    ================
    ALLIDs keys : 0 / 100006
    
    givenName EQUALITY
    ==================
    ALLIDs keys : 0 / 8605
    
    givenName SUBSTRING
    ===================
    ALLIDs keys : 4 / 4762
         [^ma] [ie$] [na$] [ne$]
    
    givenName PRESENCE
    ==================
    ALLIDs keys : 1 / 1
        [pres]
    
    mail EQUALITY
    =============
    ALLIDs keys : 0 / 100000
    
    mail SUBSTRING
    ==============
    ALLIDs keys : 26 / 14975
         [.co] [0@e] [1@e] [2@e] [3@e] [4@e] [5@e] [6@e] [7@e] [8@e] [9@e]
         [@ex] [^ma] [amp] [com] [ell] [exa]  [e.c] [ie_] [le.] [mar] [mpl] 
         [na_] [ne_] [om$] [ple] [xam]
    
    mail PRESENCE
    =============
    ALLIDs keys : 1 / 1
        [pres]
    
    nsuniqueid EQUALITY
    ===================
    ALLIDs keys : 0 / 100007
    
    numsubordinates PRESENCE
    ========================
    ALLIDs keys : 0 / 1
    
    objectclass EQUALITY
    ====================
    ALLIDs keys : 4 / 7
         [inetorgperson] [organizationalperson] [person] [top]
    
    parentid EQUALITY
    =================
    ALLIDs keys : 5 / 6
         [2] [3] [4] [5] [6]
    
    sn EQUALITY
    ===========
    ALLIDs keys : 0 / 100000
    
    sn SUBSTRING
    ============
    ALLIDs keys : 0 / 12993
    
    telephoneNumber EQUALITY
    ========================
    ALLIDs keys : 0 / 99924
    
    telephoneNumber SUBSTRING
    =========================
    ALLIDs keys : 24 / 1106
         [120] [121] [130] [140] [141] [151] [171] [180] [181] [206] [213]
         [303] [408] [415] [510] [714] [804] [818] [^12] [^13] [^14] [^15]
         [^17] [^18]
    
    telephoneNumber PRESENCE
    ========================
    ALLIDs keys : 1 / 1
        [pres]
    
    uid EQUALITY
    ============
    ALLIDs keys : 0 / 200000
    
    uid PRESENCE
    ============
    ALLIDs keys : 1 / 1
        [pres]
    

    Oracle Directory Server Enterprise Editionのリファレンスの第9章のDirectory Serverの索引作成についての章に従って、dsadm analyze-indexesによって、Directory Serverで使用される値キーのステータスを表示します。キーのほとんどがAllid、またはAllidの95%である場合、このキーに一致するエントリ数は少なくともall-ids-thresholdとなります。索引はほぼ間違いなく、all-ids-thresholdを高い値で構成する必要があります。


    注意:

    all-ids-threshold値が高すぎると、パフォーマンスに影響する場合があります。


    dsadm analyze-indexesでは、どのキーがALLIDであるか、またはそれに近いかを表示するので、それがdsconf analyze-index-filtersの出力と一致することもあります。検索で、値がALLIDキーのフィルタを指定する場合、前述したように、検索フィルタ全体によっては、その検索の索引が作成されない場合があります。

12.1.6 索引を削除するには

WebインタフェースのDirectory Service Control Center (DSCC)を使用して、このタスクを実行できます。

ある属性に対して構成された索引をすべて削除します。

$ dsconf delete-index -h host -p port suffix-DN attr-name

たとえば、次のコマンドにより、preferredLanguage属性の索引がすべて削除されます。

$ dsconf delete-index -h host -p port dc=example,dc=com preferredLanguage

デフォルトの索引を削除する際は、Directory Serverの機能に影響する可能性があるので、十分に注意してください。

12.1.7 索引リストのしきい値の変更

システム索引リストのサイズが索引リストのしきい値を超えると、検索が遅くなる場合があります。索引リストのしきい値とは、各索引キーの値の最大数です。索引リストのしきい値サイズを超えたかどうかを判別するには、アクセス・ログを調べます。アクセス・ログのRESULTメッセージの最後にあるnotes=Uフラグは、索引作成なしの検索が実行されたことを示します。同じ接続および操作の前述のSRCHメッセージでは、使用した検索フィルタが示されています。次の2行の例では、10,000エントリを返すcn=Smithの索引作成なしの検索を追跡します。タイムスタンプはメッセージから削除されています。

conn=2 op=1 SRCH base="o=example.com" scope=0 filter="(cn=Smith)"
conn=2 op=1 RESULT err=0 tag=101 nentries=10000 notes=U

システムで頻繁に索引リストのしきい値を超える場合、しきい値を増加して、パフォーマンスを向上させることを検討してください。次の手順では、dsconf set-server-propコマンドを使用して、all-ids-thresholdプロパティを変更します。

12.1.7.1 索引リストのしきい値を変更するには

WebインタフェースのDirectory Service Control Center (DSCC)を使用して、このタスクを実行できます。

  1. 索引リストのしきい値を調整します。

    次の任意のレベルで、索引リストのしきい値を調整できます。

    • インスタンス・レベル:

      dsconf set-server-prop -h host -p port all-ids-threshold:value
      
    • 接尾辞レベル:

      dsconf set-suffix-prop -h host -p port suffix-DN all-ids-threshold:value
      
    • エントリ・レベル:

      dsconf set-index-prop -h host -p port suffix-DN all-ids-threshold:value
      
    • 検索タイプ別の索引レベル:

      dsconf set-index-prop -h host -p port suffix-DN all-ids-threshold search-type:value
      

      search-typeは次のいずれかとなります。

      • eq-enabled等価性

      • pres-enabled実在性

      • sub-enabledサブストリング

      all-ids-thresholdプロパティは、近似索引には構成できません。

    DSCCを使用して、検索タイプ別の索引レベルでしきい値を設定できます。詳細は、Directory Serverのオンライン・ヘルプを参照してください。

  2. 接尾辞の索引を再生成します。

    「索引を生成するには:」を参照してください。

  3. データベースのキャッシュ・サイズが古いall IDsしきい値用に調整され、かつサーバーに十分な物理メモリーがある場合は、データベースのキャッシュ・サイズの増量を検討します。

    データベースのキャッシュ・サイズをall IDsしきい値の増加量の25パーセント増量します。

    つまり、all IDsしきい値を4000から6000に増加した場合、インデックス・リストのサイズの増加を見込んで、データベースのキャッシュ・サイズを約12.5パーセント増加します。

    データベースのキャッシュ・サイズは、属性dbcachesizeを使用して設定します。本番サーバーに変更を適用する前に、最適なサイズを実験的に見つけてください。

12.1.8 接尾辞の索引再作成

索引ファイルが破損した場合、または属性の索引を変更した場合、接尾辞の索引を再作成し、対応するデータベース・ディレクトリの索引ファイルを再作成する必要があります。ディレクトリ・サーバーの実行中に、または接尾辞の再初期化により、接尾辞の索引を再作成できます。

12.1.8.1 Directory Server稼働中における接尾辞の索引作成

接尾辞の索引を再作成すると、サーバーは接尾辞に含まれるエントリをすべて調べ、索引ファイルを再構築します。索引の再作成中、接尾辞の内容は読取り専用となります。サーバーでは、索引を再作成するすべての属性の接尾辞全体がスキャンされるため、非常に多くのエントリがある接尾辞では、このプロセスに数時間かかる場合があります。この時間は構成する索引によっても異なります。さらに、接尾辞の索引の再作成中は、接尾辞を使用できません。

12.1.8.1.1 接尾辞の索引すべてを再作成するには

WebインタフェースのDirectory Service Control Center (DSCC)を使用して、このタスクを実行できます。

接尾辞のすべての索引を再作成します。

$ dsconf reindex -h host -p port suffix-DN

たとえば、dc=example,dc=com接尾辞の索引すべてを初期化するには、次のコマンドを使用します。

$ dsconf reindex -h host -p port dc=example,dc=com

12.1.8.2 再初期化による接尾辞の索引の再作成

接尾辞を再初期化すると、新しい内容がインポートされます。これは接尾辞の内容が置き換えられて、新しい索引ファイルが作成されることを意味します。

12.1.8.2.1 再初期化によって接尾辞の索引を再作成するには

WebインタフェースのDirectory Service Control Center (DSCC)を使用して、このタスクを実行できます。

  1. 「リフェラルの設定および接尾辞の読取り専用化」の説明どおりに、接尾辞を読取り専用に設定します。

  2. 「LDIFへのバックアップ」の説明どおりに、接尾辞全体をLDIFファイルにエクスポートします。

  3. 「LDIFファイルからのデータのインポート」の説明どおりに、同じLDIFファイルをインポートして、接尾辞を再初期化します。

    初期化中は接尾辞を使用できません。初期化が完了すると、構成されたすべての索引の使用準備が整います。

  4. 「リフェラルの設定および接尾辞の読取り専用化」の説明どおりに、接尾辞を再度書込み可能に設定します。

12.2 参照索引の管理

参照索引とは、サーバー側での結果のソートをリクエストする検索操作専用の特殊な索引です。Oracle Directory Server Enterprise Editionのリファレンスでは、Directory Serverでの参照索引の仕組みについて説明しています。

12.2.1 クライアント検索用の参照索引

クライアントの検索結果のソート用にカスタマイズされた参照索引は、手動での定義が必要となります。参照索引、あるいは仮想リスト表示(VLV)索引を作成するには、次の手順に従います。この項では参照索引エントリの追加または変更の手順、および参照索引の再生成の手順も説明します。

12.2.1.1 参照索引を作成するには

WebインタフェースのDirectory Service Control Center (DSCC)を使用して、このタスクを実行できます。

  1. ldapmodifyコマンドを使用して、新しい参照索引エントリを追加するか、既存の参照索引エントリを編集します。

    手順は、「参照索引エントリを追加または変更するには:」を参照してください。

  2. dsconf reindexコマンドを実行して、サーバーに保持する新しい参照索引セットを生成します。

    手順は、「参照索引を再生成するには:」を参照してください。

12.2.1.2 参照索引エントリを追加または変更するには

参照索引は、指定のベース・エントリとそのサブツリーの指定の検索に固有です。参照索引の構成は、そのエントリを含む接尾辞のデータベース構成内で定義されます。

  1. ディレクトリ・サーバーの各参照索引に、vlvBasevlvScopeおよびvlvFilter属性を構成します。

    これらの属性は、検索のベース、検索の範囲および検索用のフィルタを構成します。これらの属性は、vlvSearchオブジェクト・クラスを使用します。

  2. 各参照索引に対して、vlvSort属性を構成します。

    この属性は、索引をソートする属性の名前を指定します。このエントリは、最初のエントリの子であり、vlvIndexオブジェクト・クラスを使用して、どの属性を、どのような順序でソートするかを指定します。

    次の例では、ldapmodifyコマンドを使用して、参照索引の構成エントリを作成します。

    $ ldapmodify -a -h host -p port -D cn=admin,cn=Administrators,cn=config -w -
    Enter bind password:
    dn: cn=people_browsing_index, cn=database-name,
    cn=ldbm database,cn=plugins,cn=config
    objectClass: top
    objectClass: vlvSearch
    cn: Browsing ou=People
    vlvBase: ou=People,dc=example,dc=com
    vlvScope: 1
    vlvFilter: (objectclass=inetOrgPerson)
    
    dn: cn=Sort rev employeenumber, cn=people_browsing_index,
     cn=database-name,cn=ldbm database,cn=plugins,cn=config
    objectClass: top
    objectClass: vlvIndex
    cn: Sort rev employeenumber
    vlvSort: -employeenumber
    ^D
    

    vlvScopeは次のいずれかとなります。

    • 0: ベース・エントリのみ

    • 1: ベースの直接の子

    • 2: ベースをルートにしたサブツリー全体

    vlvFilterは、クライアントの検索操作で使用するものと同じLDAPフィルタです。すべての参照索引エントリは同じ場所に配置されるので、わかりやすいcn値を使用して、参照索引に名前を付ける必要があります。

    vlvSearchエントリには、vlvIndexエントリが1つ以上必要です。vlvSort属性は、ソートする属性とソート順序を定義する属性名のリストです。属性名の前のダッシュ(-)は、順序を逆にすることを示します。いくつかのvlvIndexエントリを定義することで、検索用の索引を複数定義できます。前述の例では、次のエントリを追加できます。

    $ ldapmodify -a -h host -p port
     -D cn=admin,cn=Administrators,cn=config -w -
    dn: cn=Sort sn givenname uid, cn=people_browsing_index,
     cn=database-name,cn=ldbm database,cn=plugins,cn=config
    objectClass: top
    objectClass: vlvIndex
    cn: Sort sn givenname uid
    vlvSort: sn givenname uid
    ^D
    
  3. 参照索引の構成を変更するには、対応するvlvSearchエントリまたは対応するvlvIndexエントリを編集します。

  4. 参照索引を削除して、サーバーで参照索引を維持しないようにするには、各vlvIndexエントリを削除します。

    または、vlvIndexエントリが1つしか存在しない場合、vlvSearchおよびvlvIndexの両方のエントリを削除します。

12.2.1.3 参照索引を再生成するには

参照索引エントリを作成したら、指定した属性に対して、新しい参照索引を生成します。

$ dsadm reindex -l -t attr-index instance-path suffix-DN

このコマンドは、ディレクトリの内容をスキャンし、参照索引のためのデータベース・ファイルを作成します。

次の例では、前項で定義した参照索引を生成します。

$ dsadm reindex -l -b database-name -t Browsing /local/dsInst \
 ou=People,dc=example,dc=com

dsadm reindexコマンドの詳細は、dsadmのマニュアル・ページを参照してください。