Call now: 252-767-6166  
Oracle Training Oracle Support Development Oracle Apps

 
 Home
 E-mail Us
 Oracle Articles
New Oracle Articles


 Oracle Training
 Oracle Tips

 Oracle Forum
 Class Catalog


 Remote DBA
 Oracle Tuning
 Emergency 911
 RAC Support
 Apps Support
 Analysis
 Design
 Implementation
 Oracle Support


 SQL Tuning
 Security

 Oracle UNIX
 Oracle Linux
 Monitoring
 Remote s
upport
 Remote plans
 Remote
services
 Application Server

 Applications
 Oracle Forms
 Oracle Portal
 App Upgrades
 SQL Server
 Oracle Concepts
 Software Support

 Remote S
upport  
 Development  

 Implementation


 Consulting Staff
 Consulting Prices
 Help Wanted!

 


 Oracle Posters
 Oracle Books

 Oracle Scripts
 Ion
 Excel-DB  

Don Burleson Blog 


 

 

 


 

 

 
 

Automatic Database Diagnostic Monitor (ADDM) in Oracle Database 10g  (Dutch)

Oracle Database Tips by Donald BurlesonMay 19,  2015


Automatic Database Diagnostic Monitor (ADDM) in Oracle Database 10g

Dit artikel beschrijft verschillende methodes om rapporten te produceren van de Automatic Database Diagnostic Monitor (ADDM) in Oracle 10g.

 

  • Overzicht
  • Enterprise Manager
  • addmrpt.sql Script
  • DBMS_ADVISOR
  • Quick Tune
  • Views Overzicht

Overzicht

De Automatic Database Diagnostic Monitor (ADDM) analiseert data in de Automatic Workload Repository (AWR) om potentiele bottlenecks te achterhalen. Voor iedere opgespoorde issue zal hij het root probleem opsporen en een aanbeveling doen om het probleem op te lossen. Een ADDM analyse opdracht wordt uitgevoerd en de resultaten en aanbevelingen worden opgeslagen in de database iedere keer als de AWR een snapshot neemt, aangenomen wordt wel dat de STATISTICS_LEVEL parameter op TYPICAL of ALL is gezet.
De ADDM analyse omvat:

  • CPU load o Memory gebruik
  • I/O gebruik
  • Resource intensieve SQL
  • Resource intensieve PL/SQL en Java
  • RAC zaken
  • Application zaken
  • Database configuratie zaken
  • Gemeenschappelijke zaken
  • Object contentie

 

Er zijn verschillende manieren om rapporten te produceren van de ADDM analyses, welke later uitgelegd zullen worden, maar ze hebben allemaal hetzelfde formaat. De resultaten(problemen) worden weergegeven in volgorde van potentiele impact op de database performance, samen met aanbevelingen om het probleem op te lossen en de symptomen die hebben gelijd tot de ontdekking van het probleem. Een voorbeeld van een test instance:

 
FINDING 1: 59% impact (944 seconds)--the buffer cache was undersized causing significant additional read I/O. 
RECOMMENDATION 1: DB Configuration, 59% benefit (944 seconds) 
ACTION: Increase SGA target size by increasing the value of parameter "sga_target" by 28 M. 
SYMPTOMS THAT LED TO THE FINDING: Wait class "User I/O" was consuming significant database time. (83% impact [1336 seconds]) 
 

De aanbevelingen kunnen betaan uit:

  • Hardware veranderingen
  • Database configuratie veranderingen 
  • Schema veranderingen
  • Application veranderingen
  • Gebruik maken van ander adviseurs

De analyse van I/O performance wordt beïnvloed door de DBIO_EXPECTED parameter welke gezet zou moeten worden naar een gemiddelde tijd (in microseconde) die nodig is om 1 enkel databaseblok te lezen van disk. Typische waarden variëren van 5000 tot 20000 microseconden.
De parameter kan gezet worden met:

 
EXECUTE DBMS_ADVISOR.set_default_task_parameter('ADDM', 'DBIO_EXPECTED', 8000); 
 

Enterprise manager

