/
sqlid_activity.sql
100 lines (78 loc) · 3.58 KB
/
sqlid_activity.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
-- 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 PAGESIZE 5000 LINESIZE 1000 TRIMSPOOL ON TRIMOUT ON TAB OFF
DEF sqlset_name="GPN_MON18"
VAR dbid NUMBER
VAR inst_id NUMBER
COL bdate NEW_VALUE def_bdate
COL edate NEW_VALUE def_edate
SET TERMOUT OFF
SELECT
TO_CHAR(SYSDATE-1/24, 'YYYY-MM-DD HH24:MI') bdate
, TO_CHAR(SYSDATE , 'YYYY-MM-DD HH24:MI') edate
FROM
dual
/
SET TERMOUT ON
ACCEPT sqlid CHAR FORMAT A13 DEFAULT '%' PROMPT "Enter SQL ID [ % ]: "
SPOOL sql_activity_&sqlid..txt
ACCEPT bdate DATE FORMAT 'YYYY-MM-DD HH24:MI' DEFAULT '&def_bdate' PROMPT "Enter begin time [&def_bdate]: "
ACCEPT edate DATE FORMAT 'YYYY-MM-DD HH24:MI' DEFAULT '&def_edate' PROMPT "Enter end time [&def_edate]: "
PROMPT Spooling into sql_activity_&sqlid..txt
BEGIN
SELECT inst_id, dbid INTO :inst_id, :dbid FROM gv$database;
END;
/
SELECT
TO_CHAR(sample_time, 'YYYY-MM-DD HH24')||':00' sample_hour
, sql_id
, sql_plan_hash_value
, COUNT(*) * 10 seconds
, ROUND(COUNT(*) * 10 / 3600, 2) AAS
, COUNT(DISTINCT sql_exec_start||sql_exec_id) sampled_execs
FROM
dba_hist_active_sess_history
WHERE
dbid = :dbid
-- AND instance_number = :inst_id
AND sample_time BETWEEN TO_DATE('&bdate', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('&edate', 'YYYY-MM-DD HH24:MI:SS')
AND sql_id LIKE '&sqlid'
GROUP BY
TO_CHAR(sample_time, 'YYYY-MM-DD HH24')||':00'
, sql_id
, sql_plan_hash_value
ORDER BY
sample_hour
, sql_id
/
SET PAGESIZE 0 HEADING OFF
PROMPT
PROMPT =======================================================================================================
PROMPT =========================================== DISPLAY_SQLSET ============================================
PROMPT =======================================================================================================
PROMPT
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_SQLSET('&sqlset_name', '&sqlid', null, 'TYPICAL +ALIAS +MEMSTATS +NOTE'));
PROMPT
PROMPT =======================================================================================================
PROMPT ============================================= DISPLAY_AWR =============================================
PROMPT =======================================================================================================
PROMPT
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_AWR('&sqlid', null, null, 'ALL'))
/
PROMPT
PROMPT =======================================================================================================
PROMPT =============================== ASH Report for SQL ID &sqlid ===================================
PROMPT =======================================================================================================
PROMPT
SET VERIFY ON
-- Oracle 10.2 requires the :inst_id to be present (and not NULL)
SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.ASH_REPORT_TEXT(:dbid, :inst_id, TO_DATE('&bdate', 'YYYY-MM-DD HH24:MI'), TO_DATE('&edate', 'YYYY-MM-DD HH24:MI'), null, null, null, DECODE('&sqlid', '%', NULL, '&sqlid')))
WHERE exists (SELECT version FROM v$instance WHERE version LIKE '10%')
UNION ALL
SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.ASH_REPORT_TEXT(:dbid, NULL, TO_DATE('&bdate', 'YYYY-MM-DD HH24:MI'), TO_DATE('&edate', 'YYYY-MM-DD HH24:MI'), null, null, null, DECODE('&sqlid', '%', NULL, '&sqlid')))
WHERE exists (SELECT version FROM v$instance WHERE version LIKE '11%')
/
SET VERIFY OFF
SPOOL OFF
SET TERMOUT ON PAGESIZE 5000 HEADING ON
PROMPT Done. Output file: sql_activity_&sqlid..txt