37 ガベージ・コレクションの管理

次のトピックでは、ガベージ・コレクション用のOracle Databaseタイムゾーンの設定、Oracle Internet Directoryガベージ・コレクタの管理、ガベージ・コレクタ用のロギングの管理など、Oracle Internet Directoryでガベージ・コレクションを管理する方法について説明します。

ガベージとは、ディレクトリで不要になっているが領域を使用しているデータを指します。結果として、このような不要なデータや古いデータでディスクが一杯になり、ディレクトリのパフォーマンスが低下します。ディレクトリからこの不要なデータを削除する処理を、ガベージ・コレクションと呼びます。

37.1 ガベージ・コレクション管理の理解

ガベージ・コレクタは、ディレクトリから不要なデータを削除する、バックグラウンドのデータベース・プロセスです。

Oracle Internet Directoryガベージ・コレクション・フレームワークには、ガベージ・コレクタのデフォルト・セットがあり、このフレームワークにより、これらのコレクタを変更できます。Oracle Internet Directory統計情報コレクタでも、Oracle Internet Directoryガベージ・コレクション・フレームワークが使用されます。

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

37.1.1 ガベージ・コレクション・フレームワークのコンポーネントの理解

次の各トピックでは、Oracle Internet Directoryガベージ・コレクション・フレームワークを構成するコンポーネントであるガベージ・コレクション・プラグインとバックグラウンドのデータベース・プロセスについて説明します。

37.1.1.1 ガベージ・コレクション・プラグインについて

Oracle Internet Directoryのガベージ・コレクションは、ガベージ・コレクタの管理リクエストを受け取るガベージ・コレクション・プラグインを使用します。このプラグインは、Oracle Internet Directoryとともにインストールされ、デフォルトで使用可能になります。このプラグインのエントリは、cn=plugin,cn=subconfigsubentryです。

このプラグインには、3つのトリガーがあります。

  • ガベージ・コレクション・ジョブの作成に使用するプラグイン・トリガーの識別名: cn=Add PurgeConfig,cn=plugin,cn=subconfigsubentry

  • ガベージ・コレクション・ジョブの変更に使用するプラグイン・トリガーの識別名: cn=Modify PurgeConfig,cn=plugin,cn=subconfigsubentry

  • ガベージ・コレクション・ジョブの削除に使用するプラグイン・トリガーの識別名: cn=Delete PurgeConfig,cn=plugin,cn=subconfigsubentry

    関連項目:

    ガベージ・コレクション・プラグインの属性のリストおよび説明は、『Oracle Identity Managementリファレンス』Oracle Internet Directory構成のスキーマ要素に関する項を参照してください

37.1.1.2 バックグラウンドのデータベース・プロセスの理解

次の各トピックでは、ガベージ・コレクタおよびOracle Internet Directory統計情報コレクタを含む、ガベージ・コレクション・プラグインによって起動されるバックグラウンドのデータベース・プロセスについて説明します。

37.1.1.2.1 ガベージ・コレクタについて

次のガベージ・コレクタの動作を設定して管理できます。

  • 起動時間

  • パージするデータの経過時間

  • 実行頻度

  • パージするデータの種類

  • 一度にパージするエントリの数

37.1.1.2.2 事前定義のガベージ・コレクタについて

