2016-08-15 17 views
1

私たちは、様々なテーブルに対するINSERT/UPDATE/DELETEステートメントに関してかなりのデータベース活動を実行するシステムを持っています。このため、統計は古くなり、これは全体のパフォーマンスに反映されます。Oracle GATHER_SCHEMA_STATSのしくみ

定期的にDBMS_STATS.GATHER_SCHEMA_STATSを呼び出す予定のジョブを作成します。私たちは自分自身を集め、実際の統計は、システム処理に影響を与えたくないので、さらに、我々はかなり頻繁に統計を収集し、GATHER STALEオプションを使用することを考えている:

DBMS_STATS.GATHER_SCHEMA_STATS(OWNNAME => 'MY_SCHEMA', OPTIONS =>'GATHER STALE') 

これは、ほぼ瞬時に実行されるが、前以下、この文を実行すると、 統計が収集した後、同じ値と同じレコードを戻すようだ:

SELECT * FROM user_tab_modifications WHERE inserts + updates + deletes > 0; 

実行するために取って非常に短い時間とUSER_TAB_MODIFICATIONS内容は同じままという事実をOPTIONS =>'GATHER STALE'が実際に行うべきことを期待しているかどうか私に質問します。私は後に陳腐としてもはや報告再前に古くなったと報告表を参照してくださいすることができ集める前に再度これを実行して、後の統計一方:他の一方で

DECLARE 
    stale dbms_stats.objecttab; 
BEGIN 
    DBMS_STATS.GATHER_SCHEMA_STATS(ownname => 'MY_SCHEMA', OPTIONS =>'LIST STALE', objlist => stale); 
    FOR i in 1 .. stale.count 
    LOOP 
    dbms_output.put_line(stale(i).objName); 
    END LOOP; 
END; 

場合my_tableがあると言うことができます私のテーブルの1つがuser_tab_modificationsの一部であるテーブルの一部として表示されていて、inserts + updates + deletes > 0と表示されていましたが、私はmy_tableが変更されたと報告されなくなっています。

EXECUTE DBMS_STATS.GATHER_TABLE_STATS(ownname => 'MY_SCHEMA', tabname => 'MY_TABLE'); 

だから私の質問は以下のとおりです。

  1. は正しい私のアプローチです。 options => 'GATHER STALE'を実行するだけで新しい統計情報が得られると信じてもいいですか、適切な数の挿入、更新、削除が戻ってくるすべてのテーブルの統計情報を手動で収集する必要がありますか?
  2. user_tab_modificationsが実際にリセットされるとき。明らかにGATHER STALEオプションが

それを行うにはいないようです私たちは、Oracle Database 11g Enterprise Editionのリリース11.2.0.3.0を使用している - 64ビットの生産

+0

なぜ私の質問にはプログラミングが行われていないことが示されているのか分かりません。 DBMS_STATSはOracleパッケージであり、これを使用する最良の方法は何かを知りたい。 – Julian

答えて

0

は、Oracle docsから次の情報を手に入れました。

GATHER_DATABASE_STATSまたはGATHER_SCHEMA_STATSをGATHER AUTOまたはGATHER STALEオプションとともに使用する場合は、監視を有効にする必要があります。

このビューのUSER_TAB_MODIFICATIONSは、MONITORING属性を持つ表に対してのみ設定されます。これは、長期間の統計収集を目的としています。パフォーマンス上の理由から、実際の変更が発生した場合、Oracle Databaseはこのビューをすぐに移入しません。 DBMS_STATS PL/SQLパッケージでFLUSH_DATABASE_MONITORING_INFOプロシージャを実行し、このビューに最新の情報を移入します。このプロシージャーを実行するには、ANALYZE_ANYシステム特権が必要です。

希望するものが間違っているかどうかを特定し、「GATHER STALE」の正しい使い方を理解するのに役立ちます。

関連する問題