понедельник, 16 февраля 2009 г.

AWR Report

Список всех снапшотов:

SELECT snap_id, begin_interval_time, end_interval_time
FROM dba_hist_snapshot
ORDER BY 1;

DBID:

select dbid from v$database

AWR DBtime script

select * from (
select begin_snap, end_snap, timestamp begin_timestamp, inst, a/1000000/60 DBtime from
(
select
e.snap_id end_snap,
lag(e.snap_id) over (order by e.snap_id) begin_snap,
lag(s.end_interval_time) over (order by e.snap_id) timestamp,
s.instance_number inst,
e.value,
nvl(value-lag(value) over (order by e.snap_id),0) a
from dba_hist_sys_time_model e, DBA_HIST_SNAPSHOT s
where s.snap_id = e.snap_id
and e.instance_number = s.instance_number
and to_char(e.instance_number) like to_char(e.instance_number)
and stat_name = 'DB time'
)
where begin_snap between 0 and 99999999
and begin_snap=end_snap-1
order by dbtime desc
)
where rownum < 31


Создаются автоматически:

BEGIN
DBMS_WORKLOAD_REPOSITORY.modify_snapshot_settings(
retention => XXXX, - Сколько времени хранить (в минутах)
interval => XX); - С каким интервалом создавать (в минутах)
END;
/

BEGIN
DBMS_WORKLOAD_REPOSITORY.modify_snapshot_settings(
retention => 43200, -- Minutes (= 30 Дней)
interval => 30); -- Minutes
END;
/

STATISTICS_LEVEL = TYPICAL or ALL

Параметры изменяются так:

select snap_interval
, retention
from dba_hist_wr_control
/

exec dbms_workload_repository.modify_snapshot_settings (retention => 14*24*60) //14 дней

execute dbms_workload_repository.modify_snapshot_settings(interval => 0);
execute dbms_workload_repository.modify_snapshot_settings(interval => 60);

Руками создаются так:

BEGIN DBMS_WORKLOAD_REPOSITORY.create_snapshot('ALL'); END;

select DBMS_STATS.GET_STATS_HISTORY_RETENTION from dual;
begin
DBMS_STATS.ALTER_STATS_HISTORY_RETENTION (7);
end;

begin
DBMS_STATS.PURGE_STATS(to_timestamp_tz('01-09-2007 00:00:00 Europe/Moscow','DD-MM-YYYY HH24:MI:SS TZR'));
end;

Удаляются так:

BEGIN
DBMS_WORKLOAD_REPOSITORY.drop_snapshot_range (
low_snap_id => 22,
high_snap_id => 32);
END;
/

По умолчанию (TYPICAL)
EXECUTE DBMS_WORKLOAD_REPOSITORY.create_snapshot();

Отчеты формируются так:

SELECT
output
FROM
TABLE
(dbms_workload_repository.awr_report_text
(Db_Id, Instance_num, Snap_begin, Snap_end)
);

Например так (в формате html):

SELECT
output
FROM
TABLE
(dbms_workload_repository.awr_report_html
(4138903833,4,90743,90749)
);

План выполнения можно посмотреть так:

select * from TABLE(dbms_xplan.display_awr('8s9npcpzjkzst'));


Отключить сбор снапшотов AWR можно так:
execute dbms_workload_repository.modify_snapshot_settings(interval => 0);

Включить сбор снапшотов AWR с интервалом в 1 час можно так:
execute dbms_workload_repository.modify_snapshot_settings(interval => 60);

Установить политику хранения снапшотов можно так:
exec dbms_workload_repository.modify_snapshot_settings (retention => 14*24*60) //14 дней

Посмотреть текущие значения настроек можно так:
select dbid, snap_interval, retention  from sys.wrm$_wr_control

(собирать каждые 15 мин. и хранить один день):
execute dbms_workload_repository.modify_snapshot_settings(interval => 15);
exec dbms_workload_repository.modify_snapshot_settings (retention => 1*24*60)


Many Ways to Disable AWR:

1. Download Meta-Link script dbms_awr.plb, compile this package, then execute the PL/SQL package dbms_awr.disable_awr() [see metalink note 436386.1].
2. Set your init.ora parameter STATISTICS_LEVEL = BASIC
3. Execute the Oracle provided PL/SQL package: dbms_workload_repository.modify_snapshot_settings(interval=>0)
4. Execute the Oracle provided PL/SQL package: dbms_scheduler.disable('GATHER_STATS_JOB')
5. You can use Toad for #3: Main Menu->Database->Monitor->ADDM/AWR Reports screen, choose the Snapshot Management tab, set the interval to all zeroes, and then press the green checkmark in upper left corner to commit the change.
6. You can use Toad for #4: Main Menu->Schema Browser, choose the Sched. Job tab and disable the GATHER_STATS_JOB job.
7. You can use OEM for #4: Main Menu->Workload->Automatic Workload Repository, select the “Edit” button and then select the last radio group item labeled: Turn off Snapshot Collection, finally press OK
8. You can use OEM for #5: Main Menu->Scheduler->Jobs, select the data grid row for GATHER_STATS_JOB, choose the disable drop-down action, then finally press OK
9. Create your own database creation scripts (i.e. do not use DBCA) and make sure not to run the CATAWRTB.sql script [Note – Oracle upgrade process may undo this]
10. Run the CATNOAWR.sql script to drop the AWR Repository tables [Note – Oracle upgrade process may undo this]


