
本記事の目的
リアルタイムADDMに関するメモです。
機能概要
マニュアル「2日でデータベース管理者」10 データベースの監視およびチューニングより、https://docs.oracle.com/cd/F19136_01/admqs/monitoring-and-tuning-the-database.html#GUID-4451EB5B-165F-4333-8941-489E5E5B3ECE
リアルタイムADDMは、リアルタイムで自動的にデータベースを監視します。
リアルタイムADDMでは、次のような多大な影響を与える一時的な問題がアプリケーション・パフォーマンスを脅かす前に、それらを事前に検出して診断します。
- 高CPU
- I/Oのスパイク
- メモリー
- インターコネクトの問題
- ハングおよびデッドロック
リアルタイムADDMは発生する可能性のあるパフォーマンスの問題を検出すると、データの収集をトリガーします。データはレポート・リポジトリ(AWRの一部)に保存されます。リアルタイムADDMレポートをEM Expressから表示すると、分析が実行され、結果と推奨事項が作成されます。リアルタイムADDMレポートはAWRに格納されるため、一定期間の問題の繰返しの識別に役立ちます。
ADDMレポート出力手順
※Enterprise Managerを利用した方が手軽に確認できるが、今回はSQL*Plusを利用する手順を確認。
ADDMレポートの取得状況確認
ADDMレポートの取得状況は、DBA_HIST_REPORTSを見れば確認できる。
DBA_HIST_REPORTS displays information about XML reports captured into Automatic Workload Repository (AWR).
The reports themselves belong to components such as SQL Monitor, DBOP, and Real-Time ADDM.
Each XML report contains details about some activity of a component. For example, a SQL Monitor report contains a detailed report about a particular execution of a SQL statement, or a Real-Time ADDM report contains system performance data analyzed by Real-Time ADDM.
・18c環境での確認例
SQL> SELECT snap_id, report_id, TO_CHAR(generation_time,'YY-MM-DD HH24:MI:DD') FROM dba_hist_reports WHERE component_name='perf' SNAP_ID REPORT_ID TO_CHAR(GENERATIO ---------- ---------- ----------------- 1275 4901 19-06-30 06:00:30 1339 5021 19-07-02 22:00:02 1363 5067 19-07-03 22:00:03 1387 5112 19-07-04 22:00:04 1411 5164 19-07-05 22:00:05 1419 5197 19-07-06 06:00:06 1443 5351 19-07-07 06:00:07★今回はこれを出力してみる
ADDMレポートの出力
rtaddmrpti.sqlにて出力可能。
・18c環境での確認例
SQL> @?/rdbms/admin/rtaddmrpti Instances in this Report reposistory ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Db Id Inst Num ---------- -------- 1534906505 1 Default to current database Enter value for dbid: Using database id: 1534906505★DBIDを指定 Enter begin time for report: -- Valid input formats: -- To specify absolute begin time: -- [MM/DD[/YY]] HH24:MI[:SS] -- Examples: 02/23/03 14:30:15 -- 02/23 14:30:15 -- 14:30:15 -- 14:30 -- To specify relative begin time: (start with '-' sign) -- -[HH24:]MI -- Examples: -1:15 (SYSDATE - 1 Hr 15 Mins) -- -25 (SYSDATE - 25 Mins) Default to -60 mins Enter value for begin_time: 06:00:06 ★開始時間は、出力対象レポートより前の時間を指定 Report begin time specified: 06:00:06 Enter duration in minutes starting from begin time: Defaults to SYSDATE - begin_time Press Enter to analyze till current time Enter value for duration:★終了時間は今回は指定せず Report duration specified: Using 07/07/2019 06:00:06 as report begin time Using 07/07/2019 11:38:06 as report end time Report ids in this workload repository. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DBID REPORT_ID TIME trigger_cause impact ---------- --------- -------------------- ------------------------- ---------- 1534906505 5351 07/07/2019 06:00:37 CPU Bound 2.07 ★出力対象のレポートが表示された Select a report id from the list. If the report id list is empty, please select a different begin time and end time. Enter value for report_id: 5351★IDを指定 Report id specified : 5351 Specify the Report Name ~~~~~~~~~~~~~~~~~~~~~~~~ The default report file name is rtaddmrpt_0707_1138.html. To use this name, press <return> to continue, otherwise enter an alternative. Enter value for report_name:★出力先ファイル名を指定。今回はデフォルトのまま Using the report name rtaddmrpt_0707_1138.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> (中略) Report written to rtaddmrpt_0707_1138.html SQL> exit Disconnected from Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production Version 18.6.0.0.0
ADDMレポートの出力結果確認
出力されたHTMLファイルをローカルPCにダウンロードすれば、EMから確認した場合とほぼ同じイメージのものが確認できる。
もちろんタブ変更可能。
・出力結果例
おまけ
遭遇したエラー
最初はrtaddmrpt.sqlを利用しようとしたが、以下のエラーが発生。
ERROR at line 1: ORA-20000: No valid reports found in the specified time range. Please specify a different begin and end time ORA-06512: at line 11
⇒デフォルトで指定されるレポート出力期間内に出力可能なADDMレポートがなかったことが原因?
別の出力方法
マニュアルの記載だと、DBMS_ADDM.real_time_addm_report でも出力できそうだったが、解読不能なHTMLが出力されたので今回は深追いせず。
・出力用SQLのみメモ
SQL> SET LONG 1000000 LONGCHUNKSIZE 1000000 SET LINESIZE 5000 PAGESIZE 0 SET TRIM ON TRIMSPOOL ON SET ECHO OFF FEEDBACK OFF SELECT DBMS_ADDM.real_time_addm_report FROM dual;
参考情報
・津島博士のパフォーマンス講座 第67回 AWRの分析について
AWRスナップショットごとのADDMよりも細かい間隔で診断できるようになりました。
これまでのADDMは、AWRスナップショットが取得されたときに実行されていましたが、MMONプロセスによって3秒間隔で自動的に実行され、メモリー内のASHデータを使用して、データベース内のパフォーマンス・スパイクが診断されるようになりました。ただし、常に診断すると負荷が大きいので、MMONプロセスが以下の問題(多大な影響を与える一時期な問題)を検出すると、リアルタイムADDM分析をトリガーするようになっています。
問題 条件 高負荷 平均のアクティブ・セッション数が、CPUコア数の3倍を超えている I/Oバウンド 単一ブロック読取りパフォーマンスがアクティブ・セッションの基準を超えている CPUバウンド アクティブ・セッションの合計負荷が10%、CPU使用率が50%を超えている メモリーの過剰割当て メモリー割当てが物理メモリーの95%を超えている インターコネクト・バウンド 単一ブロックのインターコネクト転送時間の基準を超えている セッション制限 セッション制限が100%に近い プロセス制限 プロセス制限が100%に近い ハング・セッション ハング・セッションが合計セッションの10%を超えている デッドロックの検出 デッドロックが検出された
・Real-Time Automatic Database Diagnostics Monitor (ADDM) in Oracle Database 12c Release 1 (12.1)
Leave a Reply