2011-06-19 15 views
1

dbms_stats.gather_table_statsに関する簡単な質問があります。アプリケーションでは、このステートメントはテーブルのインデックスを作成した直後に発生します。それはdbms_stats.gather_table_statsに関する質問

 EXEC DBMS_STATS.GATHER_TABLE_STATS(< schemaname >, < tablename >)
と呼ばれます。 Oracle 10.2gを使用しています。今質問は正確に情報が収集されるのですか?それはテーブルのすべての更新時に、またはいくつかの基準が満たされたときに収集されますか?それとも、gather_table_statsをもう一度呼び出すときにだけ集まるのでしょうか?

答えて

5

統計情報は、パッケージの呼び出し時に収集されます(収集が完了するまでパッケージは返されません)。

通常、既存の統計情報が「stale」になっている統計情報を収集する自動ジョブがあります。監視のために選択された表には、挿入/削除/更新(dba_tab_modificationsで表示)にログされる余分なデータがあります。

行の10%が変更された場合、統計情報は「古く」なり、次の自動ジョブ中に再収集されます。 DBA_JOBSをチェックして、データベースが古い表の統計情報を収集するように構成されているかどうかを確認します(ヒント - 使用頻度の高い時間に行うのは避けてください)。

2

デフォルトの10gデータベースの統計情報を実行するGATHER_STATS_JOBスケジュールタスクは、GARYの妥当な回答に加えて、WEEKEND_WINDOWとWEEKNIGHT_WINDOWの2つの「メンテナンスウィンドウグループ」の間にデフォルトで実行するように設定されています。前者は土曜日の00:00に始まり、48時間運転し、後者は毎晩午後10時に始まり、8時間運転します。あなたの統計ジョブは、スケジュールやウィンドウを変更しない限り、その時間にのみ実行できます。これらのウィンドウは、お使いの環境に適している場合とそうでない場合があります。