select * from nls_session_parameters
alter session set nls_date_format = 'DD-MM-YYYY';
alter session set nls_date_format='DD-MON-YYYY';
alter session set nls_language=AMERICAN;

 ASH - report

select
output
from
table
(dbms_workload_repository.ash_report_html
(4138903833,1,to_date('11-04-2017 08:10:00','DD-MM-YYYY HH24:MI:SS'), to_date('11-04-2017 09:10:00','DD-MM-YYYY HH24:MI:SS')));

ADDM - report


SET LINESIZE 120

COLUMN begin_interval_time FORMAT A30
COLUMN end_interval_time FORMAT A30
COLUMN startup_time FORMAT A30

SELECT snap_id, begin_interval_time, end_interval_time, startup_time
FROM   dba_hist_snapshot
WHERE  begin_interval_time > TRUNC(SYSTIMESTAMP)
ORDER BY snap_id;

   SNAP_ID BEGIN_INTERVAL_TIME            END_INTERVAL_TIME              STARTUP_TIME
---------- ------------------------------ ------------------------------ ------------------------------
      1770 06-JUL-2015 00:00:54.031       06-JUL-2015 01:00:58.011       03-JUL-2015 11:13:51.000
      1771 06-JUL-2015 01:00:58.011       06-JUL-2015 02:00:02.167       03-JUL-2015 11:13:51.000
      1772 06-JUL-2015 02:00:02.167       06-JUL-2015 03:00:06.332       03-JUL-2015 11:13:51.000
      1773 06-JUL-2015 03:00:06.332       06-JUL-2015 04:00:10.573       03-JUL-2015 11:13:51.000
      1774 06-JUL-2015 04:00:10.573       06-JUL-2015 05:00:14.648       03-JUL-2015 11:13:51.000
      1775 06-JUL-2015 05:00:14.648       06-JUL-2015 06:00:18.690       03-JUL-2015 11:13:51.000
      1776 06-JUL-2015 06:00:18.690       06-JUL-2015 07:00:22.717       03-JUL-2015 11:13:51.000
      1777 06-JUL-2015 07:00:22.717       06-JUL-2015 08:00:27.209       03-JUL-2015 11:13:51.000
      1778 06-JUL-2015 08:00:27.209       06-JUL-2015 09:00:31.694       03-JUL-2015 11:13:51.000
      1779 06-JUL-2015 09:00:31.694       06-JUL-2015 10:00:36.238       03-JUL-2015 11:13:51.000
      1780 06-JUL-2015 10:00:36.238       06-JUL-2015 11:00:40.915       03-JUL-2015 11:13:51.000
      1781 06-JUL-2015 11:00:40.915       06-JUL-2015 12:00:45.594       03-JUL-2015 11:13:51.000
      1782 06-JUL-2015 12:00:45.594       06-JUL-2015 13:00:49.954       03-JUL-2015 11:13:51.000
      1783 06-JUL-2015 13:00:49.954       06-JUL-2015 14:00:54.322       03-JUL-2015 11:13:51.000
      1784 06-JUL-2015 14:00:54.322       06-JUL-2015 15:00:58.984       03-JUL-2015 11:13:51.000
      1785 06-JUL-2015 15:00:58.984       06-JUL-2015 16:00:03.464       03-JUL-2015 11:13:51.000

SQL>


ANALYZE_DB

CONN sys@cdb1 AS SYSDBA

DECLARE
  l_task_name VARCHAR2(30) := '1783_1785_addm_db';
BEGIN
  DBMS_ADDM.analyze_db (
    task_name      => l_task_name,
    begin_snapshot => 1783,
    end_snapshot   => 1785);
END;
/



ANALYZE_INST

CONN sys@cdb1 AS SYSDBA

DECLARE
  l_task_name VARCHAR2(30) := '1783_1785_addm_inst';
BEGIN
  DBMS_ADDM.analyze_inst (
    task_name       => l_task_name,
    begin_snapshot  => 1783,
    end_snapshot    => 1785,
    instance_number => 1);
END;
/


GET_REPORT

SET LONG 1000000 LONGCHUNKSIZE 1000000
SET LINESIZE 1000 PAGESIZE 0
SET TRIM ON TRIMSPOOL ON
SET ECHO OFF FEEDBACK OFF

SELECT DBMS_ADDM.get_report('1783_1785_addm_db') FROM dual;


DELETE

BEGIN
  DBMS_ADDM.delete('1783_1785_addm_db');
END;
/



Miscellaneous

    INSERT_FINDING_DIRECTIVE : Limit reporting for a specific finding.
    INSERT_PARAMETER_DIRECTIVE : Prevent ADDM from creating actions to alter a specific parameter.
    INSERT_SEGMENT_DIRECTIVE : Prevent ADDM from creating actions to run the Segment Advisor for specific segments.
    INSERT_SQL_DIRECTIVE : Limit reporting of actions on specific SQL.
    DELETE_FINDING_DIRECTIVE : Delete a finding directive.
    DELETE_PARAMETER_DIRECTIVE : Delete a parameter directive.
    DELETE_SEGMENT_DIRECTIVE : Delete a segment directive.
    DELETE_SQL_DIRECTIVE : Delete an SQL directive.