Oracle Databaseにおけるパフォーマンス分析の第一歩は、AWR(Automatic Workload Repository)スナップショットの取得と分析です。
本記事では、AWRスナップショットの出力手順に加え、実際の出力例をもとにどの項目を見て、どう分析すればよいかを詳しく解説します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
◆ AWRスナップショットとは?
AWRスナップショットは、Oracleが一定間隔で自動取得する性能情報の記録(静止画)です。2つのスナップショット間の差分から、対象時間帯の負荷や問題点を把握できます。
◆ スナップショットの一覧を確認する
まずはスナップショットIDを把握します。
SELECT SNAP_ID, BEGIN_INTERVAL_TIME, END_INTERVAL_TIME
FROM DBA_HIST_SNAPSHOT
ORDER BY SNAP_ID;
SQL> SELECT SNAP_ID, BEGIN_INTERVAL_TIME, END_INTERVAL_TIME
2 FROM DBA_HIST_SNAPSHOT
3 ORDER BY SNAP_ID;
SNAP_ID BEGIN_INTERVAL_TIME END_INTERVAL_TIME
---------- ---------------------------------------- ----------------------------------------
1 25-04-04 14:12:46.000 25-04-04 14:23:47.061
2 25-04-04 14:23:47.061 25-04-04 15:00:07.267
3 25-04-04 15:00:07.267 25-04-04 16:00:35.029
4 25-04-04 16:00:35.029 25-04-04 17:00:49.228
5 25-04-04 17:00:49.228 25-04-04 18:00:03.047
6 25-04-04 18:00:03.047 25-04-04 19:00:17.300
6行が選択されました。
◆ AWRレポートを出力する(awrrpt.sql)
SQL*Plusから以下のスクリプトを実行します。
@?/rdbms/admin/awrrpt.sql
SQL> @?/rdbms/admin/awrrpt.sql
Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
AWR reports can be generated in the following formats. Please enter the
name of the format at the prompt. Default value is 'html'.
'html' HTML format (default)
'text' Text format
'active-html' Includes Performance Hub active report
report_typeに値を入力してください: text ★htmlかtextを指定
旧 1: select 'Type Specified: ',lower(nvl('&&report_type','html')) report_type from dual
新 1: select 'Type Specified: ',lower(nvl('text','html')) report_type from dual
Type Specified: text
旧 1: select '&&report_type' report_type_def from dual
新 1: select 'text' report_type_def from dual
旧 1: select '&&view_loc' view_loc_def from dual
新 1: select 'AWR_PDB' view_loc_def from dual
Current Instance
~~~~~~~~~~~~~~~~
DB Id DB Name Inst Num Instance Container Name
-------------- -------------- -------------- -------------- --------------
2957249400 V19 1 v19 v19
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
------------ ---------- --------- ---------- ------
* 2957249400 1 V19 v19 v19single
Using 2957249400 for database Id
Using 1 for instance number
Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed. Pressing <return> without
specifying a number lists all completed snapshots.
num_daysに値を入力してください: 7 ★表示するスナップショット日数を指定
Listing the last 7 days of Completed Snapshots
Instance DB Name Snap Id Snap Started Snap Level
------------ ------------ ---------- ------------------ ----------
v19 V19 1 04 4月 2025 14:23 1
2 04 4月 2025 15:00 1
3 04 4月 2025 16:00 1
4 04 4月 2025 17:00 1
5 04 4月 2025 18:00 1
6 04 4月 2025 19:00 1
7 04 4月 2025 20:00 1
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
begin_snapに値を入力してください: 3 ★出力するスナップショットの開始位置を指定
Begin Snapshot Id specified: 3
end_snapに値を入力してください: 4 ★終了位置を指定
End Snapshot Id specified: 4
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrrpt_1_3_4.txt. To use this name,
press <return> to continue, otherwise enter an alternative.
report_nameに値を入力してください: awr01.txt ★出力するレポート名を指定
Using the report name awr01.txt
:
その他の情報
------
ADDMを実行している重要なデータベース・アクティビティはありませんでした。
End of Report
Report written to awr01.txt
SQL> exit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0との接続が切断されました。
[oracle@v19single ~]$ ls
awr01.txt ★出力されている
[oracle@v19single ~]$
実行時の流れ:
- 出力形式(HTMLまたはTEXT)を選択
- インスタンス番号を指定(通常「1」)
- 開始・終了スナップショットIDを選択
- 出力ファイル名を指定
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
◆ 出力結果の分析方法【実例ベース】
以下は、実際に取得されたAWRスナップショット(awr01.txt)の抜粋です。この内容をもとに、重要な分析ポイントを解説します。
【スナップショット出力例】
WORKLOAD REPOSITORY report for
DB Name DB Id Unique Name DB Role Edition Release RAC CDB
------------ ----------- ----------- ---------------- ------- ---------- --- ---
V19 2957249400 v19 PRIMARY EE 19.0.0.0.0 NO NO
Instance Inst Num Startup Time User Name System Data Visible
------------ -------- --------------- ------------ --------------------
v19 1 04-4月 -25 14:12 SYS YES
Host Name Platform CPUs Cores Sockets Memory(GB)
---------------- -------------------------------- ---- ----- ------- ----------
v19single Linux x86 64-bit 1 1 1 3.56
Snap Id Snap Time Sessions Curs/Sess
--------- ------------------- -------- ---------
Begin Snap: 3 04-4月 -25 16:00:35 48 1.2
End Snap: 4 04-4月 -25 17:00:49 48 1.2
Elapsed: 60.24 (mins)
DB Time: 0.00 (mins)
Load Profile Per Second Per Transaction Per Exec Per Call
~~~~~~~~~~~~~~~ --------------- --------------- --------- ---------
DB Time(s): 0.0 0.0 0.00 0.00
DB CPU(s): 0.0 0.0 0.00 0.00
Background CPU(s): 0.0 0.8 0.00 0.00
Redo size (bytes): 1,167.0 234,319.8
Logical read (blocks): 19.2 3,863.3
Block changes: 4.0 801.8
Physical read (blocks): 0.0 4.8
Physical write (blocks): 0.3 60.5
Read IO requests: 0.0 4.8
Write IO requests: 0.1 27.4
Read IO (MB): 0.0 0.0
Write IO (MB): 0.0 0.5
IM scan rows: 0.0 0.0
Session Logical Read IM: 0.0 0.0
User calls: 0.0 4.3
Parses (SQL): 1.0 197.4
Hard parses (SQL): 0.2 30.4
SQL Work Area (MB): 0.0 3.4
Logons: 0.0 1.9
User logons: 0.0 0.0
Executes (SQL): 3.2 641.5
Rollbacks: 0.0 0.0
Transactions: 0.0
Instance Efficiency Percentages (Target 100%)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Buffer Nowait %: 100.00 Redo NoWait %: 100.00
Buffer Hit %: 99.87 In-memory Sort %: 100.00
Library Hit %: 85.00 Soft Parse %: 84.58
Execute to Parse %: 69.23 Latch Hit %: 100.00
Parse CPU to Parse Elapsd %: 41.10 % Non-Parse CPU: 95.33
Flash Cache Hit %: 0.00
Top 10 Foreground Events by Total Wait Time
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Total Wait Avg % DB Wait
Event Waits Time (sec) Wait time Class
------------------------------ ----------- ---------- --------- ------ --------
DB CPU .1 71.4
log file sync 3 0 2.83ms 4.3 Commit
PGA memory operation 84 0 4.92us .2 Other
ADR block file read 0 0 .0 Other
ADR block file write 0 0 .0 Other
ADR file lock 0 0 .0 Other
AWR Flush 0 0 .0 Other
DLM cross inst call completion 0 0 .0 Other
Data file init write 0 0 .0 User I/O
Disk file operations I/O 0 0 .0 User I/O
🔍 1. 初期チェック(スナップ間の活動量)
Elapsed: 60.24 (mins)
DB Time: 0.00 (mins)
解説:
- Elapsed:スナップショット間の実時間(60分)
- DB Time:ユーザーによる実行時間の合計
→ この場合、DB Timeが0のため、ほぼ活動が無かった時間帯であり、本格的な性能分析には適さないタイミングであることがわかります。
🔍 2. Load Profile(基本負荷情報)
Redo size (bytes): 1,167.0
Logical read (blocks): 19.2
Parses (SQL): 1.0
Hard parses (SQL): 0.2
Executes (SQL): 3.2
主な分析項目と見るべきポイント:
| 項目名 | 内容 | 観察ポイント |
|---|---|---|
| Redo size | トランザクション処理の多さ | 値が大きいと更新処理が多い |
| Logical read | メモリ内の読み取り数 | 高いとバッファキャッシュの使用多め |
| Parses / Hard Parses | SQLのパース回数 | Hard Parseの割合が高いと性能に悪影響 |
| Executes | SQL実行回数 | 異常な増加はアプリ側を疑う |
🔍 3. Instance Efficiency Percentages
Buffer Hit %: 99.87
Library Hit %: 85.00
Soft Parse %: 84.58
Execute to Parse %: 69.23
観察ポイント:
| 指標 | 内容 | 目安と分析 |
|---|---|---|
| Buffer Hit % | メモリ内の読み取り率 | 95%以上が理想(99%は良好) |
| Library Hit % | SQLの再利用率 | 低いとSoft Parseが多い(85%はやや低め) |
| Execute to Parse % | パースを省略できた割合 | 高いほど効率的(70%未満は注意) |
→ この例では、Library HitやExecute to Parseがやや低いため、SQLの使い回しに課題があると判断できます。
🔍 4. Top Wait Events(待機イベント)
Top 10 Foreground Events:
DB CPU 0.1 sec (71.4%)
log file sync 3回、平均2.83ms
重要な観察ポイント:
| イベント | 意味 | 問題の兆候 |
|---|---|---|
| DB CPU | CPU利用時間 | 高い比率は正常。主にCPU処理中心の負荷 |
| log file sync | コミット時のログ同期 | 発生数が多く、待機時間が長いとログI/Oに問題がある可能性 |
→ このケースでは、DB CPUが主な処理時間を占めており、log file syncの影響は小さい(軽微)と判断できます。
◆ まとめ:AWRスナップショット分析の流れ
| 手順 | 内容 |
|---|---|
| ① | DBA_HIST_SNAPSHOTでスナップIDを確認 |
| ② | awrrpt.sqlでレポートを出力 |
| ③ | Load Profile・Wait Events・SQL統計を見る |
| ④ | 正常時と比較して違いを特定する |
◆ 補足:DB Timeが少ない場合の注意
今回の出力結果に含まれる警告:
WARNING: Since the DB Time is less than one second, there was
minimal foreground activity in the snapshot period.
このような場合、性能分析に必要なデータが十分に収集されていない可能性があるため、より負荷のある時間帯を対象にスナップショットを取得し直すのが望ましいです。
[参考]
6 データベース統計の収集 – Database




コメント