Oracle Internet Directoryのデフォルトのインストールに含まれている事前定義済ガベージ・コレクタは、次のとおりです。

  • 変更ログのガベージ・コレクタ: ディレクトリ内のコンシューム済変更ログ・エントリをクリーンアップします。このガベージ・コレクタのコンテナは、 cn=changelog purgeconfig, cn=purgeconfig,cn=subconfigsubentryです。

  • 一般統計のガベージ・コレクタ: ディレクトリの一般統計情報をモニターするためにOracle Internet Directoryサーバー管理機能により作成され、使用されなくなったエントリをクリーンアップします。このガベージ・コレクタのコンテナは、 cn=general stats purgeconfig, cn=purgeconfig,cn=subconfigsubentryです。

  • 状況統計のガベージ・コレクタ: ディレクトリの状況統計情報をモニターするためにOracle Internet Directoryサーバー管理機能により作成され、使用されなくなったエントリをクリーンアップします。このガベージ・コレクタのコンテナは、cn=health stats purgeconfig, cn=purgeconfig,cn=subconfigsubentryです。

  • セキュリティおよびリフレッシュ・イベントのガベージ・コレクタ: ディレクトリのセキュリティおよびリフレッシュ・イベントをモニターするためにOracle Internet Directoryサーバー管理機能により作成され、使用されなくなったエントリをクリーンアップします。このガベージ・コレクタのコンテナは、cn=secrefresh events purgeconfig, cn=purgeconfig,cn=subconfigsubentryです。

  • システム・リソース・イベントのガベージ・コレクタ: ディレクトリのシステム・リソース・イベントをモニタリングするためにOracle Internet Directoryサーバー管理機能によって作成され、使用されなくなったエントリをクリーンアップします。このガベージ・コレクタのコンテナは、cn=sysresource events purgeconfig, cn=purgeconfig,cn=subconfigsubentryです。

  • ツームストンのガベージ・コレクタ: ディレクトリ内で削除済とマークされている、使用されなくなったエントリをクリーンアップします。このガベージ・コレクタのコンテナは、 cn=tombstone purgeconfig, cn=purgeconfig,cn=subconfigsubentryです。

  • LDAPパフォーマンス・モニタリング・ガベージ・コレクタ: LDAPサーバー・パフォーマンス統計データをクリーンアップします。このガベージ・コレクタのコンテナは、cn=perf stats purgeconfig,cn=purgeconfig,cn=subconfigsubentryです。

  • LDAPバインド・パフォーマンス・モニタリング・ガベージ・コレクタ: セキュリティ・イベント追跡用に収集されたバインド・パフォーマンス・データをクリーンアップします。このガベージ・コレクタのコンテナは、cn=bindsec stats purgeconfig,cn=purgeconfig, cn=subconfigsubentryです。

  • LDAP比較パフォーマンス・モニタリング・ガベージ・コレクタ: セキュリティ・イベント追跡用に収集された比較パフォーマンス・データをクリーンアップします。このガベージ・コレクタのコンテナは、cn=comparesec stats purgeconfig, cn=purgeconfig,cn=subconfigsubentryです。

  • LDAP比較失敗パフォーマンス・モニタリング・ガベージ・コレクタ: セキュリティ・イベント追跡用に収集された比較失敗パフォーマンス・データをクリーンアップします。このガベージ・コレクタのコンテナは、cn=comparefailure stats purgeconfig,cn=purgeconfig,cn=subconfigsubentryです。

ノート:

事前定義済ガベージ・コレクタは削除しないことをお薦めします。これらのガベージ・コレクタを1つ以上削除すると、不要なデータが増加し、最終的には使用可能なすべてのディスク領域を使い果すことになります。

ただし、動作をカスタマイズするために、事前定義済ガベージ・コレクタを変更してもかまいません。

37.1.1.2.3 統計情報コレクタについて

次のOracle Internet Directory統計情報コレクタの動作を設定して管理できます。

  • 起動時間

  • 実行頻度

Oracle Internet Directory統計情報コレクタは、Oracle Internet Directoryに関する統計情報を収集します。このバックグラウンド・データベース・プロセスのコンテナは、 cn=oidstats_config, cn=purgeconfig,cn=subconfigsubentryです。

37.1.2 Oracle Internet Directoryガベージ・コレクションの動作

この項では、変更ログ・エントリをパージするガベージ・コレクタの操作の例を示します。

図37-1に、変更ログ・エントリをパージするガベージ・コレクタの操作の例を示します。

図37-1 例: 変更ログ・エントリのガベージ・コレクション

この図については本文で説明しています。

図37-1の例に示すとおり、ガベージ・コレクション・プロセスは、次のように動作します。

  1. LDAPクライアントが、特定のガベージ・コレクション操作リクエストをディレクトリ・サーバーに送信します。これらの操作には、ツームストンのエントリまたは変更ログのエントリのパージなどがあります。

  2. ディレクトリ・サーバーが、リクエストをガベージ・コレクション・プラグインに渡します。

  3. ガベージ・コレクション・プラグインが、Oracle Internet Directoryで指定されたデータベースのガベージ・コレクション・エンジンにリクエストを送信します。

  4. ガベージ・コレクション・エンジンが、対応するバックグラウンド・データベース・プロセス(この場合は、変更ログのガベージ・コレクタ)をトリガーします。バックグラウンド・データベース・プロセスは、その構成で指定されているパラメータに従って動作します。

