Oracle Content Management SDK 管理者ガイド 10g(9.0.4.2) B15638-01 |
|
Oracle Content Management SDK(Oracle CM SDK)では、Oracle Textを使用して、テキスト検索および他の拡張機能を簡単に使用できます。検索結果が戻される速度は、Oracle CM SDKで使用するOracle Text索引(IFS_TEXT
)の質など、複数の要因に依存します。また、エンド・ユーザーが体感する検索のパフォーマンスは、実行中の検索がタイムアウトするまでに経過した時間によって決まることもあります。
この付録では、Oracle CM SDKで最適なパフォーマンスを得るための、Oracle Text索引の管理方法について説明します。項目は次のとおりです。
Oracle Textは以前、OracleコンテキストまたはOracle interMedia Textと呼ばれていました。ほとんどの管理ドキュメントやアプリケーション開発ドキュメントでは、基礎となる索引、ビュー、表、および様々なPL/SQLパッケージに関する記述の中で、OracleコンテキストまたはOracle interMedia Textに関連する名称が使用されています。たとえば、すべてのOracle Textオブジェクトを持つデータベース・スキーマでは、索引などでCTXSYS
となっています。
Oracle Textの詳細は、OTN-J(Oracle Technology Network Japan、URLはhttp://otn.oracle.co.jp/
)を参照してください。
Oracle Textのディスク領域は、次の3つの表領域に分けられます。
この情報を使用して、Oracle CM SDKインスタンスで必要となるディスク記憶域の見積りおよび計画を行います。
Oracle CM SDKの構成プロセスの最後に、Configuration Assistantは表A-1に示されたSQLスクリプトを使用して、IFS_TEXT
索引を作成し、移入します。
これらスクリプトのファイルは、次のディレクトリにあります。
$ORACLE_HOME/ifs/cmsdk/admin/sql
インストール・プロセスに失敗したため、これらのスクリプトを手動で実行する場合は、SQL*Plusプロンプトからスクリプトを実行する必要があります。
Oracle Textには、索引を保守するためのPL/SQLプロシージャが2つ用意されています。Oracle Text索引は、通常のデータベース索引と異なり、情報の挿入や更新によって動的に更新されません。したがって、Oracle Text索引は、Oracle Textのストアド・プロシージャctx_ddl.sync_index
を使用して定期的にリフレッシュ(または同期化)する必要があります。
ctx_ddl.sync_index
プロシージャでは索引全体の再構築は行われず、前回の同期以後に変更されたレコードが追加および削除されます。変更は増分のため、このプロシージャの実行頻度が高いほど、短時間で終了します。ただし、時間が経つにつれてこの索引は断片化されるため、索引を最適化するためにもう1つのプロシージャ(ctx_ddl.optimize_index
)が用意されています。
Oracle CM SDKの構成時には、IFS_TEXT
索引を同期化および最適化するこれらのプロシージャが、Oracleデータベース・サーバーのDBMS_JOBS
パッケージを使用して定期的にバックグラウンドで実行されるように自動設定されます。DBMS_JOBS
のプロシージャは、UNIXシステムのcron jobs
と同様の機能を持ち、Oracleデータベース・サーバーが稼働するすべてのプラットフォームに移植できます。
構成時にOracle CM SDKスキーマを作成すると、Sync JobとOptimize Jobという2つのDBMS_JOBS
が設定されます。
Sync Jobは、定期的にctx_ddl.sync_index()
メソッドをコールします。このメソッドは、前回のメソッド実行以降に作成または更新されたドキュメントに索引を付けます。このジョブは、デフォルトでは30分おきに実行されるように設定されます。
Optimize Jobは、定期的にctx_ddl.optimize_index()
メソッドをコールします。このジョブの目的は、断片化を解消することによってIFS_TEXT
索引を最適化することです。このジョブは、デフォルトではFULL
モードで実行され、最適化タスクとしては最長の1時間が割り当てられています。このジョブの実行は、毎晩午前0時に開始されるように設定されます。
DBMS_JOB
のログ・ファイルは、対象のOracleデータベース・サーバーをホスティングしている$ORACLE_HOME
の下にある、バックグラウンド・プロセス・ログを格納するディレクトリに置かれています。このディレクトリは、データベース・サーバーのBACKGROUND_DUMP_DEST
構成パラメータで設定されています。ログ・トレース・ファイルは、そのネーミング・パターン(DBNAME_j###_
process-id
.trc
)によって識別できます。
もう1つのデータベース構成パラメータJOB_QUEUE_PROCESSES
を指定すると、すべてのバックグラウンド・タスクを実行するために指定の時間に使用可能なプロセスの数が設定されます。Sync JobおよびOptimize Jobを実行するのに十分なプロセスを使用できない場合は、このパラメータの値を大きくする必要があります。デフォルト値は10です。
USER_JOBS
ビューを参照すると、現在のスキーマ・ユーザーによって設定されているすべてのジョブのリストを確認することもできます。USER_JOBS
ビューには、各ジョブによって実行されるPL/SQL、各ジョブが最後に実行された時刻、各ジョブの次回の実行予定時刻などの詳細情報が表示されます。USER_JOBS
ビューを参照するには、SQL*Plusを使用してOracle CM SDKスキーマにログオンします。
Oracle CM SDKのDBMS_JOBS
を設定およびクリアするには、SetupContextJobs.sql
とClearContextJobs.sql
という2つのSQLファイルを使用します。これらのファイルは、次のディレクトリにあります。
$ORACLE_HOME/ifs/cmsdk/admin/sql
SetupContextJobs.sql
は、Sync JobおよびOptimize Jobを設定するために構成時にシステムが使用します。ClearContextJobs.sql
は、管理者が独自のDBMS_JOBS
を設定する場合にSync JobおよびOptimize Jobを削除するために用意されています。
独自のDBMS_JOBS
を設定する方法については、『Oracle Database管理者ガイド』を参照してください。Sync JobおよびOptimize Jobは、例として参照することもできます。
既存のIFS_TEXT
索引を同期化するには、SQL*Plusを使用してOracle CM SDKスキーマ・ユーザーとして接続し、次のように入力します。
exec ctx_ddl.sync_index('ifs_text');
$ORACLE_HOME/ifs/cmsdk/admin/sql
ディレクトリから、SyncContextIndex.sql
スクリプトを実行することもできます。このスクリプトは、IFS_TEXT
索引を同期化する以外に、追加のログ情報をコンソールに出力します。
既存のIFS_TEXT
索引を最適化するには、SQL*Plusを使用してOracle CM SDKスキーマ・ユーザーとして接続し、次のように入力します。
exec ctx_ddl.optimize_index('ifs_text', 'FAST');
または
exec ctx_ddl.optimize_index('ifs_text', 'FULL', maxtime);
Oracle CM SDKでは、Oracle Textとの対話を簡単にするために、ユーティリティ・タイプのSQLスクリプトが用意されています(表A-2を参照)。使用方法の詳細は、各.sql
ファイルを参照してください。スクリプトはすべて次の場所にあります。
$ORACLE_HOME/ifs/cmsdk/admin/sql
Oracle CM SDKは、デフォルトでは、システムにロードされたすべてのファイルに索引付けするわけではありません。しかし、選択した任意のドキュメントに索引付けするように構成することはできます。このためには、Oracle CM SDKマネージャの「新規フォーマット」ページ(そのフォーマットがすでに存在する場合は「フォーマットの編集」ページ)で、そのMIMEタイプを「索引付け」と指定します。ドキュメントのMIMEタイプは、その拡張子によって決まります。
たとえば、すべての.java
ソース・コード・ファイルを索引付けすることもできます。その手順は次のとおりです。
.java
MIMEタイプを追加して、「索引付け」と指定します。
デフォルトのOracle CM SDKフォーマットのリストについては、表7-6を参照してください。
Oracle Textでは、ファイルの内容に基づいてテーマを生成できます。デフォルトでは、テーマのコンテンツの索引付けに伴うオーバーヘッドを回避するためにOracle CM SDKはテーマの索引付けを無効化します。テーマの詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。
Oracle Textのテーマ索引付けの有効化または無効化を行うと、Oracle CM SDKのすべてのドキュメントに再度索引付けが行われるため、時間がかかる場合があります。ユーザー・コミュニティへの影響を少なくするため、どちらのタスクも、勤務時間外またはシステム使用率が低いときに実行してください。
SQL*Plusで、Oracle CM SDKスキーマ・ユーザーとして接続し、次のように入力します。
exec ctx_ddl.set_attribute('ifs_default_lexer', 'index_themes', 'yes'); exec ctx_ddl.set_attribute('ifs_default_lexer', 'theme_language','english'); alter index ifs_text rebuild parameters('replace lexer ifs_global_lexer');
SQL*Plusで、Oracle CM SDKスキーマ・ユーザーとして接続し、次のように入力します。
exec ctx_ddl.set_attribute('ifs_default_lexer', 'index_themes', 'no'); alter index ifs_text rebuild parameters('replace lexer ifs_global_lexer');
索引が再構築され、テーマの索引付けが無効になります。
IFS.SERVICE.SESSION.DefaultSearchTimeoutPeriod
サービス構成パラメータは、結果待ちの検索のタイムアウト周期を指定できます。(デフォルトのサービス構成では)このパラメータのデフォルト設定は60秒です。検索がタイムアウトするまでユーザーが1分以上待つようにするには、この値を大きくします。実行中の検索がタイムアウトするまでの時間を短くするには、この値を小さくします。
この項では、Oracle Textのトラブルシューティングについて説明します。
問題 | 考えられる原因 | 対処方法 |
---|---|---|
どのドキュメントのコンテンツも検索できない。 |
ドキュメントが索引付けされていない。 |
データベース・インスタンスを起動し、Oracle Textの索引付けジョブが実行されていることを確認します。詳細は、「Oracle Text索引の作成および管理」を参照してください。 |
Oracle CM SDKスキーマをアップグレード後に、ドキュメントのコンテンツを検索できない。 |
Oracle Text索引が再移入されていない。 |
詳細は、Oracle Content Management SDKのインストレーションおよび構成ガイドの「Oracle Text索引の再移入」を参照してください。 |
コンテンツ・ベースの検索アクティビティでのみ、サーバーの速度が遅くなる。 |
原因1: Oracle Textの表領域が、他のデータベース・ファイルと同じディスク上にある。 原因2: Oracle Text索引が断片化されている。 |
Oracle Textの表領域を他のディスクに移動します。表領域の移動の詳細は、『Oracle Database管理者ガイド』を参照してください。
Oracle Textの索引 |
Oracle CM SDKの行が、Oracle Textのビュー |
Oracle CM SDKのドキュメントが破損しているか、または正しい拡張子を持っていない。 |
|
Oracle CM SDKの各行が処理されず、またOracle Textのビュー |
Oracle CM SDKのドキュメントが破損しているか、または正しい拡張子を持っていない。 |
|
新規ドキュメントのコンテンツ検索で、機能が停止する。 |
前回ロードしたドキュメントがOracle Textに対応していない。 |
|
|
Copyright © 2005 Oracle Corporation. All Rights Reserved. |
|