2026-03-12 20:23:15
This commit is contained in:
33
tpt/awr/awr_evh.sql
Normal file
33
tpt/awr/awr_evh.sql
Normal file
@@ -0,0 +1,33 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
BREAK ON snap_begin SKIP 1 ON snap_end ON event_name
|
||||
|
||||
COL event_name FOR A40
|
||||
|
||||
SELECT
|
||||
CAST(begin_interval_time AS DATE) snap_begin
|
||||
, TO_CHAR(CAST(end_interval_time AS DATE), 'HH24:MI') snap_end
|
||||
, event_name
|
||||
, wait_time_milli
|
||||
, CASE WHEN wait_count >= LAG(wait_count) OVER (PARTITION BY event_name,wait_time_milli ORDER BY CAST(begin_interval_time AS DATE)) THEN
|
||||
wait_count - LAG(wait_count) OVER (PARTITION BY event_name,wait_time_milli ORDER BY CAST(begin_interval_time AS DATE))
|
||||
ELSE
|
||||
wait_count
|
||||
END wait_count
|
||||
FROM
|
||||
dba_hist_snapshot
|
||||
NATURAL JOIN
|
||||
dba_hist_event_histogram
|
||||
WHERE
|
||||
begin_interval_time > SYSDATE - 1/24
|
||||
--AND event_name LIKE 'ASM file metadata operation'
|
||||
--AND event_name LIKE 'flashback log switch'
|
||||
-- AND event_name LIKE 'KSV master wait'
|
||||
AND wait_class = 'User I/O'
|
||||
ORDER BY
|
||||
event_name
|
||||
, snap_begin
|
||||
, wait_time_milli
|
||||
/
|
||||
|
||||
16
tpt/awr/awr_last.sql
Normal file
16
tpt/awr/awr_last.sql
Normal file
@@ -0,0 +1,16 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
VAR dbid NUMBER
|
||||
VAR inst_num NUMBER
|
||||
VAR eid NUMBER
|
||||
VAR bid NUMBER
|
||||
|
||||
BEGIN
|
||||
SELECT dbid, USERENV('instance') INTO :dbid, :inst_num FROM v$database;
|
||||
SELECT MAX(snap_id) INTO :eid FROM dba_hist_snapshot WHERE dbid = :dbid AND instance_number = :inst_num;
|
||||
SELECT MAX(snap_id) INTO :bid FROM dba_hist_snapshot WHERE dbid = :dbid AND instance_number = :inst_num AND snap_id < :eid;
|
||||
END;
|
||||
/
|
||||
|
||||
SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT(:dbid, :inst_num, :bid, :eid));
|
||||
22
tpt/awr/awr_lasth.sql
Normal file
22
tpt/awr/awr_lasth.sql
Normal file
@@ -0,0 +1,22 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
VAR dbid NUMBER
|
||||
VAR inst_num NUMBER
|
||||
VAR eid NUMBER
|
||||
VAR bid NUMBER
|
||||
|
||||
BEGIN
|
||||
SELECT dbid, USERENV('instance') INTO :dbid, :inst_num FROM v$database;
|
||||
SELECT MAX(snap_id) INTO :eid FROM dba_hist_snapshot WHERE dbid = :dbid AND instance_number = :inst_num;
|
||||
SELECT MAX(snap_id) INTO :bid FROM dba_hist_snapshot WHERE dbid = :dbid AND instance_number = :inst_num AND snap_id < :eid;
|
||||
END;
|
||||
/
|
||||
|
||||
SET TERMOUT OFF PAGESIZE 0
|
||||
SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(:dbid, :inst_num, :bid, :eid))
|
||||
.
|
||||
SPOOL /tmp/awr_tmp.html
|
||||
/
|
||||
SPOOL OFF
|
||||
SET TERMOUT ON PAGESIZE 5000
|
||||
19
tpt/awr/awr_log_file_sync.sql
Normal file
19
tpt/awr/awr_log_file_sync.sql
Normal file
@@ -0,0 +1,19 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
SELECT
|
||||
CAST(begin_interval_time AS DATE) begin_time
|
||||
, AVG(CASE WHEN event_name = 'log file sync' THEN time_waited_micro/nullif(total_waits,0) END) avg_log_file_sync
|
||||
, AVG(CASE WHEN event_name = 'log file parallel write' THEN time_waited_micro/nullif(total_waits,0) END) avg_log_file_parallel_write
|
||||
FROM
|
||||
dba_hist_snapshot
|
||||
NATURAL JOIN
|
||||
dba_hist_system_event
|
||||
WHERE
|
||||
event_name IN ('log file sync', 'log file parallel write')
|
||||
AND begin_interval_time > SYSDATE - 15
|
||||
GROUP BY CAST(begin_interval_time AS DATE)
|
||||
ORDER BY
|
||||
begin_time
|
||||
/
|
||||
|
||||
31
tpt/awr/awr_mem_resize.sql
Normal file
31
tpt/awr/awr_mem_resize.sql
Normal file
@@ -0,0 +1,31 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
COL begin_interval_time FOR A30
|
||||
COL end_interval_time FOR A30
|
||||
COL stat_name FOR A50
|
||||
|
||||
|
||||
SELECT
|
||||
TO_CHAR(end_interval_time, 'YYYY-MM-DD HH24:MI:SS') snap_end_time
|
||||
, component
|
||||
, oper_type
|
||||
, TO_CHAR(start_time, 'YYYY-MM-DD HH24:MI:SS') start_time
|
||||
, TO_CHAR(end_time, 'YYYY-MM-DD HH24:MI:SS') end_time
|
||||
, target_size
|
||||
, oper_mode
|
||||
, parameter
|
||||
, initial_size
|
||||
, final_size
|
||||
, status
|
||||
FROM
|
||||
dba_hist_memory_resize_ops
|
||||
NATURAL JOIN
|
||||
dba_hist_snapshot
|
||||
WHERE
|
||||
begin_interval_time >= &1
|
||||
AND end_interval_time <= &2
|
||||
ORDER BY
|
||||
snap_end_time
|
||||
/
|
||||
|
||||
26
tpt/awr/awr_procmem.sql
Normal file
26
tpt/awr/awr_procmem.sql
Normal file
@@ -0,0 +1,26 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
BREAK ON snap_begin SKIP 1 ON snap_end ON event_name
|
||||
|
||||
COL event_name FOR A40
|
||||
|
||||
SELECT
|
||||
CAST(begin_interval_time AS DATE) snap_begin
|
||||
, TO_CHAR(CAST(end_interval_time AS DATE), 'HH24:MI') snap_end
|
||||
, category
|
||||
, num_processes
|
||||
, ROUND(allocated_max/1048576) max_mb
|
||||
, ROUND(max_allocated_max/1048576) max_max_mb
|
||||
FROM
|
||||
dba_hist_snapshot
|
||||
NATURAL JOIN
|
||||
dba_hist_process_mem_summary
|
||||
WHERE
|
||||
begin_interval_time > SYSDATE - 3
|
||||
--AND category = 'SQL'
|
||||
ORDER BY
|
||||
snap_begin
|
||||
, category
|
||||
/
|
||||
|
||||
12
tpt/awr/awr_sqlid.sql
Normal file
12
tpt/awr/awr_sqlid.sql
Normal file
@@ -0,0 +1,12 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
COL sql_text FOR A200 WORD_WRAP
|
||||
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
dba_hist_sqltext
|
||||
WHERE
|
||||
sql_id = '&1'
|
||||
/
|
||||
47
tpt/awr/awr_sqlid_binds.sql
Normal file
47
tpt/awr/awr_sqlid_binds.sql
Normal file
@@ -0,0 +1,47 @@
|
||||
-- Copyright 2023 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
-- awr_sqlid_binds.sql v0.1
|
||||
|
||||
COL binds_begin_time FOR A25
|
||||
COL binds_instance_number HEAD INST FOR 9999
|
||||
COL binds_name HEAD NAME FOR A15
|
||||
COL binds_value_string HEAD VALUE_STRING FOR A100 WRAP
|
||||
COL binds_position HEAD POS FOR 9999
|
||||
COL binds_dup_position HEAD DPOS FOR 9999
|
||||
|
||||
SELECT
|
||||
sn.begin_interval_time binds_begin_time
|
||||
, sn.dbid
|
||||
, sn.instance_number binds_instance_number
|
||||
, sb.sql_id
|
||||
, sb.name binds_name
|
||||
, sb.position binds_position
|
||||
, sb.dup_position binds_dup_position
|
||||
, sb.datatype_string
|
||||
-- , sb.character_sid
|
||||
-- , sb.precision
|
||||
-- , sb.scale
|
||||
, sb.was_captured
|
||||
, sb.last_captured
|
||||
, sb.value_string binds_value_string
|
||||
FROM
|
||||
dba_hist_snapshot sn
|
||||
, dba_hist_sqlbind sb
|
||||
WHERE
|
||||
sn.snap_id = sb.snap_id
|
||||
AND sn.dbid = sb.dbid
|
||||
AND sn.instance_number = sb.instance_number
|
||||
AND sb.sql_id = '&1'
|
||||
AND &2
|
||||
AND begin_interval_time >= &3
|
||||
AND end_interval_time <= &4
|
||||
ORDER BY
|
||||
sn.begin_interval_time
|
||||
, sn.dbid
|
||||
, sn.instance_number
|
||||
, sb.sql_id
|
||||
, sb.name
|
||||
, sb.position
|
||||
/
|
||||
|
||||
55
tpt/awr/awr_sqlstats.sql
Normal file
55
tpt/awr/awr_sqlstats.sql
Normal file
@@ -0,0 +1,55 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
SET TERMOUT OFF pagesize 5000 tab off verify off linesize 999 trimspool on trimout on null ""
|
||||
SET TERMOUT ON
|
||||
|
||||
|
||||
COL exec_per_sec FOR 99999990
|
||||
COL ela_ms_per_sec FOR 99999990
|
||||
COL rows_per_sec FOR 99999990
|
||||
COL lios_per_sec FOR 99999990
|
||||
COL blkrd_per_sec FOR 99999990
|
||||
COL cpu_ms_per_sec FOR 99999990
|
||||
COL iow_ms_per_sec FOR 99999990
|
||||
COL clw_ms_per_sec FOR 99999990
|
||||
COL apw_ms_per_sec FOR 99999990
|
||||
COL ccw_ms_per_sec FOR 99999990
|
||||
|
||||
|
||||
SELECT
|
||||
CAST(begin_interval_time AS DATE) begin_interval_time
|
||||
, sql_id
|
||||
, plan_hash_value
|
||||
, ROUND(SUM(executions_delta ) / ((CAST(end_interval_time AS DATE) - CAST(begin_interval_time AS DATE)) * 86400), 1) exec_per_sec
|
||||
, ROUND(SUM(elapsed_time_delta ) / 1000 / ((CAST(end_interval_time AS DATE) - CAST(begin_interval_time AS DATE)) * 86400), 1) ela_ms_per_sec
|
||||
, ROUND(SUM(rows_processed_delta) / ((CAST(end_interval_time AS DATE) - CAST(begin_interval_time AS DATE)) * 86400), 1) rows_per_sec
|
||||
, ROUND(SUM(buffer_gets_delta ) / ((CAST(end_interval_time AS DATE) - CAST(begin_interval_time AS DATE)) * 86400), 1) lios_per_sec
|
||||
, ROUND(SUM(disk_reads_delta ) / ((CAST(end_interval_time AS DATE) - CAST(begin_interval_time AS DATE)) * 86400), 1) blkrd_per_sec
|
||||
, ROUND(SUM(cpu_time_delta ) / 1000 / ((CAST(end_interval_time AS DATE) - CAST(begin_interval_time AS DATE)) * 86400), 1) cpu_ms_per_sec
|
||||
, ROUND(SUM(iowait_delta ) / 1000 / ((CAST(end_interval_time AS DATE) - CAST(begin_interval_time AS DATE)) * 86400), 1) iow_ms_per_sec
|
||||
, ROUND(SUM(clwait_delta ) / 1000 / ((CAST(end_interval_time AS DATE) - CAST(begin_interval_time AS DATE)) * 86400), 1) clw_ms_per_sec
|
||||
, ROUND(SUM(apwait_delta ) / 1000 / ((CAST(end_interval_time AS DATE) - CAST(begin_interval_time AS DATE)) * 86400), 1) apw_ms_per_sec
|
||||
, ROUND(SUM(ccwait_delta ) / 1000 / ((CAST(end_interval_time AS DATE) - CAST(begin_interval_time AS DATE)) * 86400), 1) ccw_ms_per_sec
|
||||
FROM
|
||||
dba_hist_snapshot sn
|
||||
, dba_hist_sqlstat st
|
||||
WHERE
|
||||
sn.snap_id = st.snap_id
|
||||
AND sn.dbid = st.dbid
|
||||
AND sn.instance_number = st.instance_number
|
||||
AND sql_id = '&1'
|
||||
AND plan_hash_value LIKE '&2'
|
||||
AND begin_interval_time >= &3
|
||||
AND end_interval_time <= &4
|
||||
GROUP BY
|
||||
CAST(begin_interval_time AS DATE)
|
||||
, CAST(end_interval_time AS DATE)
|
||||
, sql_id
|
||||
, plan_hash_value
|
||||
ORDER BY
|
||||
begin_interval_time
|
||||
, sql_id
|
||||
, plan_hash_value
|
||||
/
|
||||
|
||||
73
tpt/awr/awr_sqlstats_per_exec.sql
Normal file
73
tpt/awr/awr_sqlstats_per_exec.sql
Normal file
@@ -0,0 +1,73 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
-- awr_sqlstats_per_exec v1.01
|
||||
|
||||
SET TERMOUT OFF pagesize 5000 tab off verify off linesize 999 trimspool on trimout on null ""
|
||||
SET TERMOUT ON
|
||||
|
||||
COL executions FOR 99999990
|
||||
COL ela_ms_per_exec FOR 99999990
|
||||
COL rows_per_exec FOR 99999990.0
|
||||
COL lios_per_exec FOR 99999990
|
||||
COL blkrd_per_exec FOR 99999990
|
||||
COL cpu_ms_per_exec FOR 99999990
|
||||
COL iow_ms_per_exec FOR 99999990
|
||||
COL avg_iow_ms FOR 99999990.0
|
||||
COL clw_ms_per_exec FOR 99999990
|
||||
COL apw_ms_per_exec FOR 99999990
|
||||
COL ccw_ms_per_exec FOR 99999990
|
||||
|
||||
-- You can configure output column precision here
|
||||
|
||||
-- COL executions FOR 99999990.0
|
||||
-- COL ela_ms_per_exec FOR 99999990.0
|
||||
-- COL rows_per_exec FOR 99999990.0
|
||||
-- COL lios_per_exec FOR 99999990.0
|
||||
-- COL blkrd_per_exec FOR 99999990.0
|
||||
-- COL cpu_ms_per_exec FOR 99999990.0
|
||||
-- COL iow_ms_per_exec FOR 99999990.0
|
||||
-- COL avg_iow_ms FOR 99999990.0
|
||||
-- COL clw_ms_per_exec FOR 99999990.0
|
||||
-- COL apw_ms_per_exec FOR 99999990.0
|
||||
-- COL ccw_ms_per_exec FOR 99999990.0
|
||||
|
||||
SELECT
|
||||
CAST(begin_interval_time AS DATE) begin_interval_time
|
||||
, sql_id
|
||||
, plan_hash_value
|
||||
, SUM(executions_delta) executions
|
||||
, ROUND(SUM(elapsed_time_delta ) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta))/1000) ela_ms_per_exec
|
||||
, ROUND(SUM(cpu_time_delta ) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta))/1000) cpu_ms_per_exec
|
||||
, ROUND(SUM(rows_processed_delta) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta)),1) rows_per_exec
|
||||
, ROUND(SUM(buffer_gets_delta ) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta)),1) lios_per_exec
|
||||
, ROUND(SUM(disk_reads_delta ) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta)),1) blkrd_per_exec
|
||||
, ROUND(SUM(iowait_delta ) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta))/1000) iow_ms_per_exec
|
||||
, ROUND(SUM(iowait_delta ) / DECODE(SUM(physical_read_requests_delta)+SUM(physical_write_requests_delta),0,1
|
||||
,SUM(physical_read_requests_delta)+SUM(physical_write_requests_delta))/1000,1) avg_iow_ms
|
||||
, ROUND(SUM(clwait_delta ) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta))/1000) clw_ms_per_exec
|
||||
, ROUND(SUM(apwait_delta ) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta))/1000) apw_ms_per_exec
|
||||
, ROUND(SUM(ccwait_delta ) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta))/1000) ccw_ms_per_exec
|
||||
-- , ROUND(SUM(elapsed_time_delta - cpu_time_delta - iowait_delta - clwait_delta - apwait_delta - ccwait_delta) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta)) / 1000, 1) oth_ms_per_exec
|
||||
FROM
|
||||
dba_hist_snapshot sn
|
||||
, dba_hist_sqlstat st
|
||||
WHERE
|
||||
sn.snap_id = st.snap_id
|
||||
AND sn.dbid = st.dbid
|
||||
AND sn.instance_number = st.instance_number
|
||||
AND sql_id = '&1'
|
||||
AND plan_hash_value LIKE '&2'
|
||||
AND begin_interval_time >= &3
|
||||
AND end_interval_time <= &4
|
||||
AND (elapsed_time_delta != 0 AND cpu_time_delta != 0)
|
||||
GROUP BY
|
||||
CAST(begin_interval_time AS DATE)
|
||||
, sql_id
|
||||
, plan_hash_value
|
||||
ORDER BY
|
||||
begin_interval_time
|
||||
, sql_id
|
||||
, plan_hash_value
|
||||
/
|
||||
|
||||
102
tpt/awr/awr_sqlstats_unstable.sql
Normal file
102
tpt/awr/awr_sqlstats_unstable.sql
Normal file
@@ -0,0 +1,102 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
-- @awr/awr_sqlstats_unstable.sql version 0.1 BETA by Tanel Poder
|
||||
--
|
||||
-- detect sql_id that use a varying amount of *elapsed time per execution* across different plan hash values
|
||||
-- or across AWR time ranges
|
||||
--
|
||||
-- usage examples:
|
||||
-- a) typical use - show SQL_IDs from last 2 weeks that have different plans with different
|
||||
-- elapsed time per execution (per plan)
|
||||
--
|
||||
-- @awr/awr_sqlstats_unstable sql_id plan_hash_value sysdate-14 sysdate
|
||||
--
|
||||
-- b) special case use with SQL using literals (note that AWR may not persist many of these queries)
|
||||
-- as due to literals these tend to be executed only once
|
||||
--
|
||||
-- @awr/awr_sqlstats_unstable force_matching_signature plan_hash_value sysdate-14 sysdate
|
||||
--
|
||||
-- c) advanced use - show cases where *the same plan* (same plan hash value) uses different amounts
|
||||
-- of elapsed time per execution over time. so it's not a *plan* flipping problem
|
||||
--
|
||||
-- @awr/awr_sqlstats_unstable sql_id,plan_hash_value begin_interval_time sysdate-14 sysdate
|
||||
--
|
||||
-- Once you have found a SQL_ID of interest, you can drill down into its actual plans and elapsed times using:
|
||||
--
|
||||
-- @awr/awr_sqlstats_per_exec &sqlid % sysdate-14 sysdate
|
||||
--
|
||||
--
|
||||
-- other:
|
||||
-- Inspired by Kerry Osborne's unstable_plans.sql script - http://kerryosborne.oracle-guy.com/2008/10/unstable-plans/
|
||||
--
|
||||
|
||||
SET TERMOUT OFF pagesize 5000 tab off verify off linesize 999 trimspool on trimout on null ""
|
||||
SET TERMOUT ON
|
||||
|
||||
COL force_matching_signature FOR 99999999999999999999
|
||||
|
||||
WITH metrics AS(
|
||||
SELECT
|
||||
&1
|
||||
, MIN(CAST(begin_interval_time AS DATE)) first_seen
|
||||
, MAX(CAST(end_interval_time AS DATE)) last_seen
|
||||
, SUM(executions_delta) executions
|
||||
, ROUND(SUM(elapsed_time_delta ) / CASE WHEN SUM(executions_delta) = 0 THEN 1 ELSE SUM(executions_delta) END) ela_us_per_exec
|
||||
, ROUND(SUM(cpu_time_delta ) / NULLIF(SUM(executions_delta),0)) cpu_us_per_exec
|
||||
, ROUND(SUM(rows_processed_delta) / NULLIF(SUM(executions_delta),0),1) rows_per_exec
|
||||
, ROUND(SUM(buffer_gets_delta ) / NULLIF(SUM(executions_delta),0),1) lios_per_exec
|
||||
, ROUND(SUM(disk_reads_delta ) / NULLIF(SUM(executions_delta),0),1) blkrd_per_exec
|
||||
, ROUND(SUM(iowait_delta ) / NULLIF(SUM(executions_delta),0)) iow_us_per_exec
|
||||
, ROUND(SUM(iowait_delta ) / NULLIF(SUM(physical_read_requests_delta)+SUM(physical_write_requests_delta),0),1) avg_iow_us
|
||||
, ROUND(SUM(clwait_delta ) / NULLIF(SUM(executions_delta),0)) clw_us_per_exec
|
||||
, ROUND(SUM(apwait_delta ) / NULLIF(SUM(executions_delta),0)) apw_us_per_exec
|
||||
, ROUND(SUM(ccwait_delta ) / NULLIF(SUM(executions_delta),0)) ccw_us_per_exec
|
||||
FROM
|
||||
dba_hist_snapshot sn
|
||||
, dba_hist_sqlstat st
|
||||
WHERE
|
||||
-- join conditions
|
||||
sn.snap_id = st.snap_id
|
||||
AND sn.dbid = st.dbid
|
||||
AND sn.instance_number = st.instance_number
|
||||
-- filter conditions
|
||||
AND executions_delta > 0
|
||||
AND begin_interval_time >= &3
|
||||
AND end_interval_time <= &4
|
||||
GROUP BY
|
||||
&1, &2
|
||||
)
|
||||
, sq AS (
|
||||
SELECT
|
||||
&1
|
||||
, executions
|
||||
, ela_us_per_exec
|
||||
, STDDEV(ela_us_per_exec) OVER (PARTITION BY &1) ela_us_stddev
|
||||
FROM
|
||||
metrics
|
||||
), norm AS (
|
||||
SELECT
|
||||
&1
|
||||
, SUM(executions) total_executions
|
||||
, MIN(ela_us_per_exec) / 1000000 min_s_per_exec
|
||||
, MAX(ela_us_per_exec) / 1000000 max_s_per_exec
|
||||
, ela_us_stddev / MIN(ela_us_per_exec) ela_norm_stddev
|
||||
, ela_us_stddev / 1000000 seconds_stddev
|
||||
FROM
|
||||
sq
|
||||
GROUP BY
|
||||
&1
|
||||
, ela_us_stddev
|
||||
)
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
norm
|
||||
WHERE
|
||||
ela_norm_stddev > 3
|
||||
AND max_s_per_exec > 1 -- avoid reporting very short queries
|
||||
ORDER BY
|
||||
ela_norm_stddev DESC
|
||||
/
|
||||
|
||||
24
tpt/awr/awr_sysmetric_history.sql
Normal file
24
tpt/awr/awr_sysmetric_history.sql
Normal file
@@ -0,0 +1,24 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
SELECT
|
||||
-- CAST(begin_interval_time AS DATE) begin_time
|
||||
begin_time
|
||||
, metric_name
|
||||
, metric_unit
|
||||
, value
|
||||
FROM
|
||||
dba_hist_snapshot
|
||||
NATURAL JOIN
|
||||
dba_hist_sysmetric_history
|
||||
WHERE
|
||||
metric_name LIKE '&1'
|
||||
-- metric_name IN ('Physical Reads Per Sec')
|
||||
-- metric_name IN ('Host CPU Utilization (%)')
|
||||
-- metric_name IN ('Logons Per Sec')
|
||||
AND begin_interval_time > SYSDATE - 1
|
||||
ORDER BY
|
||||
metric_name
|
||||
, begin_time
|
||||
/
|
||||
|
||||
25
tpt/awr/awr_sysmetric_summary.sql
Normal file
25
tpt/awr/awr_sysmetric_summary.sql
Normal file
@@ -0,0 +1,25 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
SELECT
|
||||
-- CAST(begin_interval_time AS DATE) begin_time
|
||||
begin_time
|
||||
, metric_name
|
||||
, metric_unit
|
||||
, average / 100
|
||||
FROM
|
||||
dba_hist_snapshot
|
||||
NATURAL JOIN
|
||||
dba_hist_sysmetric_summary
|
||||
WHERE
|
||||
-- metric_name IN ('User Commits Per Sec', 'User Transaction Per Sec')
|
||||
-- metric_name IN ('Physical Read IO Requests Per Sec', 'Physical Write IO Requests Per Sec')
|
||||
-- metric_name IN ('Host CPU Utilization (%)')
|
||||
-- metric_name IN ('Logons Per Sec')
|
||||
REGEXP_LIKE(metric_name, '&1','i')
|
||||
AND begin_interval_time > SYSDATE - 1
|
||||
ORDER BY
|
||||
metric_name
|
||||
, begin_time
|
||||
/
|
||||
|
||||
26
tpt/awr/awr_sysstat.sql
Normal file
26
tpt/awr/awr_sysstat.sql
Normal file
@@ -0,0 +1,26 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
COL begin_interval_time FOR A30
|
||||
COL end_interval_time FOR A30
|
||||
COL stat_name FOR A50
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
TO_CHAR(end_interval_time, 'YYYY-MM-DD HH24:MI:SS') snap_end_time
|
||||
, stat_name
|
||||
, CASE WHEN value - LAG(value) OVER (PARTITION BY stat_name ORDER BY begin_interval_time) < 0 THEN value ELSE value - LAG(value) OVER (PARTITION BY stat_name ORDER BY begin_interval_time) END value
|
||||
FROM
|
||||
dba_hist_sysstat
|
||||
NATURAL JOIN
|
||||
dba_hist_snapshot
|
||||
WHERE
|
||||
REGEXP_LIKE(stat_name, '&1', 'i')
|
||||
AND begin_interval_time >= &2
|
||||
AND end_interval_time <= &3
|
||||
ORDER BY
|
||||
begin_interval_time, stat_name
|
||||
)
|
||||
WHERE value > 0
|
||||
/
|
||||
|
||||
23
tpt/awr/awr_system_event.sql
Normal file
23
tpt/awr/awr_system_event.sql
Normal file
@@ -0,0 +1,23 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
SELECT
|
||||
CAST(begin_interval_time AS DATE) begin_time
|
||||
, event_name
|
||||
, time_waited_micro
|
||||
, total_waits
|
||||
, total_timeouts
|
||||
, time_waited_micro/nullif(total_waits,0) avg_wait_micro
|
||||
FROM
|
||||
dba_hist_snapshot
|
||||
NATURAL JOIN
|
||||
dba_hist_system_event
|
||||
WHERE
|
||||
-- event_name IN ('log file sync', 'log file parallel write', 'ksfd: async disk IO')
|
||||
event_name LIKE 'SQL*Net vector data%'
|
||||
AND begin_interval_time > SYSDATE - 5
|
||||
ORDER BY
|
||||
event_name
|
||||
, begin_time
|
||||
/
|
||||
|
||||
32
tpt/awr/create_event_histogram_view.sql
Normal file
32
tpt/awr/create_event_histogram_view.sql
Normal file
@@ -0,0 +1,32 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
CREATE OR REPLACE VIEW sys.t_hist_event_histogram AS
|
||||
SELECT
|
||||
SNAP_ID -- NOT NULL NUMBER
|
||||
, DBID -- NOT NULL NUMBER
|
||||
, INSTANCE_NUMBER -- NOT NULL NUMBER
|
||||
, EVENT_ID -- NOT NULL NUMBER
|
||||
, EVENT_NAME -- NOT NULL VARCHAR2(64)
|
||||
, WAIT_CLASS_ID -- NUMBER
|
||||
, WAIT_CLASS -- VARCHAR2(64)
|
||||
, WAIT_TIME_MILLI -- NOT NULL NUMBER
|
||||
, WAIT_COUNT -- NUMBER
|
||||
, CAST(BEGIN_INTERVAL_TIME AS DATE) snapshot_begin_time -- NOT NULL TIMESTAMP(3)
|
||||
, CAST(END_INTERVAL_TIME AS DATE) snapshot_end_time -- NOT NULL TIMESTAMP(3)
|
||||
, TO_CHAR(begin_interval_time, 'YYYY') snapshot_begin_year
|
||||
, TO_CHAR(begin_interval_time, 'MM') snapshot_begin_month_num
|
||||
, TO_CHAR(begin_interval_time, 'MON') snapshot_begin_mon
|
||||
, TO_CHAR(begin_interval_time, 'Month') snapshot_begin_month
|
||||
, TO_CHAR(begin_interval_time, 'DD') snapshot_begin_day
|
||||
, TO_CHAR(begin_interval_time, 'HH24') snapshot_begin_hour
|
||||
, TO_CHAR(begin_interval_time, 'MI') snapshot_begin_minute
|
||||
FROM
|
||||
dba_hist_snapshot
|
||||
NATURAL JOIN
|
||||
dba_hist_event_histogram
|
||||
/
|
||||
|
||||
GRANT SELECT ON sys.t_hist_event_histogram TO PUBLIC;
|
||||
CREATE PUBLIC SYNONYM t_hist_event_histogram FOR sys.t_hist_event_histogram;
|
||||
|
||||
45
tpt/awr/dbload.sql
Normal file
45
tpt/awr/dbload.sql
Normal file
@@ -0,0 +1,45 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
SET LINES 999 PAGES 5000 TRIMSPOOL ON TRIMOUT ON TAB OFF
|
||||
|
||||
COL snap_time FOR A30
|
||||
|
||||
SELECT
|
||||
sn.begin_interval_time snap_time
|
||||
, ROUND(SUM(CASE WHEN metric_name = 'Average Active Sessions' THEN value END)) aas
|
||||
, ROUND(AVG(CASE WHEN metric_name = 'Average Synchronous Single-Block Read Latency' THEN value END)) iolat
|
||||
, ROUND(SUM(CASE WHEN metric_name = 'CPU Usage Per Sec' THEN value END)) cpusec
|
||||
, ROUND(SUM(CASE WHEN metric_name = 'Background CPU Usage Per Sec' THEN value END)) bgcpusec
|
||||
, ROUND(AVG(CASE WHEN metric_name = 'DB Block Changes Per Txn' THEN value END)) blkchgtxn
|
||||
, ROUND(SUM(CASE WHEN metric_name = 'Executions Per Sec' THEN value END)) execsec
|
||||
, ROUND(SUM(CASE WHEN metric_name = 'Host CPU Usage Per Sec' THEN value END)) oscpusec
|
||||
, ROUND(SUM(CASE WHEN metric_name = 'I/O Megabytes per Second' THEN value END)) iombsec
|
||||
, ROUND(SUM(CASE WHEN metric_name = 'I/O Requests per Second' THEN value END)) ioreqsec
|
||||
, ROUND(AVG(CASE WHEN metric_name = 'Logical Reads Per Txn' THEN value END)) liotxn
|
||||
, ROUND(SUM(CASE WHEN metric_name = 'Logons Per Sec' THEN value END)) logsec
|
||||
, ROUND(SUM(CASE WHEN metric_name = 'Network Traffic Volume Per Sec' THEN value END)/1048576) netmbsec
|
||||
, ROUND(SUM(CASE WHEN metric_name = 'Physical Reads Per Sec' THEN value END)) phyrdsec
|
||||
, ROUND(AVG(CASE WHEN metric_name = 'Physical Reads Per Txn' THEN value END)) phyrdtxn
|
||||
, ROUND(SUM(CASE WHEN metric_name = 'Physical Writes Per Sec' THEN value END)) phywrsec
|
||||
, ROUND(SUM(CASE WHEN metric_name = 'Redo Generated Per Sec' THEN value END)/1024) redokbsec
|
||||
, ROUND(AVG(CASE WHEN metric_name = 'Redo Generated Per Txn' THEN value END)/1024) redokbtxn
|
||||
, ROUND(AVG(CASE WHEN metric_name = 'Response Time Per Txn' THEN value END)*10) timemsectxn
|
||||
, ROUND(AVG(CASE WHEN metric_name = 'SQL Service Response Time' THEN value END)*10) timemseccall
|
||||
, ROUND(AVG(CASE WHEN metric_name = 'Total Parse Count Per Txn' THEN value END)) prstxn
|
||||
, ROUND(SUM(CASE WHEN metric_name = 'User Calls Per Sec' THEN value END)) ucallsec
|
||||
, ROUND(SUM(CASE WHEN metric_name = 'User Transaction Per Sec' THEN value END)) utxnsec
|
||||
FROM
|
||||
dba_hist_snapshot sn
|
||||
, dba_hist_sysmetric_history m
|
||||
WHERE
|
||||
sn.snap_id = m.snap_id
|
||||
AND sn.dbid = m.dbid
|
||||
AND sn.instance_number = m.instance_number
|
||||
AND sn.begin_interval_time > SYSDATE - 7
|
||||
GROUP BY
|
||||
sn.begin_interval_time
|
||||
ORDER BY
|
||||
sn.begin_interval_time
|
||||
/
|
||||
|
||||
72
tpt/awr/dstat.sql
Normal file
72
tpt/awr/dstat.sql
Normal file
@@ -0,0 +1,72 @@
|
||||
-- awr/dstat.sql by Tanel Poder v0.1
|
||||
|
||||
PROMPT This is a prototype script v0.2. It does not work correctly
|
||||
PROMPT RAC and CDB databases yet and other things may change too...
|
||||
|
||||
COL AAS HEAD "(#ses)|AAS" FOR 9999.9
|
||||
COL SBRLATms HEAD "(ms)|SBRLAT" FOR 99.90
|
||||
COL DBCPU HEAD "(%aCPU)|DBCPU" FOR 99999.90
|
||||
COL BGCPU HEAD "(%aCPU)|BGCPU" FOR 99999.90
|
||||
COL OSCPU HEAD "(%aCPU)|OSCPU" FOR 99999.90
|
||||
COL IOSIZE HEAD "(kB)|IOSIZE" FOR 99999
|
||||
COL "BLKCHG/tx" HEAD "BLKCHG/tx" FOR 9999999.0
|
||||
COL "REDOKB/s" HEAD "(kB/s)|REDOKB/s" FOR 9999999.0
|
||||
COL "NETKB/s" HEAD "(kB/s)|NETKB/s" FOR 9999999.0
|
||||
COL "IOMB/s" HEAD "(MB/s)|IOMB/s" FOR 999999.0
|
||||
COL "IOPS" HEAD "IOPS" FOR 99999999
|
||||
COL "LOGONS/s" HEAD "LOGONS/s" FOR 99999.0
|
||||
COL "EXECS/s" HEAD "EXECS/s" FOR 999999.0
|
||||
|
||||
COL "PARSE/tx" HEAD "PARSE/tx" FOR 9999999.0
|
||||
COL "UCALLS/s" HEAD "UCALLS/s" FOR 9999999.0
|
||||
COL "BLKRD/s" HEAD "BLKRD/s" FOR 9999999.0
|
||||
COL "BLKWR/s" HEAD "BLKWR/s" FOR 9999999.0
|
||||
COL "REDO/tx" HEAD "(kB)|REDO/tx" FOR 9999999.0
|
||||
COL "PARSE/tx" HEAD "PARSE/tx" FOR 9999999.0
|
||||
COL "SQLMS/call" HEAD "(ms)|SQLms/call" FOR 9999999.0
|
||||
COL "RESPMS/tx" HEAD "(ms)|RESPms/tx" FOR 9999999.0
|
||||
COL "ENQRQ/tx" HEAD "ENQRQ/tx" FOR 9999999.0
|
||||
|
||||
|
||||
SELECT
|
||||
begin_time
|
||||
-- , MAX(ROUND(intsize / 100)) seconds
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'Average Active Sessions' THEN value END),2) "AAS"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'Average Synchronous Single-Block Read Latency' THEN value END),2) "SBRLATms"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'CPU Usage Per Sec' THEN value END),2) "DBCPU"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'Background CPU Usage Per Sec' THEN value END),2) "BGCPU"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'Host CPU Usage Per Sec' THEN value END),2) "OSCPU"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'Logons Per Sec' THEN value END),2) "LOGONS/s"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'Executions Per Sec' THEN value END),2) "EXECS/s"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'I/O Megabytes per Second' THEN value END),2) "IOMB/s"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'I/O Requests per Second' THEN value END),2) "IOPS"
|
||||
, ROUND(SUM(CASE WHEN metric_name = 'I/O Megabytes per Second' THEN value END) * 1024 /
|
||||
SUM(CASE WHEN metric_name = 'I/O Requests per Second' THEN value END),2) "IOSIZE"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'Logical Reads Per Txn' THEN value END)) "LIOs/tx"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'DB Block Changes Per Txn' THEN value END),1) "BLKCHG/tx"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'User Transaction Per Sec' THEN value END),2) "UTRANS/s"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'Redo Generated Per Sec' THEN value END)/1024,2) "REDOKB/s"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'Physical Reads Per Sec' THEN value END),2) "BLKRD/s"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'Physical Writes Per Sec' THEN value END),2) "BLKWR/s"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'Physical Reads Per Txn' THEN value END),2) "BLKRD/tx"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'Network Traffic Volume Per Sec' THEN value END)/1024,2) "NETKB/s"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'Total Parse Count Per Txn' THEN value END),2) "PARSE/tx"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'User Calls Per Sec' THEN value END),2) "UCALLS/s"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'SQL Service Response Time' THEN value END) * 10,2) "SQLms/call"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'Response Time Per Txn' THEN value END) * 10,2) "RESPms/tx"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'Redo Generated Per Txn' THEN value END)/1024,2) "REDO/tx"
|
||||
, ROUND(MAX(CASE WHEN metric_name = 'Enqueue Requests Per Txn' THEN value END),2) "ENQRQ/tx"
|
||||
--, metric_name
|
||||
--, value
|
||||
--, metric_unit
|
||||
FROM
|
||||
dba_hist_sysmetric_history h
|
||||
WHERE
|
||||
dbid = SYS_CONTEXT('userenv', 'dbid')
|
||||
AND begin_time >= &1 AND end_time <= &2
|
||||
GROUP BY
|
||||
begin_time
|
||||
ORDER BY
|
||||
begin_time
|
||||
/
|
||||
|
||||
37
tpt/awr/gen_awr_report.sql
Normal file
37
tpt/awr/gen_awr_report.sql
Normal file
@@ -0,0 +1,37 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
VAR dbid NUMBER
|
||||
|
||||
PROMPT Listing latest AWR snapshots ...
|
||||
SELECT snap_id, end_interval_time
|
||||
FROM dba_hist_snapshot
|
||||
--WHERE begin_interval_time > TO_DATE('2011-06-07 07:00:00', 'YYYY-MM-DD HH24:MI:SS')
|
||||
WHERE end_interval_time > SYSDATE - 1
|
||||
ORDER BY end_interval_time;
|
||||
|
||||
ACCEPT bid NUMBER PROMPT "Enter begin snapshot id: "
|
||||
ACCEPT eid NUMBER PROMPT "Enter end snapshot id: "
|
||||
|
||||
BEGIN
|
||||
SELECT dbid INTO :dbid FROM v$database;
|
||||
END;
|
||||
/
|
||||
|
||||
SET TERMOUT OFF PAGESIZE 0 HEADING OFF LINESIZE 1000 TRIMSPOOL ON TRIMOUT ON TAB OFF
|
||||
|
||||
SPOOL awr_local_inst_1.html
|
||||
SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(:dbid, 1, &bid, &eid));
|
||||
|
||||
-- SPOOL awr_local_inst_2.html
|
||||
-- SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(:dbid, 2, &bid, &eid));
|
||||
--
|
||||
-- SPOOL awr_local_inst_3.html
|
||||
-- SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(:dbid, 3, &bid, &eid));
|
||||
|
||||
-- SPOOL awr_global.html
|
||||
-- SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_GLOBAL_REPORT_HTML(:dbid, CAST(null AS VARCHAR2(10)), &bid, &eid));
|
||||
|
||||
SPOOL OFF
|
||||
SET TERMOUT ON PAGESIZE 5000 HEADING ON
|
||||
|
||||
20
tpt/awr/gen_perfhub_report.sql
Normal file
20
tpt/awr/gen_perfhub_report.sql
Normal file
@@ -0,0 +1,20 @@
|
||||
SELECT DBMS_PERF.REPORT_PERFHUB (
|
||||
is_realtime => 0 -- 0 = dba_hist, 1 = v$ash
|
||||
, outer_start_time => sysdate-1
|
||||
, outer_end_time => sysdate
|
||||
, selected_start_time => TIMESTAMP'2023-05-15 20:15:00'
|
||||
, selected_end_time => TIMESTAMP'2023-05-15 20:45:00'
|
||||
, type=>'ACTIVE'
|
||||
)
|
||||
FROM dual
|
||||
.
|
||||
|
||||
SET HEADING OFF LINESIZE 32767 PAGESIZE 0 TRIMSPOOL ON TRIMOUT ON LONG 9999999 VERIFY OFF LONGCHUNKSIZE 100000 FEEDBACK OFF
|
||||
SET TERMOUT OFF
|
||||
|
||||
spool perfhub.html
|
||||
/
|
||||
|
||||
spool off
|
||||
SET TERMOUT ON HEADING ON PAGESIZE 5000 LINESIZE 999 FEEDBACK ON
|
||||
|
||||
5
tpt/awr/get_settings.sql
Normal file
5
tpt/awr/get_settings.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
SELECT * FROM dba_hist_wr_control
|
||||
@pr
|
||||
21
tpt/awr/other_xml.sql
Normal file
21
tpt/awr/other_xml.sql
Normal file
@@ -0,0 +1,21 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
select
|
||||
-- sql_id
|
||||
-- , child_number
|
||||
-- , plan_hash_value
|
||||
substr(extractvalue(value(d), '/hint'), 1, 100) as outline_hints
|
||||
from
|
||||
xmltable('/*/outline_data/hint'
|
||||
passing (
|
||||
select
|
||||
xmltype(other_xml) as xmlval
|
||||
from
|
||||
dba_hist_sql_plan
|
||||
where
|
||||
sql_id = '&1'
|
||||
and other_xml is not null
|
||||
)
|
||||
) d
|
||||
/
|
||||
11252
tpt/awr/perfhub.html
Normal file
11252
tpt/awr/perfhub.html
Normal file
File diff suppressed because it is too large
Load Diff
16
tpt/awr/settings.sql
Normal file
16
tpt/awr/settings.sql
Normal file
@@ -0,0 +1,16 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at https://blog.tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms and conditions.
|
||||
|
||||
PROMPT AWR Data Retention (Includes DBA_HIST ASH):
|
||||
PROMPT
|
||||
SELECT * FROM dba_hist_wr_control
|
||||
@pr
|
||||
|
||||
PROMPT Optimizer Statistics History retention:
|
||||
SELECT dbms_stats.get_stats_history_retention retention_days FROM dual;
|
||||
|
||||
PROMPT Use syntax like this to change AWR settings:
|
||||
PROMPT -- EXEC SYS.DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(interval=>15, retention=>60*24*375);
|
||||
PROMPT Statistics retention (days):
|
||||
PROMPT -- EXEC DBMS_STATS.ALTER_STATS_HISTORY_RETENTION(90);
|
||||
PROMPT
|
||||
Reference in New Issue
Block a user