37.1.3 ガベージ・コレクタ・エントリと統計情報コレクタ・エントリについて

各ガベージ・コレクタ・エントリは、動作を指定する属性を持ち、エントリcn=subconfigsubentryの直下にあるエントリcn=purgeconfigに存在します。

関連項目:

ガベージ・コレクタの各属性の詳細は、『Oracle Identity Managementリファレンス』Oracle Internet Directory構成のスキーマ要素に関する項を参照してください

Oracle Internet Directory統計情報コレクタ・エントリは、属性を持ち、エントリcn=subconfigsubentryの直下にあるエントリcn=purgeconfigにも存在します。

図37-2に、これらのエントリの場所を示します。

図37-2 DIT内のガベージ・コレクション・エントリ

図37-2の説明が続きます
「図37-2 DIT内のガベージ・コレクション・エントリ」の説明

37.1.4 変更ログのパージの概要

レプリケーションとOracle Directory Integration Platformはいずれも変更ログを使用して、サプライヤ・ディレクトリの情報をコンシューマ・ディレクトリに伝達します。

変更ログはすべてods_chg_logという表に格納されます。また、レプリケーション変更ログはasr_chg_logに格納されます。変更ログのガベージ・コレクタが実行されると、どの変更ログ・コンシューマからも必要とされなくなった変更ログがパージされます。これで、Oracle Internet Directoryデータベースで変更ログ・ストアが大きくなりすぎるのを防ぐことができます。

変更ログのガベージ・コレクタでは、次の2つの方法でパージする変更ログを決定します。

  • 変更番号ベースのパージ

    変更番号ベースのパージでは、すべての変更ログ・コンシューマの変更ステータスが考慮されます。つまり、変更ログは、すべてのコンシューマによってコンシュームされてからパージされます。変更ログのガベージ・コレクタを実行すると、レプリケーション、Oracle Directory Integration Platformおよびその他のコンシューマによってコンシュームされたすべての変更ログがパージされます。

  • 時間ベースのパージ

    時間ベースのパージは、特定の時間が経過した変更ログのパージを目的としたフォールバック方法です。この方法では、すべての変更ログ・サブスクライバによってコンシュームされていないものであっても、古い変更ログが確実にパージされます。時間ベースのパージは、他のコンシューマの変更ステータスではなく、レプリケーションの変更ステータスに従います。変更ログのガベージ・コレクタは、レプリケーションで必要とされず、かつorclpurgetargetageの時間以上が経過したすべての変更ログをパージします。orclpurgetargetageがゼロの場合、変更ログのガベージ・コレクタはすぐにこの動作を実行します。orclpurgetargetageが無効な数値である場合や、定義されていない場合のデフォルト値は、240時間(10日)です。レプリケーションで必要とされる変更ログは、レプリケーションでコンシュームされた後でパージされます。

    Oracle Directory Integration Platformがデプロイされているときに時間ベースのパージを有効にする場合は、変更ログがOracle Directory Integration Platformによって処理されてからパージされるように、orclpurgetargetageを十分に大きな値に設定してください。値を240にすると、10日が経過してから変更ログがパージされます。

    「時間ベースの変更ログのパージの構成」を参照してください。

37.2 ガベージ・コレクション用のOracle Databaseタイムゾーンの設定

Oracle Internet Directoryガベージ・コレクション・ロジックが正しく動作するようにするには、Oracle Databasedbtimezoneパラメータを協定世界時(UTC)からの適切な置換値に設定する必要があります。

