この章では、PL/SQLパッケージCTX_OUTPUT
の使用方法について説明します。
CTX_OUTPUT
には、次のストアド・プロシージャが含まれています。
名前 | 説明 |
---|---|
ADD_EVENT |
索引ログにイベントを追加します。 |
ADD_TRACE |
トレースを使用可能にします。 |
DISABLE_QUERY_STATS |
索引の問合せ統計の収集をオフに切り替えます。 |
ENABLE_QUERY_STATS |
索引の問合せ統計の収集を使用可能にします。 |
END_LOG |
索引およびドキュメント・サービスの要求のロギングを停止します。 |
END_QUERY_LOG |
ログ・ファイルへの問合せのロギングを停止します。 |
GET_TRACE_VALUE |
トレースの値を戻します。 |
LOG_TRACES |
トレースをログ・ファイルに出力します。 |
LOGFILENAME |
現在のログ・ファイルの名前を戻します。 |
REMOVE_EVENT |
索引ログからイベントを削除します。 |
REMOVE_TRACE |
トレースを使用不可にします。 |
RESET_TRACE |
トレースを消去します。 |
START_LOG |
索引およびドキュメント・サービスの要求のロギングを開始します。 |
START_QUERY_LOG |
問合せのログ・ファイルを作成します。 |
詳細なログ出力を表示するために、イベントを索引ログに追加します。
構文
CTX_OUTPUT.ADD_EVENT(event in NUMBER);
ロギングする索引イベントの型を指定します。次のイベントを追加できます。
CTX_OUTPUT.EVENT_INDEX_PRINT_ROWID
: 索引付けが終了した各行のROWIDをロギングします。これは、失敗した索引操作のデバッグに有効です。
CTX_OUTPUT.EVENT_OPT_PRINT_TOKEN
: 各トークンが最適化されるたびに出力します。
CTX_OUTPUT.EVENT_INDEX_PRINT_TOKEN
: 各トークンが索引付けされるたびに出力します。
例
begin CTX_OUTPUT.ADD_EVENT(CTX_OUTPUT.EVENT_INDEX_PRINT_ROWID); end;
関連項目
トレースを使用可能にします。トレースが使用可能でない場合、このコールにより、トレースがアクティブなトレースのリストに追加され、値が0(ゼロ)にリセットされます。トレースがすでに使用可能になっている場合、エラーが発生します。
構文
CTX_OUTPUT.ADD_TRACE(trace_id BINARY_INTEGER);
使用可能にするトレースのIDを指定します。有効なトレース値は、表9-1を参照してください。
注意
表9-1は、有効なトレースを示しています。
表9-1 有効なトレース
記号 | ID | メトリック |
---|---|---|
|
1 |
ユーザー・データストアの実行に要した時間 |
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
トークン・メタデータが |
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
15 |
|
トレースはロギングから独立しています。トレースの開始にはロギングがオンになっている必要はなく、その逆も同じです。
トレースはセッションに関連付けられています。1つのセッション内で発生する操作は測定できますが、逆にセッション全体にわたる測定はできません。
パラレル同期化または最適化の際、トレースが現在有効になっている場合にかぎり、トレース・プロファイルはスレーブ・セッションにコピーされます。各スレーブは独自のトレースを蓄積し、終了前にすべてのトレース値をスレーブ・ログ・ファイルに暗黙的に書き込みます。
関連項目
索引の問合せ統計の収集を使用不可にします。
構文
ctx_output.disable_query_stats( index_name IN VARCHAR2 );
問合せ統計の収集を使用不可にする索引の名前。
例
索引myindex
の問合せ統計の収集をオフに切り替えます。
CTX_OUTPUT.DISABLE_QUERY_STATS(myindex);
注意
索引の問合せ統計を使用不可にすると、その索引の問合せに関連するメタデータの収集と格納が停止されます。その索引に対応するすべてのエントリは、ディクショナリ表から消去されます。問合せ統計が使用可能でない索引に対してこのプロシージャをコールすると、エラーが戻ります。
関連項目
「CTX_OUTPUT.ENABLE_QUERY_STATS」および「CTX_REPORT.INDEX_STATS」
索引の問合せ統計の収集を使用可能にします。索引の問合せに関連するメタデータを保存する場合は、このプロシージャを使用して、その索引に対する統計の収集を使用可能にします。 索引のctx_output.enable_query_stats
がオンになっている場合にのみ、収集されたメタデータにアクセスできます。
注意: 問合せ統計メタデータへのアクセスは、索引の ctx_output.enable_query_stats がオンになっている場合にのみ機能します。収集される問合せ統計メタデータのリストは、「CTX_REPORT.INDEX_STATS」を参照してください。 |
構文
ctx_output.enable_query_stats( index_name IN VARCHAR2 );
問合せ統計の収集を使用可能にする索引の名前。
例
索引myindex
の問合せ統計の収集をオンに切り替えます。
CTX_OUTPUT.ENABLE_QUERY_STATS(myindex);
注意
索引の問合せ統計が使用可能かどうかを示す情報は、CTX_INDEXES
ビューおよびCTX_USER_INDEXES
ビューのidx_query_stats_enabled
列で確認できます。 索引のquery_stats
が使用可能な場合は、その列に「YES」が表示され、使用可能でない場合は「NO」が表示されます。
問合せ統計に対応するデータは、永続的なディクショナリ表に格納されます。特定の索引に対してstatistics
が使用可能になると、その索引について全セッションから問合せ統計が収集されます。
問合せ統計がすでに使用可能になっている索引に対してこのプロシージャをコールすると、エラーが発生します。
統計収集は、問合せのパフォーマンスにわずかな影響を与えます。
関連項目
「CTX_OUTPUT.DISABLE_QUERY_STATS」および「CTX_REPORT.INDEX_STATS」
CTX_OUTPUT.START_QUERY_LOGで作成されたログ・ファイルへの問合せのロギングを停止します。
構文
ctx_output.end_query_log;
例
begin
CTX_OUTPUT.START_QUERY_LOG('mylog1'); < get queries > CTX_OUTPUT.END_QUERY_LOG;
end;
トレースの現行値をプログラムによって取得します。
構文
CTX_OUTPUT.GET_TRACE_VALUE(trace_id BINARY_INTEGER);
値を取得するトレースIDを指定します。有効な値は、表9-1「有効なトレース」を参照してください。
例
これにより、変数valueの値を設定します。
value := ctx_output.get_trace_value(trace_id);
注意
SQLを使用してもトレース値を取得できます。
select * from ctx_trace_values;
CTX_TRACE_VALUES
ビューのエントリは、「CTX_TRACE_VALUES」を参照してください。
トレースが使用可能でない場合は、エラーが発生します。
このコールでは、トレースは0(ゼロ)にリセットされません。
トレースはセッションに関連付けられています。1つのセッション内で発生する操作は測定できますが、逆にセッション全体にわたる測定はできません。
関連項目
すべてのアクティブなトレースをログ・ファイルに出力します。
構文
CTX_OUTPUT.LOG_TRACES;
注意
ロギングが開始されていない場合は、エラーが発生します。
このコールでは、トレースは0(ゼロ)にリセットされません。
このプロシージャは、LOG_DIRECTORY
システム・パラメータで指定したディレクトリ(UNIXでは$ORACLE_HOME/ctx/log
)の中でログ・ファイルを検索します。現在の設定を確認するにはCTX_PARAMETERS
ビューを問い合せます。
関連項目
現在のログのファイル名を戻します。このプロシージャは、LOG_DIRECTORY
システム・パラメータで指定したディレクトリ(UNIXでは$ORACLE_HOME/ctx/log
)の中でログ・ファイルを検索します。現在の設定を確認するにはCTX_PARAMETERS
ビューを問い合せます。
構文
CTX_OUTPUT.LOGFILENAME RETURN VARCHAR2;
戻り値
ログ・ファイル名です。
例
declare logname varchar2(100); begin logname := CTX_OUTPUT.LOGFILENAME; dbms_output.put_line('The current log file is: '||logname); end;
索引ログからイベントを削除します。
構文
CTX_OUTPUT.REMOVE_EVENT(event in NUMBER);
ログから削除する索引イベントの型を指定します。次のイベントを削除できます。
CTX_OUTPUT.EVENT_INDEX_PRINT_ROWID
: 索引付けが終了した各行のROWIDをロギングします。これは、失敗した索引操作のデバッグに有効です。
CTX_OUTPUT.EVENT_OPT_PRINT_TOKEN
: 各トークンが最適化されるたびに出力します。
CTX_OUTPUT.EVENT_INDEX_PRINT_TOKEN
: 各トークンが索引付けされるたびに出力します。
例
begin
CTX_OUTPUT.REMOVE_EVENT(CTX_OUTPUT.EVENT_INDEX_PRINT_ROWID);
end;
関連項目
トレースを使用不可にします。
構文
CTX_OUTPUT.REMOVE_TRACE(trace_id BINARY_INTEGER);
使用不可にするトレースのIDを指定します。有効な値は、表9-1「有効なトレース」を参照してください。
注意
トレースが使用可能でない場合は、エラーが発生します。
関連項目
トレースを消去します(つまり0(ゼロ)にリセットします)。
構文
CTX_OUTPUT.RESET_TRACE(trace_id BINARY_INTEGER);
リセットするトレースのIDを指定します。有効な値は、表9-1「有効なトレース」を参照してください。
注意
トレースが使用可能でない場合は、エラーが発生します。
関連項目
索引およびドキュメント・サービスの要求のロギングを開始します。
構文
CTX_OUTPUT.START_LOG(logfile in varchar2, overwrite in default true);
ログ・ファイルの名前を指定します。ログは、システム・パラメータLOG_DIRECTORY
で指定したディレクトリに格納されています。
logfileで指定された元の問合せログ・ファイル(すでに存在する場合)を上書きするか、またはそこに追加するかを指定します。デフォルトは、元の問合せログ・ファイルの上書きです。
例
begin CTX_OUTPUT.START_LOG('mylog1'); end;
注意
ロギングはトレースから独立しています。トレースの開始にはロギングがオンになっている必要はなく、その逆も同じです。
ロギングはセッションに関連付けられています。1つのセッション内で発生する操作はログに記録できますが、逆にセッション全体にわたる操作はログに記録できません。
CTX_OUTPUT.START_LOG
に使用されるファイル名の文字は、英数字、マイナス記号、ピリオド、スペース、ハッシュ記号、アンダースコア、一重引用符および二重引用符に制限されています。ファイル名にその他の文字が使用されていると、エラーが発生します。
問合せログ・ファイルへの問合せ要求のロギングを開始します。
問合せのロギングを停止するには、CTX_OUTPUT.END_QUERY_LOG
を使用します。どの問合せが最も頻繁に正常に戻されたかなど、ログに記録された問合せに関するレポートを取得するには、CTX_REPORT.QUERY_LOG_SUMMARY
を使用します。
問合せログには、問合せ文字列、索引名、問合せのタイムスタンプ、および問合せがヒットを戻したかどうかが含まれます。2003年4月2日18:46(現地時間)、Blues Guitaristsという句に対する問合せが成功した場合、問合せログに次の形式で入力されます。
<QuerySet><TimeStamp>18:46:51 02/04/03</TimeStamp><IndexName> IDX_SEARCH_TABLE</IndexName><Query>Blues Guitarists</Query><ReturnHit>Yes</ReturnHit></QuerySet>
構文
CTX_OUTPUT.START_QUERY_LOG(logfile in varchar2, overwrite in default true);
問合せログ・ファイルの名前を指定します。問合せログは、システム・パラメータLOG_DIRECTORY
で指定したディレクトリに格納されています。
logfileで指定された元の問合せログ・ファイル(すでに存在する場合)を上書きするか、またはそこに追加するかを指定します。デフォルトは、元の問合せログ・ファイルの上書きです。
例
begin
CTX_OUTPUT.START_QUERY_LOG('mylog1'); < get queries > CTX_OUTPUT.END_QUERY_LOG;
end;
注意
CTX_OUTPUT.START_QUERY_LOG
に使用されるファイル名の文字は、英数字、マイナス記号、ピリオド、スペース、ハッシュ記号、アンダースコア、一重引用符および二重引用符に制限されています。ファイル名にその他の文字が使用されていると、エラーが発生します。
ロギングはセッションに関連付けられています。1つのセッション内で発生する操作はログに記録できますが、逆にセッション全体にわたる操作はログに記録できません。