De Enterprise manager is de meest voor de hand liggende plek om de ADDM rapporten te bekijken. De "Performance Analysis" sectieon op de "Home" pagina geeft een lijst van de top 5 bevindingen van de laatste ADDM analyze taak. Specifieke rapporten kunnen geproduceerd worden door op de "Advisor Central" link te klikken, en dan de "ADDM" link. De pagina die je nu ziet geeft je de mogelijkheid om een begin en eind snapshot te selecteren, een ADDM taak te creeren en het resultaat te bekijken door op een aantal links te klikken.

addmrpt.sql Script

Het addmrpt.sql script kan gebruikt worden om een rapportage vanuit SQL*Plus te generen. Het script is op de volgende plek te vinden:

-- UNIX@/u01/app/oracle/product/10.1.0/db_1/rdbms/admin/addmrpt.sql
-- Windows@d:\oracle\product\10.1.0\db_1\rdbms\admin\addmrpt.sql

Deze laat je alle beschikbare snapshots zien en prompt je om een start en eind snapshot op te geven samen de naam die je aan het rapport wilt geven.

DBMS_ADVISOR

De DBMS_ADVISOR package kan gebruikt worden om een advisory taak de creeren en te runnen, inclusief SQL Access Advisor taken. Het volgende voorbeeld hoe het is gebruikt om een typisch SQL Access Advisor script te maken, te runnen en de uitkomst te laten zien voor de huidige workload :

DECLARE
l_taskname VARCHAR2(30) := 'test_sql_access_task';
l_task_desc VARCHAR2(128) := 'Test SQL Access Task';
l_wkld_name VARCHAR2(30) := 'test_work_load';
l_saved_rows NUMBER := 0;
l_failed_rows NUMBER := 0;
l_num_found NUMBER;
BEGIN

-- Maak een SQL Access Advisor task.

DBMS_ADVISOR.create_task (
advisor_name => DBMS_ADVISOR.sqlaccess_advisor,
task_name => l_taskname,
task_desc => l_task_desc);

-- Reset de task.

DBMS_ADVISOR.reset_task(task_name => l_taskname);

-- Maak een workload.

SELECT COUNT(*)
INTO l_num_found
FROM user_advisor_sqlw_sum
WHERE workload_name = l_wkld_name;
IF l_num_found = 0 THEN
DBMS_ADVISOR.create_sqlwkld(workload_name => l_wkld_name);
END IF;

-- Link de workload aan de task.

SELECT count(*)
INTO l_num_found
FROM user_advisor_sqla_wk_map
WHERE task_name = l_taskname
AND workload_name = l_wkld_name;
IF l_num_found = 0 THEN
DBMS_ADVISOR.add_sqlwkld_ref(
task_name => l_taskname,
workload_name => l_wkld_name);
END IF;

 

-- zet de workload parameters.

DBMS_ADVISOR.set_sqlwkld_parameter(l_wkld_name, 'ACTION_LIST', DBMS_ADVISOR.ADVISOR_UNUSED);
DBMS_ADVISOR.set_sqlwkld_parameter(l_wkld_name, 'MODULE_LIST', DBMS_ADVISOR.ADVISOR_UNUSED);
DBMS_ADVISOR.set_sqlwkld_parameter(l_wkld_name, 'SQL_LIMIT', DBMS_ADVISOR.ADVISOR_UNLIMITED);
DBMS_ADVISOR.set_sqlwkld_parameter(l_wkld_name, 'ORDER_LIST', 'PRIORITY,OPTIMIZER_COST');
DBMS_ADVISOR.set_sqlwkld_parameter(l_wkld_name, 'USERNAME_LIST', DBMS_ADVISOR.ADVISOR_UNUSED);
DBMS_ADVISOR.set_sqlwkld_parameter(l_wkld_name, 'VALID_TABLE_LIST', DBMS_ADVISOR.ADVISOR_UNUSED);
DBMS_ADVISOR.import_sqlwkld_sqlcache(l_wkld_name, 'REPLACE', 2, l_saved_rows, l_failed_rows);

-- Zet de task parameters.