次のステップを実行します。

  1. 次のように、PL/SQLを起動します。
    $ sqlplus /nolog   
    SQL> connect / as sysdba
     
  2. 次のように、dbtimezoneの値を取得するための問合せを実行します。
    SQL> select dbtimezone from dual;
    
  3. 次のように、協定世界時(UTC)からの置換値を取得するための問合せを実行します。
    SQL> select systimestamp from dual;
    

    出力は次のようになります。

    SYSTIMESTAMP
    ---------------------------------------
    31-JAN-09 01.04.42.281000 PM -05:00
    

    systimestamp出力の最終列を取得します。この例では、-05:00です。

  4. dbtimezoneパラメータがsystimestamp出力の最終列の値と同じである場合、残りのステップを実行する必要はありません。それ以外の場合は、次に進みます。
  5. 「Oracle Internet Directoryインスタンスの管理」の説明に従って、Oracle Databaseを使用しているすべてのOracle Internet Directoryインスタンスを停止します。
  6. 次にように、systimestamp問合せの最終列から取得した値を使用して、dbtimezoneパラメータを設定します。
    SQL> ALTER DATABASE SET TIME_ZONE = '-05:00'; 
    
  7. Oracle Databaseを停止します。
    SQL> shutdown immediate
    
  8. Oracle Databaseを再起動します。
    SQL> startup
    
  9. 「Oracle Internet Directoryインスタンスの管理」の説明に従って、Oracle Internet Directoryを再起動します。

ノート:

dbtimezoneパラメータの詳細は、『Oracle OLAP DMLリファレンス』を参照してください。

37.3 Oracle Internet Directoryガベージ・コレクタの変更

次の各トピックでは、Oracle Internet Directoryガベージ・コレクタおよびOracle Internet Directory統計情報コレクタの変更方法について説明します。

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

37.3.1 Oracle Directory Services Managerを使用したガベージ・コレクタの変更

Oracle Directory Services Managerを使用して、ガベージ・コレクタを変更できます。

ガベージ・コレクタを変更するには:

  1. 「Oracle Directory Services Managerの起動」の説明に従って、Oracle Directory Services Managerを起動し、Oracle Internet Directoryサーバーに接続します。
  2. タスク選択バーで、「拡張」を選択します。
  3. 左側のペインで「ガベージ・コレクション」を展開し、変更するガベージ・コレクタを選択します。「ガベージ・コレクタ」ウィンドウが右ペインに表示されます。
  4. ガベージ・コレクタ・ウィンドウで、このガベージ・コレクタに対する変更を入力します。
  5. 「適用」を選択します。

37.3.2 コマンド行ツールを使用したガベージ・コレクタの変更

例を使用して、コマンド行ツールによりガベージ・コレクタを変更する方法について説明します。

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

変更可能なガベージ・コレクションの属性は、『Oracle Identity Managementリファレンス』Oracle Internet Directory構成のスキーマ要素に関する項を参照してください。

37.3.2.1 ガベージ・コレクタの変更

削除済とマークされたエントリのガベージ・コレクタをすぐに実行するとします。LDIFファイルは次のようになります。

dn: cn=tombstone purgeconfig, cn=purgeconfig, cn=subconfigsubentry
changetype:modify
replace: orclpurgenow
orclpurgenow: 1

ldapmodifyを使用して、このエントリをロードします。

ldapmodify -D "cn=orcladmin" -q -h hostname -p port \
   -D username -f file_name_of_defined_entry
37.3.2.2 ガベージ・コレクタの変更ログの無効化

変更ログのガベージ・コレクタを使用禁止にするとします。

dn: cn=changelog purgeconfig, cn=purgeconfig, cn=subconfigsubentry
changetype: modify
replace: orclpurgeenable
orclpurgeenable: 0

ldapmodifyを使用して、このエントリをロードします。

ldapmodify -D "cn=orcladmin" -q -h hostname -p port \
   -D username -f file_name_of_defined_entry

37.3.3 Oracle Internet Directory統計情報コレクタの変更

Oracle Internet Directory統計情報コレクタを変更します。

Oracle Internet Directory統計情報コレクタは、ガベージ・コレクタと同じ方法で変更しますが、変更可能なフィールドは3つのみです。

37.4 Oracle Internet Directoryガベージ・コレクタのロギングの管理

次の各トピックでは、Oracle Internet Directoryガベージ・コレクタのロギングの有効化、無効化およびモニター方法について説明します。

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

37.4.1 Oracle Internet Directoryガベージ・コレクタのロギングの有効化

ガベージ・コレクタのロギングを有効にすると、ディレクトリ・サーバーは、ファイル・システム内のファイルに、情報を書き込みます。

次の情報がファイルに書き込まれます。

  • ジョブ識別子

  • ガベージ・コレクタのジョブ説明

  • パージされたエントリ数

  • 操作のステータス

  • タイムスタンプ

  • 捕捉されたエラー

