PERFOMANCE TUNING -2 ADDM & ASH & DYNAMIC PERFORMACE VIEWS

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 ViewDescription
DBA_HIST_ACTIVE_SESS_HISTORYDisplays the history of the contents of the in-memory active session history for recent system activity.
DBA_HIST_BASELINEDisplays information about the baselines captured on the system, such as the time range of each baseline and the baseline type.
DBA_HIST_BASELINE_DETAILSDisplays details about a specific baseline.
DBA_HIST_BASELINE_TEMPLATEDisplays information about the baseline templates used by the system to generate baselines.
DBA_HIST_CON_SYS_TIME_MODELDisplays historical system time model statistics, including OLAP timed statistics.
DBA_HIST_CON_SYSMETRIC_HISTDisplays the historical information about the system metric values.
DBA_HIST_CON_SYSMETRIC_SUMMDisplays history of the statistical summary of all the metric values in the system metrics for the long duration (60 seconds) group.
DBA_HIST_CON_SYSSTATDisplays historical system statistics, including OLAP kernel statistics.
DBA_HIST_CON_SYSTEM_EVENTDisplays historical information about the total waits for an event.
DBA_HIST_DATABASE_INSTANCEDisplays information about the database environment.
DBA_HIST_DB_CACHE_ADVICEDisplays historical predictions of the number of physical reads for the cache size corresponding to each row.
DBA_HIST_DISPATCHERDisplays historical information for each dispatcher process at the time of the snapshot.
DBA_HIST_DYN_REMASTER_STATSDisplays statistical information about the dynamic remastering process.
DBA_HIST_IOSTAT_DETAILDisplays historical I/O statistics aggregated by file type and function.
DBA_HIST_RSRC_PDB_METRICDisplays historical information about the Resource Manager metrics for pluggable databases (PDBs) for the past one hour.
DBA_HIST_RSRC_METRICDisplays historical information about the Resource Manager metrics for consumer groups for the past one hour.
DBA_HIST_SHARED_SERVER_SUMMARYDisplays historical information for shared servers, such as shared server activity, common queues and dispatcher queues.
DBA_HIST_SNAPSHOTDisplays information on snapshots in the system.
DBA_HIST_SQL_PLANDisplays the SQL execution plans.
DBA_HIST_WR_CONTROLDisplays the settings for controlling AWR.
DBA_HIST_WR_SETTINGSDisplays the settings and metadata of the AWR.
DBA_HIST_PROCESS_WAITTIMEDisplays CPU and wait time for a process type.