DBMS_ADVISOR.set_task_parameter(l_taskname, '_MARK_IMPLEMENTATION', 'FALSE');
DBMS_ADVISOR.set_task_parameter(l_taskname, 'EXECUTION_TYPE', 'INDEX_ONLY');
DBMS_ADVISOR.set_task_parameter(l_taskname, 'MODE', 'COMPREHENSIVE');
DBMS_ADVISOR.set_task_parameter(l_taskname, 'STORAGE_CHANGE',
DBMS_ADVISOR.ADVISOR_UNLIMITED);
DBMS_ADVISOR.set_task_parameter(l_taskname, 'DML_VOLATILITY', 'TRUE');
DBMS_ADVISOR.set_task_parameter(l_taskname, 'ORDER_LIST', 'PRIORITY,OPTIMIZER_COST');
DBMS_ADVISOR.set_task_parameter(l_taskname, 'WORKLOAD_SCOPE', 'PARTIAL');
DBMS_ADVISOR.set_task_parameter(l_taskname, 'DEF_INDEX_TABLESPACE', DBMS_ADVISOR.ADVISOR_UNUSED);
DBMS_ADVISOR.set_task_parameter(l_taskname, 'DEF_INDEX_OWNER', DBMS_ADVISOR.ADVISOR_UNUSED);
DBMS_ADVISOR.set_task_parameter(l_taskname, 'DEF_MVIEW_TABLESPACE', DBMS_ADVISOR.ADVISOR_UNUSED);
DBMS_ADVISOR.set_task_parameter(l_taskname, 'DEF_MVIEW_OWNER', DBMS_ADVISOR.ADVISOR_UNUSED);

-- Execute de task.

DBMS_ADVISOR.execute_task(task_name => l_taskname);
END;
/

-- Laat het resultaat script zien.

SET LONG 100000
SET PAGESIZE 50000

SELECT DBMS_ADVISOR.get_task_script('test_sql_access_task') AS script
FROM dual;

SET PAGESIZE 24


				

De waarde van het SET LONG commando zal aangepast moeten worden om het hele script te kunnen laten zien.

Quick Tune

Als je alleen een individueel statement wil tunen kan je de QUICK_TUNE procedure als volgt gebruiken:

BEGIN
DBMS_ADVISOR.quick_tune(
advisor_name => DBMS_ADVISOR.SQLACCESS_ADVISOR,
task_name => 'emp_quick_tune',
attr1 => 'SELECT e.* FROM emp e WHERE UPPER(e.ename) = ''SMITH''');
END;
/

Alle adviezen kan je laten zien door gebruik te maken van de vorige query met de juiste naam gespecificeerd.

Gerelateerde Views

De volgende views kunnen gebruikt worden om de ADDM resultaten te laten zien zonder gebruik te maken van de Enterprise Manager of de GET_TASK_REPORT functie:

  • DBA_ADVISOR_TASKS - Basis informatie over bestaande taken.
  • DBA_ADVISOR_LOG - Status informatie over bestaande taken. 
  • DBA_ADVISOR_FINDINGS - Mogelijke problemen voor een bestaande taak. 
  • DBA_ADVISOR_RECOMMENDATIONS - Aanbevelingen voor de problemen die door een bestaande taak zijn gevonden.

 



 

 

��  
 
 
Oracle Training at Sea
 
 
 
 
oracle dba poster
 

 
Follow us on Twitter 
 
Oracle performance tuning software 
 
Oracle Linux poster
 
 
 

 

Burleson is the American Team

Note: This Oracle documentation was created as a support and Oracle training reference for use by our DBA performance tuning consulting professionals.  Feel free to ask questions on our Oracle forum.

Verify experience! Anyone considering using the services of an Oracle support expert should independently investigate their credentials and experience, and not rely on advertisements and self-proclaimed expertise. All legitimate Oracle experts publish their Oracle qualifications.

Errata?  Oracle technology is changing and we strive to update our BC Oracle support information.  If you find an error or have a suggestion for improving our content, we would appreciate your feedback.  Just  e-mail:  

and include the URL for the page.


                    









Burleson Consulting

The Oracle of Database Support

Oracle Performance Tuning

Remote DBA Services


 

Copyright © 1996 -  2020

All rights reserved by Burleson

Oracle ® is the registered trademark of Oracle Corporation.