1

大規模な Oracle データベースの使用統計を収集しようとしています。DBA_TAB_MODIFICATIONS ビューを見て、INSERT、UPDATE、および DELETE の統計を確認することを知っています。しかし、select ステートメントだけではどうでしょうか。使用されたことのないテーブルを見つけようとしています。

SYS.DBA_HIST_SQLTEXT には、特定の期間実行された個々のクエリを格納する SQL_TEXT フィールドがあり、SQL_ID は PK です。テーブル名を選択するためにそれを解析することを考えましたが、それは面倒すぎるようです。別の代替手段を探しています。

何か案は?

4

1 に答える 1

3

かなり最近のバージョンの Oracle (9.2 以降と思われます) を使用していると仮定すると、V$SEGMENT_STATISTICSを見ることができます。これにより、セグメントごとにさまざまなパフォーマンス カウンターが表示されます。だけを見るとstatistic_name='logical reads'、どのテーブルがほとんど読み込まれていないかがわかります。もちろん、アプリケーションがテーブルをまったく使用しない場合でも、バックアップや再帰 SQL (つまり、外部キーの検証) などのためにログに記録される読み取りが存在する可能性は十分にあります。また、テーブルのセグメントがめったに読み取られず、そのテーブルのインデックスが頻繁に読み取られる可能性も十分にあります (つまり、インデックスは、アプリケーションがテーブルのデータに必要とするほとんどの種類のアクセスに十分対応できます)。

于 2012-06-05T18:07:44.563 に答える