Oracle Databaseの自動セグメントアドバイザ (2022/07/01)
Oracle Databaseの自動セグメントアドバイザ (2022/07/01)
https://juliandontcheff.wordpress.com/2022/07/01/automatic-segment-advisor-in-the-oracle-database/
「私の経験から、最高のアドバイザーは3つの点で役に立ちます。『問題や機会を多角的に見るよう促すこと』『目先のことと重要な長期的優先事項のバランスを取るのを助けること』『最善の解決策にたどり着くために知っておくべき厳しい質問をすること』です」。Margo Georgiadis氏
Oracle Segment Advisorは、再生可能なスペースを持つセグメントを特定する。しかし、Automatic Segment Advisorは、時にリソースを消費し、データベースの速度を低下させることがあります。
Automatic Segment Advisorはすべてのデータベースオブジェクトを解析しているわけではありませんが、なぜこのような現象が起こるのでしょうか?内部的には次のように動作します。アドバイザはデータベースの統計情報を調査し、セグメントデータをサンプリングして、次のオブジェクトを選択して分析します。
- クリティカルまたはワーニングスペースの閾値を超えた表領域
- 最もアクティビティの多いセグメント
- 成長率が最も高いセグメント
さらに、Automatic Segment Advisorは、サイズが10MB以上で、3つ以上のインデックスを持つテーブルを評価し、そのテーブルを高度な行圧縮機能で圧縮した場合に節約できる容量を判断します。
ここで重要なのは、もしデータベースオブジェクトがアドバイザーの分析対象として選択されても、アドバイザーがオブジェクトを処理する前にメンテナンスウィンドウが終了した場合、そのオブジェクトは次のAutomatic Segment Advisorの実行に含まれることです。そのため、ある時点で、たくさんのオブジェクトを分析しなければならない状況になることがあります。メンテナンスウィンドウの間、以下のクライアント/タスクが実行されています。これらはあらかじめ定義された自動メンテナンスタスクです。
Automatic Segment Advisorが分析のために選択する表領域とセグメントのセットを変更できないため、自動スペースアドバイザを無効にすることが理にかなっている場合があります。しかし、自動セグメントアドバイザータスクを有効または無効にしたり、自動セグメントアドバイザが実行される時間帯を変更したり、自動メンテナンスタスクのシステムリソース使用率を調整したりすることはできます。特にこのような場面で
また、ADDMがAutomatic Segment Advisorタスクの問題を指摘することもよくあります。
ここでは、タスクを個別に無効化(および有効化)する方法を説明します。メインスイッチは DBMS_AUTO_TASK_ADMIN.DISABLE() で制御します。
DBMS_AUTO_TASK_ADMIN.DISABLE() を実行してオートタスクジョブ全体を無効にしても、DBA_AUTOTASK_TASK はオートタスククライアントを有効として表示したままです。このため、上記のようにジョブを個別に無効化する必要があります。また、マルチテナント環境では、CDBとPDBがそれぞれオートタスクを持っており、CDBのオートタスクを無効にしてもPDBには影響しないので、プラグイン可能なデータベースごとに行う必要があります。
12.2以降では、ENABLE_AUTOMATIC_MAINTENANCE_PDBというパラメータがあり、CDB内のすべてのPDBまたはCDB内の個々のPDBに対して自動メンテナンスタスクの実行を有効または無効にするために使用することができるようになっています。CDBルートでENABLE_AUTOMATIC_MAINTENANCE_PDBをTRUEからFALSEに変更すると、新しい値FALSEがルートとCDB内のすべてのPDBに適用されます。
Automatic Segment Advisorが多くのリソースを消費し、メンテナンスウィンドウの間にデータベースが遅くなるような状況に陥った場合、以下のいずれかを行ってください。
- セグメントアドバイザの自動タスククライアントを無効にして、必要に応じて手動で実行する。
- メンテナンスウィンドウをデフォルトの月曜から金曜の午後10時から午前2時までから増やします。週末のウィンドウは20時間で、ほとんどの場合、十分な長さです。
Autonomous Databaseでは、dba_autotask_clientなどにアクセスでき、Automatic Segment Advisorタスクを無効にしたり有効にしたりできますが、dba_scheduler_window_groupsなどについては完全な可視性は持っていません。いくつかのカラムはNULLとして表示されるだけです。それでも、ADBのパフォーマンスタスクは、何が起こっているかについてのいくつかのアイデアを与えることができます。
最後に、Automatic Segment Advisor ジョブを無効にする必要があるその他の状況について説明します。
- オブジェクト wri$_adv_objspace_trend_data で Automatic Segment Advisor ジョブを実行中に ORA-01555 が発生しました(Doc ID 2576430.1)
- Automatic Segment Advisorジョブがデッドロックを引き起こすことがある (Doc ID 17234189.8)
- 再帰的なクエリに時間がかかるため、Automatic Segment Advisor にさらに時間がかかる (Doc ID 2382419.1)
- 12.2Auto Space AdvisorジョブでORA-60が発生する (Doc ID 2321020.1)
- LOB または SYS_LOB SEGMENT に対して SEGMENT ADVISOR が期待どおりに動作しない (Doc ID 988744.1)
コメント
コメントを投稿