ADDM (Automatic Database Diagnostic Monitor)
ADDM Veritabanındaki performans problemlerini bulup çözüm önerisi veren bir performans tooludur. Problemlerin tespiti ve çözüm önerileri için AWR ın kullandığı snaphot verilerini kullanır ve her 2 snaphoot aralığında ADDM veritabanında default ayarlarında otomtik olarak çalışır. ADDM özel bir iş yükü hakkında değil genel olarak veritabanaı aktivitelerinin tamamı göz önünde bulundurarak Problem tespit ve çözüm önerisi yapar. ADDM çalışma durumunu control_management_pack_access ile belirlenir defaultta diagnostic+tuning şeklindedir, eger none yaparsak ADDM devre dışı kalır
SQL> show parameter control_management
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_management_pack_access string DIAGNOSTIC+TUNING
ADDM Raporu Olşturma
Öncelikle snapshotlarımıza dbs_hist_snapshot viewinden bakalım;
SET LINESIZE 120
COLUMN begin_interval_time FORMAT A30
COLUMN end_interval_time FORMAT A30
SQL> select snap_id,begin_interval_time,end_interval_time from dba_hist_snapshot;
SNAP_ID BEGIN_INTERVAL_TIME END_INTERVAL_TIME
---------- ---------------------------------------- ----------------------------------------
1783 17-OCT-21 01.00.52.648 AM 17-OCT-21 02.00.54.393 AM
1784 17-OCT-21 02.00.54.393 AM 17-OCT-21 03.00.55.812 AM
1785 17-OCT-21 03.00.55.812 AM 17-OCT-21 04.00.57.504 AM
1786 17-OCT-21 04.00.57.504 AM 17-OCT-21 05.00.59.042 AM
1787 17-OCT-21 05.00.59.042 AM 17-OCT-21 06.00.00.443 AM
1788 17-OCT-21 06.00.00.443 AM 17-OCT-21 07.00.01.979 AM
1789 17-OCT-21 07.00.01.979 AM 17-OCT-21 08.00.03.585 AM
1790 17-OCT-21 08.00.03.585 AM 17-OCT-21 09.00.05.194 AM
1791 17-OCT-21 09.00.05.194 AM 17-OCT-21 10.00.06.853 AM
1792 17-OCT-21 10.00.06.853 AM 17-OCT-21 11.00.08.379 AM
--Veritabanı seviyesinde ADDM oluşturma
declare
lv_task_name VARCHAR2(30):='1791-1792-addmrpt';
begin
dbms_addm.analyze_db(
task_name => lv_task_name,
begin_snapshot => 1791,
end_snapshot => 1792);
end;
/
--Instance Seviyesinde ADDM oluşturma
declare
lv_task_name VARCHAR2(30):'1791-1792-addmrpt';
begin
dbms_addm.analyze_db(
task_name => lv_task_name,
begin_snapshot => 1791,
end_snapshot => 1792,
instance_number => 1);
end;
/
--Sonuçları görüntülemek için
SQL> set long 100000 pagesize 0;
SQL> select dbms_addm.get_report('1791-1792-addmrpt') from dual;
ADDM Report for Task '1791-1792-addmrpt'
----------------------------------------
Analysis Period
---------------
AWR snapshot range from 1791 to 1792.
Time period starts at 17-OCT-21 10.00.07 AM
Time period ends at 17-OCT-21 11.00.08 AM
Analysis Target
---------------
****
--Sonuçlar incelenir
ASH (Active Session History)
Veritabanının son 10 dakikalık performas verilerine ihtiyaç duyorsak bize bazen AWR Snapshotları yardımcı olmaz bu durumlar için ASH raporları oluşturulur, ASH raporları viewler üzerinden topladığı bilgileri bize rapor olarak sunar. en önemli viewler: v$session o andaki oturum bilgilerini, v$active_session_history ve DBA_HIST_ACTIVE_SESS_HISTORY dir. Bunlar nelerdir performans viewleri başlığında inceleyeceğiz.
ASH Raporu oluşturmak için $ORACLE_HOME/rdbms/admin/ashrpt.sql
scripti kullanılabilir ve Enterprise Manager üzerinden ASH raporları oluşturulabilir.
DYNAMIC PERFORMASN VIEWS
Veritabanı performansı açısından öenmli olan Memory, Disk I/O, Disk yaplandırması vb. ayarların parametreleri ve kullanımları ile iglili verilere ulaşmak için bu viewleri kullanabiliriz. Bu viewler veritabanı açık ve aktifken sürekli güncellenen viewlerdir. v$ ile başlayan viewlerdir eğer RAC sistem kullanıyorsak tüm instanclar için değerleri görmek istiyorsak gv$ prefix i ile kullanılan view lerdir.
Troubleshooting ve performans olaylarını izlemek için öneli olan bazı viewler aşadadır.
V$OSSTAT
İşletim sistemine erişimiz olmadığında ve OS ile ilgili parametreleri görmek istediğimizde kullanabileceğimiz bir viewdır.
SQL> set linesize 2500
SQL> column STAT_NAME format a30
SQL> select * from v$osstat;
V$EVENT_NAME
Oracle da 1200 den fazla bekleme olayı vardır ve bu bekleme olayları 13 tane sınıfın altındadır. Bazen bekleme olayları ile ilgili bilgi sahibi olamayabilir ve hangi sınıfa ait olduğunu öğrenmek isteyebiliriz. Örneğin aşağıdaki sorgu ile IDLE grubundaki wait eventleri görebiliriz.
select * from v$event_name where wait_class='IDLE'
V$SESSION
Bu viewin çok fazla kolonu vardır çok sık kullanılan bazı kolonları ve açıklamaları aşağıdadır. Bu çok sık kullanılan bir viewdır, veritabanın o an ki durumu ve ne yaptığı ile ilgili detaylı bir veri setini bize sunar.
- STATUS : veritabanındaki sessio nın durumunu bize veriri active/inactive/killed
- SID
- SPID
- TYPE : Sessionın bir background prosessimi yoksa USER da gelen bir Proses mi olduğunu bize söyle
- LOGON_TIME
- USERNAME
- SCHEMANAME
- OSUSER
- SQL_ID
- LAST_CALL_ET : Oturumun ne kadar süredir bulunduğu
- PREV_SQL_ID : geçerli olan SQL den bir önceki execute edilen SQL_ID dir.
- STATE : Şu anda beklemede olup olmadığını gösterir.
- EVENT:
- PADDR : o anki çalışan prosesin adresidir
V$PROCESS
Veritabanı üzerinde o an etkin olan proseslerin bilgisini içerir.
- ADDR : O an çalışan prosesi adresi
- SPID İşletim sistemi üzerindeki Proses ID sidir.
v$SQL ve v$SQLAREA Sistem üzerinde çalışan SQL ler ile ilgili çok detaylı bilgilerin olduğu view lerdir.
DBA_HIST View | Description |
---|---|
DBA_HIST_ACTIVE_SESS_HISTORY | Displays the history of the contents of the in-memory active session history for recent system activity. |
DBA_HIST_BASELINE | Displays information about the baselines captured on the system, such as the time range of each baseline and the baseline type. |
DBA_HIST_BASELINE_DETAILS | Displays details about a specific baseline. |
DBA_HIST_BASELINE_TEMPLATE | Displays information about the baseline templates used by the system to generate baselines. |
DBA_HIST_CON_SYS_TIME_MODEL | Displays historical system time model statistics, including OLAP timed statistics. |
DBA_HIST_CON_SYSMETRIC_HIST | Displays the historical information about the system metric values. |
DBA_HIST_CON_SYSMETRIC_SUMM | Displays history of the statistical summary of all the metric values in the system metrics for the long duration (60 seconds) group. |
DBA_HIST_CON_SYSSTAT | Displays historical system statistics, including OLAP kernel statistics. |
DBA_HIST_CON_SYSTEM_EVENT | Displays historical information about the total waits for an event. |
DBA_HIST_DATABASE_INSTANCE | Displays information about the database environment. |
DBA_HIST_DB_CACHE_ADVICE | Displays historical predictions of the number of physical reads for the cache size corresponding to each row. |
DBA_HIST_DISPATCHER | Displays historical information for each dispatcher process at the time of the snapshot. |
DBA_HIST_DYN_REMASTER_STATS | Displays statistical information about the dynamic remastering process. |
DBA_HIST_IOSTAT_DETAIL | Displays historical I/O statistics aggregated by file type and function. |
DBA_HIST_RSRC_PDB_METRIC | Displays historical information about the Resource Manager metrics for pluggable databases (PDBs) for the past one hour. |
DBA_HIST_RSRC_METRIC | Displays historical information about the Resource Manager metrics for consumer groups for the past one hour. |
DBA_HIST_SHARED_SERVER_SUMMARY | Displays historical information for shared servers, such as shared server activity, common queues and dispatcher queues. |
DBA_HIST_SNAPSHOT | Displays information on snapshots in the system. |
DBA_HIST_SQL_PLAN | Displays the SQL execution plans. |
DBA_HIST_WR_CONTROL | Displays the settings for controlling AWR. |
DBA_HIST_WR_SETTINGS | Displays the settings and metadata of the AWR. |
DBA_HIST_PROCESS_WAITTIME | Displays CPU and wait time for a process type. |
Comments (1)
SQL PLAN FIX -1 (BASELINE) – Faruk Çeviksays:
Mayıs 21, 2024 at 6:10 am[…] https://www.farukcevik.com.tr/blog/2021/10/17/perfomance-tuning-addm-ash-dynamic-performasn-views/ […]