Beruflich Dokumente
Kultur Dokumente
ADDM is diagnostic software built into Oracle Database. ADDM examines and analyzes data
captured in Automatic Workload Repository (AWR) to determine possible database performance
problems. This document provides an insight of what this tool is and how it works.
Contents
...................................................................................................................................................................................................................................... 0
1. Introduction ....................................................................................................................................................................................................... 0
2. Overview of the Automatic Database Diagnostic Monitor.............................................................................................................. 2
3. ADDM Analysis .................................................................................................................................................................................................. 3
4. Using ADDM with Oracle Real Application Clusters .......................................................................................................................... 5
5. ADDM Analysis Results .................................................................................................................................................................................. 6
6. Reviewing the ADDM Analysis .................................................................................................................................................................... 6
7. Reviewing ADDM Analysis Results: Example ................................................................................................................................... 8
8. Setting Up ADDM ....................................................................................................................................................................................... 9
8.1 Setting the DBIO_EXPECTED Parameter ........................................................................................................................................10
9. Diagnosing Database Performance Problems with ADDM ...........................................................................................................10
9.1 Running ADDM in Database Mode .................................................................................................................................................11
9.2 Running ADDM in Instance Mode ...................................................................................................................................................11
9.3 Running ADDM in Partial Mode .......................................................................................................................................................12
9.4 Displaying an ADDM Report ..............................................................................................................................................................13
10. Views with ADDM Information ...............................................................................................................................................................13
11. Reviewing the ADDM Analysis ...............................................................................................................................................................14
12. Implementing ADDM Recommendations ..........................................................................................................................................16
1
1. Introduction
When problems occur with a system, it is important to perform accurate and timely diagnosis of the problem before
making any changes to a system. Oftentimes, a database administrator (DBA) simply looks at the symptoms and
immediately starts changing the system to fix those symptoms. However, an accurate diagnosis of the actual
problem in the initial stage significantly increases the probability of success in resolving the problem.
With Oracle Database, the statistical data needed for accurate diagnosis of a problem is stored in the Automatic
Workload Repository (AWR). ADDM is diagnostic software built into Oracle Database. ADDM examines and analyzes
data captured in Automatic Workload Repository (AWR) to determine possible database performance problems.
Automatic Database Diagnostic Monitor (ADDM) automatically detects and reports performance problems with the
database. The results are displayed as ADDM findings on the Database Home page in Oracle Enterprise Manager
Cloud Control. Reviewing the ADDM findings enables you to quickly identify the performance problems that require
your attention.
Each ADDM finding provides a list of recommendations for reducing the impact of the performance problem. You
should review ADDM findings and implement the recommendations every day as part of regular database
maintenance. Even when the database is operating at an optimal performance level, you should continue to use
ADDM to monitor database performance on an ongoing basis. As mentioned in the introduction, the statistical data
needed for accurate diagnosis of a problem is stored in the Automatic Workload Repository (AWR). ADDM is
diagnostic software built into Oracle Database. ADDM examines and analyzes data captured in Automatic Workload
Repository (AWR) to determine possible database performance problems. The Automatic Database Diagnostic
Monitor (ADDM):
ADDM examines and analyzes data captured in Automatic Workload Repository (AWR) to determine possible
database performance problems. ADDM then does the following:
Because AWR is a repository of historical performance data, ADDM can analyze performance issues after the event,
often saving time and resources in reproducing a problem. In most cases, ADDM output should be the first place
that a DBA looks when notified of a performance problem. ADDM provides the following benefits:
It is important to realize that tuning is an iterative process, and fixing one problem can cause the bottleneck to shift
to another part of the system. Even with the benefit of ADDM analysis, it can take multiple tuning cycles to reach
acceptable system performance. ADDM benefits apply beyond production systems; on development and test
systems, ADDM can provide an early warning of performance issues.
3. ADDM Analysis
An ADDM analysis can be performed on a pair of AWR snapshots and a set of instances from the same database.
The pair of AWR snapshots define the time-period for analysis, and the set of instances define the target for analysis.
The ADDM reports are much simpler to read than those of AWR or STATSPACK, making them a useful method for
identifying resource intensive SQL and PL/SQL.
If you are using Oracle Real Application Clusters (Oracle RAC), ADDM has three analysis modes:
Database
Instance
Partial
If you are not using Oracle RAC, ADDM can only function in Instance mode because there is only one instance of
the database.
An ADDM analysis is performed each time an AWR snapshot is taken and the results are saved in the database. The
time period analyzed by ADDM is defined by the last two snapshots (the last hour by default). ADDM will always
analyze the specified instance in Instance mode. For non-Oracle RAC or single instance environments, the analysis
performed in the Instance mode is the same as a database-wide analysis. If you are using Oracle RAC, ADDM will
also analyze the entire database in Database mode. After an ADDM completes its analysis, you can view the results
using Oracle Enterprise Manager, or by viewing a report in a SQL*Plus session.
By reducing DB time, the database is able to support more user requests using the same resources, which increases
throughput. The problems reported by ADDM are sorted by the amount of DB time they are responsible for. System
areas that are not responsible for a significant portion of DB time are reported as non-problem areas.
Undersized Memory Structures - Are the Oracle Database memory structures, such as the SGA, PGA, and
buffer cache, adequately sized?
High load SQL statements - Are there any SQL statements which are consuming excessive system resources?
High load PL/SQL execution and compilation, and high-load Java usage
Oracle RAC specific issues - What are the global cache hot blocks and objects; are there any interconnect
latency issues?
Sub-optimal use of Oracle Database by the application - Are there problems with poor connection
management, excessive parsing, or application level lock contention?
Database configuration issues - Is there evidence of incorrect sizing of log files, archiving issues, excessive
checkpoints, or sub-optimal parameter settings?
ADDM analysis is performed top down, first identifying symptoms, and then refining them to reach the root causes
of performance problems. The goal of the analysis is to reduce a single throughput metric called DB time. DB time is
the cumulative time spent by the database in processing user requests. It includes wait time and CPU time of all
non-idle user sessions. DB time is displayed in the V$SESS_TIME_MODEL and V$SYS_TIME_MODEL views.
The goal of database performance tuning is to reduce the DB time of the system for a given workload. By reducing
DB time, the database can support more user requests by using the same or fewer resources. ADDM reports system
resources that are using a significant portion of DB time as problem areas and sorts them in descending order by
the amount of related DB time spent.
ADDM also documents the non-problem areas of the system. For example, wait event classes that are not
significantly impacting the performance of the system are identified and removed from the tuning consideration at
an early stage, saving time and effort that would be spent on items that do not impact overall system performance.
Running an ADDM or AWR report can be accomplished via Database Control click and point functionality or by
manually running one or more SQL scripts located in $ORACLE_HOME/rdbms/admin.
The Diagnostic Pack scripts, of which ADDM falls under for licensing, can all be run as a command-line API. Many
will prompt for input related to instance, dates, times, output format and snapshot coverage. The script file names
and purposes are shown below. All scripts are .sql files.
Name Purpose
The pattern on the scripts is that a script ending in -rpt typically defaults to the current DBID and instance, collects
information via prompts, and passes that input to its corresponding -rpi script. The -rpi scripts can be run directly,
but one will have to sort out the required/expected parameters. Some of the scripts are for overall and some are
for comparison between snapshots or the repository. Many of the scripts also expect to be run as the SYS user.
After the performance data has been collected, ADDM analyzes it. AWR is the hunter-gatherer, and ADDM is the
thinker. The built-in functionality includes automated tasks which run in maintenance windows. One well-known
maintenance window is the Oracle after-hours GATHER_STATS_JOB. The name of the job is GATHER_STATS_JOB.
The Database mode report includes findings about database resources (such as I/O and interconnect). The report
also aggregates findings from the various instances if they are significant to the entire database. For example, if the
CPU load on a single instance is high enough to affect the entire database, the finding will appear in the Database
mode analysis, which will point to the particular instance responsible for the problem.
5
5. ADDM Analysis Results
In addition to problem diagnostics, ADDM recommends possible solutions. ADDM analysis results are represented
as a set of findings. Each ADDM finding can belong to one of the following types:
Symptom findings contain information that often lead to one or more problem findings.
Information findings are used for reporting information that are relevant to understanding the performance
of the database, but do not constitute a performance problem (such as non-problem areas of the database
and the activity of automatic database maintenance).
Warning findings contain information about problems that may affect the completeness or accuracy of the
ADDM analysis (such as missing data in the AWR).
Each problem finding is quantified by an impact that is an estimate of the portion of DB time caused by the finding's
performance issue. A problem finding can be associated with a list of recommendations for reducing the impact of
the performance problem. The types of recommendations include:
The ADDM Findings link shows how many ADDM findings were found in the most recent ADDM analysis.
If the Database Login page appears, then log in as a user with administrator privileges. The Advisor Central page
appears.
3. In the Results section of Advisor Tasks, select the most recent ADDM result, and then click View Result.
The Automatic Database Diagnostic Monitor (ADDM) page appears. The results of the ADDM run are displayed.
On the Automatic Database Diagnostic Monitor (ADDM) page, the Database Activity chart shows the database
activity during the ADDM analysis period. Database activity types are defined in the legend based on their
corresponding colors in the chart. Each icon below the chart represents a different ADDM task, which in turn
corresponds to a pair of snapshots saved in AWR.
In the above figure 6.1, stacked area chart in the Database Activity section shows that the most database activity
was between 2:00 p.m. to 4:30 p.m. on December 30. During that time, the activity was dominated by CPU and wait
classes, with very little I/O happening.
In the ADDM Performance Analysis section, ADDM findings are listed in descending order, from highest to least
impact. The Informational Findings section lists areas that have no performance impact and are for information
only.
7
4. Optionally, click the Zoom icons to shorten or lengthen the analysis period displayed on the chart.
You can click Save to File to save the report for later access.
------------------------------------
SQL statements were not shared, due to the usage of literals. This resulted in additional hard parses, which were
consuming significant database time.
ACTION: Investigate application logic for possible use of bind variables instead of literals. Alternatively, you may
set the parameter
RATIONALE: SQL statements with PLAN_HASH_VALUE 3106087033 were found to be using literals. Look in V$SQL
for examples of such SQL statements.
In the example, the finding points to a particular root cause, the usage of literals in SQL statements, which is
estimated to have an impact of about 31% of total DB time in the analysis period.
The finding has a recommendation associated with it, composed of one action and one rationale. The action
specifies a solution to the problem found and is estimated to have a maximum benefit of up to 31% DB time in the
analysis period. Note that the benefit is given as a portion of the total DB time and not as a portion of the finding's
impact. The rationale provides additional information on tracking potential SQL statements that were using literals
and causing this performance issue. Using the specified plan hash value of SQL statements that could be a problem,
a DBA could quickly examine a few sample statements.
When a specific problem has multiple causes, the ADDM may report multiple problem and symptom findings. In
this case, the impacts of these multiple findings can contain the same portion of DB time. Because the performance
8
issues of findings can overlap, the sum of the impacts of the findings can exceed 100% of DB time. For example, if
a system performs many reads, then ADDM might report a SQL statement responsible for 50% of DB time due to
I/O activity as one finding, and an undersized buffer cache responsible for 75% of DB time as another finding.
When multiple recommendations are associated with a problem finding, the recommendations may contain
alternatives for solving the problem. In this case, the sum of the recommendations' benefits may be higher than the
finding's impact.
When appropriate, an ADDM action may have multiple solutions for you to choose from. In the example, the most
effective solution is to use bind variables. However, it is often difficult to modify the application. Changing the value
of the CURSOR_SHARING initialization parameter is much easier to implement and can provide significant
improvement.
8. Setting up ADDM
Automatic database diagnostic monitoring is enabled by default and is controlled by
the CONTROL_MANAGEMENT_PACK_ACCESS and the STATISTICS_LEVEL initialization parameters.
The STATISTICS_LEVEL parameter should be set to the TYPICAL or ALL to enable automatic database diagnostic
monitoring. The default setting is TYPICAL. Setting STATISTICS_LEVEL to BASIC disables many Oracle Database
features, including ADDM, and is strongly discouraged.
ADDM analysis of I/O performance partially depends on a single argument, DBIO_EXPECTED that describes the
expected performance of the I/O subsystem. The value of DBIO_EXPECTED is the average time it takes to read a
single database block in microseconds. Oracle Database uses the default value of 10 milliseconds, which is an
appropriate value for most modern hard drives. If your hardware is significantly different, such as very old hardware
or very fast RAM disks, consider using a different value.
If the Database Login page appears, then log in as a user with administrator privileges. The Initialization
Parameters page appears.
3. In the Name field, enter statistics level and then click Go.
The Initialization Parameters table shows the setting of this initialization parameter.
ADDM analysis of I/O performance partially depends on a single argument, DBIO_EXPECTED that describes the
expected performance of the I/O subsystem. The value of DBIO_EXPECTED is the average time it takes to read a
single database block, in microseconds. Oracle Database uses the default value of 10 milliseconds, which is an
appropriate value for most hard drives. You can choose a different value based on the characteristics of your
hardware.
1. Measure the average read time of a single database block for your hardware.
This measurement must be taken for random I/O, which includes seek time if you use standard hard drives.
Typical values for hard drives are between 5000 and 20000 microseconds.
2. Set the value one time for all subsequent ADDM executions.
For example, if the measured value is 8000 microseconds, then execute the following PL/SQL code as
the SYS user:
ADDM can analyze any two AWR snapshots (on the same database), as long as both snapshots are still stored in
the AWR (have not been purged). ADDM can only analyze instances that are started before the beginning snapshot
and remain running until the ending snapshot. Additionally, ADDM will not analyze instances that experience
significant errors when generating the AWR snapshots. In such cases, ADDM will analyze the largest subset of
instances that did not experience these problems.
The primary interface for diagnostic monitoring is Oracle Enterprise Manager. Whenever possible, you should run
ADDM using Oracle Enterprise Manager. If Oracle Enterprise Manager is unavailable, you can run ADDM using
the DBMS_ADDM package. In order to run the DBMS_ADDM APIs, the user must be granted the ADVISOR privilege.
10
9.1 Running ADDM in Database Mode
For Oracle RAC configurations, you can run ADDM in Database mode to analyze all instances of the databases. For
single-instance configurations, you can still run ADDM in Database mode; ADDM will simply behave as if running
in Instance mode.
BEGIN
DBMS_ADDM.ANALYZE_DB (
END;
The task_name parameter specifies the name of the analysis task that will be created.
The begin_snapshot parameter specifies the snapshot number of the beginning snapshot in the analysis period.
The end_snapshot parameter specifies the snapshot number of the ending snapshot in the analysis period.
The db_id parameter specifies the database identifier of the database that will be analyzed. If unspecified, this
parameter defaults to the database identifier of the database to which you are currently connected.
The following example creates an ADDM task in database analysis mode, and executes it to diagnose the
performance of the entire database during the time period defined by snapshots 137 and 145:
BEGIN
END;
BEGIN
DBMS_ADDM.ANALYZE_INST (
begin_snapshot IN NUMBER,
end_snapshot IN NUMBER,
END;
The task_name parameter specifies the name of the analysis task that will be created.
The begin_snapshot parameter specifies the snapshot number of the beginning snapshot in the analysis period.
The end_snapshot parameter specifies the snapshot number of the ending snapshot in the analysis period.
The instance_number parameter specifies the instance number of the instance that will be analyzed. If unspecified,
this parameter defaults to the instance number of the instance to which you are currently connected.
The db_id parameter specifies the database identifier of the database that will be analyzed. If unspecified, this
parameter defaults to the database identifier of the database to which you are currently connected.
The following example creates an ADDM task in instance analysis mode, and executes it to diagnose the
performance of instance number 1 during the time period defined by snapshots 137 and 145:
BEGIN
END;
BEGIN
DBMS_ADDM.ANALYZE_PARTIAL (
instance_numbers IN VARCHAR2,
begin_snapshot IN NUMBER,
end_snapshot IN NUMBER,
END;
/
12
The task_name parameter specifies the name of the analysis task that will be created.
The instance_numbers parameter specifies a comma-delimited list of instance numbers of instances that will be
analyzed. The begin_snapshotparameter specifies the snapshot number of the beginning snapshot in the analysis
period. The end_snapshot parameter specifies the snapshot number of the ending snapshot in the analysis period.
The db_id parameter specifies the database identifier of the database that will be analyzed. If unspecified, this
parameter defaults to the database identifier of the database to which you are currently connected.
The following example creates an ADDM task in partial analysis mode, and executes it to diagnose the performance
of instance numbers 1, 2, and 4, during the time period defined by snapshots 137 and 145:
BEGIN
END;
DBMS_ADDM.GET_REPORT (
task_name IN VARCHAR2
RETURN CLOB);
The following example displays a text report of the ADDM task specified by its task name using the tname variable:
Note that the return type of a report is a CLOB, formatted to fit line size of 80. For information about reviewing the
ADDM analysis results in an ADDM report.
However, you can display ADDM information through the DBA_ADVISOR views. This group of views includes:
DBA_ADVISOR_FINDINGS
This view displays all the findings discovered by all advisors. Each finding is displayed with an associated finding ID,
name, and type. For tasks with multiple executions, the name of each task execution associated with each finding is
also listed.
DBA_ADDM_FINDINGS
13
This view contains a subset of the findings displayed in the related DBA_ADVISOR_FINDINGS view. This view only
displays the ADDM findings discovered by all advisors. Each ADDM finding is displayed with an associated finding
ID, name, and type.
DBA_ADVISOR_FINDING_NAMES
DBA_ADVISOR_RECOMMENDATIONS
This view displays the results of completed diagnostic tasks with recommendations for the problems identified in
each execution. The recommendations should be reviewed in the order of the RANK column, as this relays the
magnitude of the problem for the recommendation. The BENEFIT column displays the benefit to the system you
can expect after the recommendation is performed. For tasks with multiple executions, the name of each task
execution associated with each advisor task is also listed.
DBA_ADVISOR_TASKS
This view provides basic information about existing tasks, such as the task ID, task name, and when the task was
created. For tasks with multiple executions, the name and type of the last or current execution associated with each
advisor task is also listed.
The ADDM Findings link shows how many ADDM findings were found in the most recent ADDM analysis.
If the Database Login page appears, then log in as a user with administrator privileges. The Advisor Central page
appears.
3. In the Results section of Advisor Tasks, select the most recent ADDM result, and then click View Result.
The Automatic Database Diagnostic Monitor (ADDM) page appears. The results of the ADDM run are displayed.
In the above figure 11, stacked area chart in the Database Activity section shows that the most database activity
was between 2:00 p.m. to 4:30 p.m. on December 30. During that time, the activity was dominated by CPU and wait
classes, with very little I/O happening.
In the ADDM Performance Analysis section, ADDM findings are listed in descending order, from highest to least
impact. The Informational Findings section lists areas that have no performance impact and are for information
only.
4. Optionally, click the Zoom icons to shorten or lengthen the analysis period displayed on the chart.
15
5. To view the ADDM findings in a report, click View Report.
You can click Save to File to save the report for later access.
The ADDM analysis results are represented as a set of findings. Each ADDM finding belongs to one of three types:
Problem
Symptom
Findings that contain information that often leads to one or more problem findings
Information
Findings that are used to report areas of the system that do not have a performance impact
Each problem finding is quantified with an estimate of the portion of DB time that resulted from the performance
problem.
When a specific problem has multiple causes, ADDM may report multiple findings. In this case, the impacts of these
multiple findings can contain the same portion of DB time. Because performance problems can overlap, summing
the impacts of the reported findings can yield a number higher than 100% of DB time. For example, if a system
performs many read I/O operations, ADDM may report a SQL statement responsible for 50% of DB time due to I/O
activity as one finding, and an undersized buffer cache responsible for 75% of DB time as another finding.
A problem finding can be associated with a list of recommendations for reducing the impact of a performance
problem. Each recommendation has a benefit that is an estimate of the portion of DB time that can be saved if the
recommendation is implemented. When multiple recommendations are associated with an ADDM finding, the
recommendations may contain alternatives for solving the same problem. In this case, the sum of the benefits may
be higher than the impact of the finding. You do not need to apply all the recommendations to solve the same
problem.
Recommendations are composed of actions and rationales. You must apply all the actions of a recommendation to
gain its estimated benefit. The rationales explain why the set of actions are recommended, and provide additional
information for implementing them. An ADDM action may present multiple solutions. If this is the case, then choose
the easiest solution to implement.
3. In the Results section of Advisor Tasks, select the most recent ADDM result, then click View Result.
4. In the Database Activity section, click the chart icon for the ADDM run to investigate.
The data in the ADDM Performance Analysis section changes based on the ADDM run that you selected.
5. In the ADDM Performance Analysis table, click the ADDM finding that has the greatest impact.
In the following screenshot of the ADDM Performance Analysis table, the finding with the greatest impact is Top
SQL Statements.
In the following screen shot of the Performance Finding Details page, five recommendations are shown. The first is
estimated to have a maximum benefit of up to 26.7% of DB time in the analysis period. The second recommendation
is estimated to have a maximum benefit of up to 10.9% of DB time, the third also has a maximum of 10.9%, the
fourth has a maximum of 9.9%, and the fifth has a maximum of 5%.
17
6. Under Recommendations, click Show to review the recommendations and required actions for each
recommendation.
The Category column displays the category of the recommendation. The Benefit (%) column displays the estimated
benefit of implementing the recommendation.
Figure below shows the recommendations for the first item in the Recommendations table.
7. If additional information is available about why the set of actions was recommended, then click Additional
Information, or review the content displayed under Additional Information.
For example, the following screenshot shows an Undersized Buffer Cache finding that contains additional
information that indicates the recommended value of the DB_CACHE_SIZE initialization parameter.
18
Figure 12.2 Performance Finding Details: Undersized Buffer Cache
The Finding History page appears (See Figure 12.3). The following screenshot shows the Finding History page for
the top SQL statements. 19
Figure 12.3 The Finding History Page
The Finding History page shows how often a particular finding has occurred in a selected 3-hour interval. You can
use this information to determine whether the finding was a transient or a persistent problem in the system. Based
on this information, you can determine whether the actions associated with the finding should be implemented.
The Active Sessions stacked area chart shows the impact of the finding and of the other loads on the system. You
can change the display as follows:
a. To move the 3-hour interval, click and drag the shaded box in the Active Sessions chart.
b. To change dates, enter the desired date in the View field, and then click Go.
c. To view details about a finding, under Detail for Selected 3 Hour Interval, click the link in
the Finding Details column to display the Performance Finding Details page for the corresponding
ADDM finding.
8. Optionally, create a filter to suppress known findings that have been tuned or cannot be tuned further. To
create filters for a selected ADDM finding:
a. Click Filters.
b. Click Create.
d. In the Active Sessions field, specify the filter criteria in terms of the number of active sessions.
The database filters the ADDM finding for future ADDM runs if the number of active sessions for the finding is less
than the specified filter criteria.
20
e. In the % Active Sessions field, specify the filter criteria in terms of percentage of active sessions.
The database filters the ADDM finding for future ADDM runs if the number of active sessions for the finding is less
than the specified filter criteria.
f. Click OK.
Depending on the type of action you choose to perform, various options may be available, such
as Implement or Run Advisor Now. These options enable you to implement the recommendation immediately
with a single mouse click.
In the example shown in Figure 12.1, the simplest solution is to click Run Advisor Now to immediately run a SQL
Tuning Advisor task on the SQL statement.
21