この章では、Oracle Textの管理について説明します。次の項目について説明します。
すべてのユーザーがOracle Textの索引を作成してCONTAINS
問合せを入力できる一方、Oracle Textでは、管理用のCTXSYS
ユーザーおよびアプリケーション開発者用のCTXAPP
ロールを提供しています。
CTXSYS
ユーザーは、インストール時に作成されます。CTXSYS
ユーザーは、次の作業を実行できます。
すべての索引の表示
すべての索引の同期化
ナレッジ・ベース拡張子コンパイラ、ctxkbtc
の実行
すべてのシステム定義ビューへの問合せ
CTXAPP
ロールを持つユーザーのすべての作業の実行
注意: 以前のリリースのOracle Textでは、CTXSYS にはSYSDBA 権限があり、CTXSYS のみがシステム定義プリファレンスの変更やシステム・パラメータの設定などの特定の機能を実行できました。 |
CTXAPP
ロールは、システム定義のロールです。ユーザーは次の作業を実行できます。
Oracle Textのプリファレンスの作成および削除
Oracle TextのPL/SQLパッケージの使用
すべてのユーザーは、Oracle Textの索引の作成およびテキスト問合せの入力を行うことができます。CTXAPP
ロールを使用して、ユーザーはプリファレンスを作成し、PL/SQLパッケージを使用できます。
元表のドキュメントに対して挿入、更新または削除がある場合、DMLキューでは、索引付けを待機しているドキュメントの要求を格納します。CTX_DDL
.SYNC_INDEX
を使用して索引を同期化すると、その要求はキューから削除されます。
保留中のDML要求は、CTX_PENDING
ビューとCTX_USER_PENDING
ビューを使用して問い合せることができます。
DMLエラーは、CTX_INDEX_ERRORS
ビューまたはCTX_USER_INDEX_ERRORS
ビューを使用して問い合せることができます。
関連項目 これらのビューの詳細は、『Oracle Textリファレンス』を参照してください。 |
索引付け要求およびドキュメント・サービス要求のロギングには、PL/SQLパッケージCTX_OUTPUT
を使用します。
関連項目: このパッケージの詳細は、『Oracle Textリファレンス』を参照してください。 |
CTX_REPORT
パッケージを使用して、索引および問合せのレポートを作成します。このレポートを使用すると、アプリケーションの微調整およびトラブルシューティングができます。
関連項目: このパッケージの詳細は、『Oracle Textリファレンス』を参照してください。 |
CTX_REPORT
パッケージには、次のプロシージャが含まれます。
これらのプロシージャにより、索引メタデータの設定、使用される索引付けオブジェクト、オブジェクトの属性の設定および(CTX_REPORT.DESCRIBE_INDEX
用の)索引パーティション情報(ある場合)を含む、既存の索引またはポリシーについて説明するレポートが作成されます。これらのプロシージャは、索引関連の問題の診断で特に役立ちます。
これは、単純なCONTEXT索引上で実行される、DESCRIBE_INDEX
のサンプル出力です。
================================================================= INDEX DESCRIPTION ================================================================= index name: "DR_TEST"."TDRBPRX0" index id: 1160 index type: context base table: "DR_TEST"."TDRBPR" primary key column: ID text column: TEXT2 text column type: VARCHAR2(80) language column: format column: charset column: ================================================================= INDEX OBJECTS ================================================================= datastore: DIRECT_DATASTORE filter: NULL_FILTER section group: NULL_SECTION_GROUP lexer: BASIC_LEXER wordlist: BASIC_WORDLIST stemmer: ENGLISH fuzzy_match: GENERIC stoplist: BASIC_STOPLIST stop_word: teststopword storage: BASIC_STORAGE r_table_clause: lob (data) store as (cache) i_index_clause: compress 2
CREATE_INDEX_SCRIPT
は、指定したテキスト索引の複製を作成できるSQL*Plusスクリプトを作成します。索引はあるが、そのスクリプトの作成に使用された元のスクリプト(ある場合)がないとき、索引を再作成できるようにする場合は、これを使用します。たとえば、誤ってスクリプトを削除した場合、CREATE_INDEX_SCRIPT
を使用するとスクリプトを再作成できます。同様に、別のユーザーから索引を継承したが、それを作成したスクリプトは継承していない場合も、CREATE_INDEX_SCRIPT
を使用すると便利です。
索引ではなくポリシーを再作成できるという点を除くと、CREATE_POLICY_SCRIPT
はCREATE_INDEX_SCRIPT
と同様に動作します。
これは、(完全なリスト表示ではない)単純なCONTEXT索引上で実行される、CREATE_INDEX_SCRIPT
のサンプル出力です。
begin ctx_ddl.create_preference('"TDRBPRX0_DST"','DIRECT_DATASTORE'); end; / ... / begin ctx_ddl.create_section_group('"TDRBPRX0_SGP"','NULL_SECTION_GROUP'); end; / ... begin ctx_ddl.create_preference('"TDRBPRX0_WDL"','BASIC_WORDLIST'); ctx_ddl.set_attribute('"TDRBPRX0_WDL"','STEMMER','ENGLISH'); ctx_ddl.set_attribute('"TDRBPRX0_WDL"','FUZZY_MATCH','GENERIC'); end; / begin ctx_ddl.create_stoplist('"TDRBPRX0_SPL"','BASIC_STOPLIST'); ctx_ddl.add_stopword('"TDRBPRX0_SPL"','teststopword'); end; / ... / begin ctx_output.start_log('TDRBPRX0_LOG'); end; / create index "DR_TEST"."TDRBPRX0" on "DR_TEST"."TDRBPR" ("TEXT2") indextype is ctxsys.context parameters(' datastore "TDRBPRX0_DST" filter "TDRBPRX0_FIL" section group "TDRBPRX0_SGP" lexer "TDRBPRX0_LEX" wordlist "TDRBPRX0_WDL" stoplist "TDRBPRX0_SPL" storage "TDRBPRX0_STO" ') /
このプロシージャは、内部索引オブジェクト名とその表領域、割当てサイズおよび使用サイズを示すレポートを作成します。DBAが索引のサイズを監視する必要がある場合(たとえば、ディスク領域が不足している場合)は、これを使用すると便利です。
このプロシージャのサンプル出力は次のようになります(部分的にリスト表示します)。
================================================================= INDEX SIZE FOR DR_TEST.TDRBPRX10 ================================================================= TABLE: DR_TEST.DR$TDRBPRX10$I TABLESPACE NAME: DRSYS BLOCKS ALLOCATED: 4 BLOCKS USED: 1 BYTES ALLOCATED: 8,192 (8.00 KB) BYTES USED: 2,048 (2.00 KB) INDEX (LOB): DR_TEST.SYS_IL0000023161C00006$$ TABLE NAME: DR_TEST.DR$TDRBPRX10$I TABLESPACE NAME: DRSYS BLOCKS ALLOCATED: 5 BLOCKS USED: 2 BYTES ALLOCATED: 10,240 (10.00 KB) BYTES USED: 4,096 (4.00 KB) INDEX (NORMAL): DR_TEST.DR$TDRBPRX10$X TABLE NAME: DR_TEST.DR$TDRBPRX10$I TABLESPACE NAME: DRSYS BLOCKS ALLOCATED: 4 BLOCKS USED: 2 BYTES ALLOCATED: 8,192 (8.00 KB) BYTES USED: 4,096 (4.00 KB)
INDEX_STATS
により、索引付けされるドキュメントの数、索引に含まれる一意のトークンの数、トークンの平均サイズ、索引の断片化情報など、索引に関する様々な統計が算出されます。INDEX_STATS
の使用例は、ストップリストの最適化に含まれる場合があります。
このプロシージャの出力例は、『Oracle Textリファレンス』を参照してください。
このプロシージャは、ログに記録された問合せのレポートを作成します。これを使用すると、単純な分析を実行できます。問合せ分析を行うと、次のことがわかります。
行われた問合せ
成功した問合せ
失敗した問合せ
各問合せが行われた回数
これらの要素を様々な方法で組み合せると、アプリケーションで最も頻繁に行われた、失敗した50個の問合せなどのような判断ができます。
このプロシージャの出力例は、『Oracle Textリファレンス』を参照してください。
TOKEN_INFO
は、主に問合せに関する問題の診断(たとえば、索引データが破損していないかの確認)で使用されます。たとえば、これを使用すると、どのドキュメントが予期しないトークンまたは不正なトークンを生成しているかがわかります。
これは参照ファンクションであり、他のファンクション(CTX_DDL.OPTIMIZE_INDEX
、CTX_REPORT.TOKEN_INFO
など)に対する入力として主に使用されます。
Oracle Enterprise Managerには、Oracle Text索引の構成、メンテナンスおよび管理を行うためのText Managerが用意されています。Text Managerを使用すると、Oracle Text索引の構成および管理に関する基本的なタスクをすべて実行できます。単一のOracleデータベース・インスタンスまたはOracle Real Application Clusters環境におけるテキスト索引の全般的な状態を監視できます。Text Managerには重要な情報のサマリーが表示され、目的の詳細レベルへのドリルダウンや問題の解決、実行の必要があるアクションの理解が可能です。Text Managerにアクセスするには、Oracle Enterprise Managerのデータベース・ホームページから「スキーマ」をクリックし、「Text Manager」グループの下の「テキスト索引」を選択します。「テキスト索引」ページで、索引名を選択して「表示」をクリックすると、その索引の情報と属性が表示されます。
「テキスト索引」ページに、処理中のジョブ、直前の7日間以内にスケジュールされているジョブ、または問題が発生しているジョブが表示されます。このページから「ジョブ・スケジューラ」に移動して、このデータベース・インスタンスに対するすべてのジョブの概要を表示したり、選択したジョブを管理できます。Oracle Enterprise Managerのオンライン・ヘルプでは、Text Managerの各機能を使用するための詳細および手順を説明しています。
注意: Text ManagerによってOracle Textの索引を作成することはできません。Oracle Textの索引を作成するには、第3章「Oracle Textでの索引付け」の「Oracle Textの索引の作成」で説明しているように、CREATE INDEX 文を使用します。 |
Text Managerのメイン・ページで、「アクション」リストから選択した索引に対し、次のアクションを実行できます。
同期化
最適化
再構築
失敗した操作の再開
ログの表示
エラーの表示
また、指定した索引に対してジョブをスケジュールできます。
Text Managerにアクセスする手順は、次のとおりです。
Database Controlへのアクセス権限を持つユーザー・アカウントによってデータベースにログインします。たとえば、データベースのインストール中に指定したパスワードを使用して、SYS
またはSYSTEM
からログインします。
Database Controlに、データベース・ホーム・ページが表示されます。
データベース・ホーム・ページで「スキーマ」タブを選択します。
「Text Manager」の下にある、「テキスト索引」をクリックします。
「テキスト索引」ページが表示され、そこに、このデータベース・インスタンスのテキスト索引がリストされます。
「テキスト索引」ページからテキスト索引を選択すると、その索引に対するオプションが使用可能となり、編集やアクションの実行が可能になります。たとえば、検索の属性を構成するには、選択した索引に対して「編集」をクリックします。「テキスト索引の編集」ページで、ワイルド・カードの語句の最大数、ファジー・スコア、およびファジーの拡張の数などを含む属性を設定できます。索引名およびパーティション名の変更、URL_DATASTORE
の設定の指定、およびその他のオプションを実行できます。
「テキスト索引の表示」ページを使用して、指定した索引の一般的な情報(索引タイプ、並列度、同期モード、ワイルド・カード制限、ファジー・スコア、ファジーの数値的結果、データストアなど)を表示できます。索引のパーティションに関する情報も表示できます。
テキスト索引の一般情報を表示する手順は、次のとおりです。
「テキスト索引」ページで、「テキスト索引」リスト内の索引名をクリックします。
「テキスト索引の表示」ページが「一般」タブが選択された状態で表示されます。
このページでアクションを選択して、メンテナンス・タスクを実行できます。
Text Managerの「テキスト索引」ページでは、テキスト索引のリストおよびデータベース・インスタンスに対するテキスト索引の状態が表示されるため、アプリケーション全体が適切に実行されていることを確認するために必要となる重要なアクションがある場合、それを把握できます。索引のステータスや過去7日間にユーザーが発行したジョブなどの情報が表示されます。Text索引の重要な情報も表形式で表示されます。
「テキスト索引」ページを使用して、次の情報を表示できます。
無効なパーティションを含むテキスト索引、つまり無効なテキスト索引の数。すべてのテキスト索引の無効なパーティション(ある場合)の数もまた表示されます。
処理中の索引の数および処理中のパーティション(ある場合)の数。
すべてのパーティションが有効で、処理中のアクティビティを含まない索引の数。
このデータベース・インスタンスに対して検出されたテキスト索引の合計数。
また、「テキスト索引」ページを使用して、各テキスト索引の索引タイプ、所有者、同期化されていないドキュメントの数、ドキュメントの合計数、および断片化の割合を表示できます。
リストからテキスト索引を選択すると、その索引に対するオプションが使用可能となり、編集やアクションの実行が可能になります。
ドキュメントの索引付けと問合せの入力には、標準SQLを使用します。バッチDMLの実行にサーバーは不要です。CONTEXT
索引は、CTX_DDL
.SYNC_INDEX
プロシージャを使用するか、またはOracle Enterprise ManagerのText Managerから同期化できます。
Oracle Enterprise Managerのデータベース機能の使用状況統計では、様々なデータベース機能の使用頻度の概算が提供されます。この情報のトラッキングは、アプリケーションの開発および監視に役立ちます。「データベース機能の使用」にアクセスするには、Oracle Enterprise Managerの「サーバー」タブをクリックし、「データベース構成」グループの下にある「データベース機能の使用」を選択します。
Oracle Textの次の情報が収集されます。
パッケージ使用状況の統計で「データベース機能の使用」は、次のパッケージが使用されている場合、その頻度と時期に関する情報を取得します。
CTX_ADM
CTX_CLS
CTX_DDL
CTX_DOC
CTX_OUTPUT
CTX_QUERY
CTX_REPORT
CTX_THES
CTX_ULEXER
索引使用状況の統計で「データベース機能の使用」は、データベースに存在する索引の数を取得します。統計は、各索引タイプ(CONTEXT
、CTXCAT
およびCTXRULE
)ごとに個別に取得されます。
SQL演算子使用状況の統計で「データベース機能の使用」は、ユーザーによるCONTAINS
、CATSEARCH
およびMATCHES
の使用の有無を取得します。
注意: 機能の使用状況トラッキングは、完全に正確ではない場合があります。 |
Oracle Textの問合せをOracle RACノード間でパラレル化して、OLAPアプリケーションのスループットおよびパフォーマンスを最大にすることができます。前述の「Oracle Enterprise ManagerのText Manager」の項で説明しているように、Oracle Enterprise ManagerのText Manageを使用して、Oracle Text索引をOracle RACノード上で管理できます。