Database Support Blog

この記事は JPOUG Advent Calendar 2015 の15日目のエントリです。

「SYSAUX表領域が大きなサイズになっているので、対処方法を教えて欲しい」といったお問い合わせをいただくことがあります。ORACLE DatabaseではAWRに代表されるように、ユーザが意識していなくてもデフォルトの設定で様々な情報を自動で収集し、SYSAUX表領域で管理しているものが複数あります。そのため、SYSAUX表領域内でどのような情報が管理されているのかを意識していないと、意図せず肥大化するケースがあります。

SYSAUX表領域が肥大化したというお問い合わせで原因となっていることの多い、統計情報の履歴保持に関するデフォルトの設定と、意図しない肥大化に備えた対処方法を紹介します。

統計情報の履歴保持によるSYSAUX表領域の使用率増加/肥大化

CBOが最適な実行計画を生成するためには統計情報を最新の状態にしておく必要があります。しかし、統計情報取得後の意図しないパフォーマンス劣化の発生や、過去の実行計画とのパフォーマンス差異を比較したいようなケースでは、以前の統計情報に戻したいというケースも存在します。DBMS_STATSパッケージによって取得された各表の統計情報は、このような取得以前の統計情報に戻したいというケースに備えてSYSAUX表領域内に履歴を保持します。

ORACLE DATABASEでは自動オプティマイザ統計収集という機能によって、新しく作成された表や10%以上の更新が加えられた表に対して自動で統計情報を収集しますが、この際にDBMS_STATSパッケージが利用されます。履歴情報はデフォルトの設定では31日まで遡ってリストアができるように保持されますので、データ更新の多いシステムなど、自動取得の対象となる表が多い環境では意図せずSYSAUX表領域の使用率増加/肥大化が発生することがあります。

SYSAUX表領域は様々な内部コンポーネントのデータが格納されているため表領域の再作成はサポートされておらず、肥大化したデータファイルの縮小は容易ではありません。そのため、ご利用の環境によっては統計情報をリストアする可能性を考慮して予め保持期限を短くする、あるいは、定期的に履歴情報を削除するといった対応を検討します。

保存期間の変更方法と確認方法

デフォルトの設定では次のうち、古い方の時間よりも前の履歴情報をMMONプロセスが1日1回削除します。そのため、特に意識をしていなければ31日分は統計情報の履歴が保持されます。

・統計情報の履歴保存期間(31日)
・DBA_TABLESで確認できるLAST_ANALYZED - 1日

履歴を残す期間を変更するにはDBMS_STATS.ALTER_STATS_HISTORY_RETENTIONプロシージャを使用します。


■本記事の内容について
 本記事に記載されている製品およびサービス、定義及び条件は、特段の記載のない限り本記事執筆時点のものであり、予告なく変更になる可能性があります。あらかじめご了承ください。

■商標に関して
 ・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
 ・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
  文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • EDB
  • PostgreSQL
2025.11.19

今さら聞けない!?WALアーカイブのベストプラクティス

PostgreSQL開発に多く貢献しているEnterpriseDB社による WALアーカイブ設定に関するベストプラクティスをご紹介します。

  • EDB
  • PostgreSQL
2025.04.16

PostgreSQLの拡張機能「system_stats」のご紹介

EDB社が提供するPostgreSQLの拡張機能「system_stats」はPostgreSQL ユーザーがパフォーマンス問題に取り組む際の非常に強力なツールになります。SQLクエリでOS情報を取得できるため、DBエンジニアにとってはパフォーマンスの監視が格段に簡単になります。テストした結果をご紹介します。

  • EDB
  • PostgreSQL
2025.03.10

意外な落とし穴!アプリケーション⇒DBデータ型によるパフォーマンス影響

PostgreSQLのオプティマイザがインデックスを適切に使用できない理由は様々ですが、本記事ではJDBC⇔PostgreSQL間でデータ型の不一致がインデックスの使用にどういった悪影響を及ぼすかを見ていきます

ページの先頭へ戻る