ガベージ・コレクション情報のロギングを有効にするには:

  1. orclpurgedebug属性を必要に応じて1に設定します。orclpurgedebugが1に設定されている場合、特別なデバッグ詳細情報が記録されるため、ガベージ・コレクションの問題をトラブルシューティングする際に役立ちます。
  2. ログ・ファイルの有効なファイル名(oidgc001.logなど)を、orclpurgefilename属性に設定します。
  3. ログ・ファイルのあるディレクトリのパス名(/private/mydir/oracle/ldap/logなど)を、orclpurgefileloc属性に設定します。
  4. 前に指定したディレクトリへのPL/SQL I/Oアクセスを有効にします。これには、次の内容をデータベースに指定します。
    UTL_FILE_DIR=PATH_NAME
    

    PATH_NAMEは、前に指定したパスです。

    関連項目:

    『Oracle Databaseリファレンス』のUTL_FILE_DIRパラメータ・タイプに関する項

  5. レプリケーション・サーバーを停止し、次にOracle Internet Directoryサーバーを停止します。
  6. データベースを再起動します。
  7. Oracle Internet Directoryサーバーを起動し、次にレプリケーション・サーバーを起動します。

37.4.2 Oracle Internet Directoryガベージ・コレクタのロギングの無効化

ガベージ・コレクション情報のロギングを無効にするには、orclpurgedebug属性を0に設定します。

ノート:

orclpurgedebugが0に設定されている場合も、ガベージ・コレクタの処理を示すために、ガベージ・コレクタの操作に関する最小限の情報が記録されます。

37.4.3 Oracle Internet Directoryガベージ・コレクションのロギングのモニタリング

ガベージ・コレクションのログの情報は、ガベージ・コレクションのモニタリングとトラブルシューティングに役立ちます。このログの場所は、ロギングを有効にする際に属性を設定して指定します。

たとえば、次のように構成したとします。

orclpurgefilename = oidgc001.log
orclpurgefileloc     = /private/mydir/oracle/ldap/log

ロギングを有効にすると、/private/mydir/oracle/ldap/log/oidgc001.logファイルを読み取ることによって変更ログのガベージ・コレクションの処理をモニターできます。

次に、管理者が変更ログのガベージ・コレクション構成エントリのorclpurgenow属性を変更した場合に記録される情報の例を示します。

Running Garbage Collector: cn=changelog purgeconfig
Starting time: 2005/03/24 11:03:23
PurgeConfig object located, Eid= 936
purge_ODSChglog: Nothing to be purged(no_work_to_do)
purge_ODSChglog: 107 chglogs successfully purged
purge_ASRChglog: Nothing to be purged(no_work_to_do)
purge_ASRChglog: 0 chglogs successfully purged
purge_ASRChglog: 0 chglogs successfully purged

Modifying Garbage Collector for at "2005/03/24 11:03:23
Garbage Collector DN recognized, rdn=cn=changelog purgeconfig
orclPurgeNow successfully retrieved.
Garbage Collector job found: jobno=21
Garbage Collector has been run
Garbage collector is updated successfully!

orclpurgenowの変更により、変更ログのガベージ・コレクタがすぐに実行されます。最初のパラグラフで示されているように、ods_chg_log表から107個の変更ログがパージされ、asr_chg_log表からは0個の変更ログがパージされています。また、2番目のパラグラフの情報は、orclpurgenow属性が正常に変更されたことを示しています。

37.5 時間ベースの変更ログのパージの構成

時間ベースのパージは、変更ログ・パージ構成エントリのorclpurgetargetage属性を変更して構成できます。

変更ログのパージについては、「変更ログのパージの概要」で説明されています。次の例では、120時間(5日)の時間ベースのパージを構成しています。次のようなLDIFファイルを使用します。

dn: cn=changelog purgeconfig,cn=purgeconfig,cn=subconfigsubentry
changetype:modify
replace: orclpurgetargetage
orclpurgetargetage: 120

LDIFファイルmod.ldifを適用するには、次のように入力します。

ldapmodify -D "cn=orcladmin" -q -p port -h host -f mod.ldif

ノート:

変更ログのガベージ・コレクタのコンテナは、次のとおりです。cn=changelog purgeconfig, cn=purgeconfig,cn=subconfigsubentry

関連項目:

『Oracle Identity Managementリファレンス』Oracle Internet Directory構成のスキーマ要素に関する項