Skip to content

Commit 5ee20c3

Browse files
committed
Wed Apr 13 19:23:49 CDT 2016
1 parent 270740f commit 5ee20c3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+2937
-620
lines changed

.DS_Store

6 KB
Binary file not shown.
Binary file not shown.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/*
2+
CATEGORY - DEFAULT, SAVED, OTHER, etc...
3+
STATUS - ENABLED, DISABLED
4+
NAME -
5+
DESCRIPTION -
6+
*/
7+
exec dbms_sqltune.alter_sql_profile('&profile_name', '&attribute', '&value');
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*
2+
EDITIONABLE
3+
FOREIGN_SQL_SYNTAX
4+
TRANSLATION_ERROR
5+
TRANSLATION_ERROR
6+
TRANSLATE_NEW_SQL
7+
TRACE_TRANSLATION
8+
TRANSLATOR Name of the SQL translation profile attribute that specifies the translator package
9+
ATTR_VALUE_TRUE
10+
ATTR_VALUE_FALSE
11+
*/
12+
exec DBMS_SQL_TRANSLATOR.SET_ATTRIBUTE('&profile_name','&attribute','&value');
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
----------------------------------------------------------------------------------------
2+
--
3+
-- File name: as.sql (Active Sessions)
4+
--
5+
-- Purpose: Show Active SQL statements (except this one).
6+
--
7+
-- Author: Kerry Osborne
8+
--
9+
-- See kerryosborne.oracle-guy.com for additional information.
10+
---------------------------------------------------------------------------------------
11+
col username format a13
12+
col prog format a10 trunc
13+
col sql_text format a51 trunc
14+
col sid format 9999
15+
col plan_hash_value format 999999999999
16+
col child for 99999
17+
col execs format 999,999,999
18+
col avg_etime format 99,999.9999
19+
col avg_pio format 9,999,999.9
20+
col avg_lio format 99,999,999,999
21+
break on sql_text skip 1
22+
select /* as.sql */ sid, substr(program,1,19) prog, b.sql_id, sql_child_number child, plan_hash_value, executions execs,
23+
disk_reads/decode(nvl(executions,0),0,1,executions) avg_pio,
24+
buffer_gets/decode(nvl(executions,0),0,1,executions) avg_lio,
25+
(elapsed_time/decode(nvl(executions,0),0,1,executions))/1000000 avg_etime,
26+
sql_text
27+
from v$session a, v$sql b
28+
where status = 'ACTIVE'
29+
and username is not null
30+
and a.sql_id = b.sql_id
31+
and a.sql_child_number = b.child_number
32+
-- and audsid != SYS_CONTEXT('userenv','sessionid')
33+
and sql_text not like 'select /* as.sql */ sid, substr(program,1,19) prog, b.sql_id, sql_child_number child, plan_hash_value, ex%'
34+
order by sql_id, sql_child_number
35+
/
36+
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
set lines 155
2+
col execs for 999,999,999
3+
col avg_etime for 999,999.999
4+
col avg_lio for 999,999,999.9
5+
col avg_pio for 999,999,999.9
6+
col begin_interval_time for a30
7+
col node for 99999
8+
break on plan_hash_value on startup_time skip 1
9+
select ss.snap_id, ss.instance_number node, begin_interval_time, sql_id, plan_hash_value,
10+
nvl(executions_delta,0) execs,
11+
(elapsed_time_delta/decode(nvl(executions_delta,0),0,1,executions_delta))/1000000 avg_etime,
12+
(buffer_gets_delta/decode(nvl(executions_delta,0),0,1,executions_delta)) avg_lio,
13+
(disk_reads_delta/decode(nvl(executions_delta,0),0,1,executions_delta)) avg_pio
14+
from DBA_HIST_SQLSTAT S, DBA_HIST_SNAPSHOT SS
15+
where sql_id = nvl('&sql_id','4dqs2k5tynk61')
16+
and ss.snap_id = S.snap_id
17+
and ss.instance_number = S.instance_number
18+
and s.instance_number like nvl('&instance_number',s.instance_number)
19+
order by 1, 2, 3
20+
/
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
-- Note that I have modified this script slightly to include snaps with 0 executions.
2+
-- This is to account for situations with very long running statements (that generally
3+
-- cross snapshot boundaries). In these situations, the executions_delta is incremented
4+
-- in the snapshot when the statement begins. There will be 0 executions_delta in
5+
-- subsequent snapshots, but the time and lio's should still be considered.
6+
set lines 155
7+
col execs for 999,999,999
8+
col etime for 999,999,999.9
9+
col avg_etime for 999,999.999
10+
col avg_cpu_time for 999,999.999
11+
col avg_lio for 999,999,999.9
12+
col avg_pio for 9,999,999.9
13+
col begin_interval_time for a30
14+
col node for 99999
15+
break on plan_hash_value on startup_time skip 1
16+
select sql_id, plan_hash_value,
17+
decode(sum(execs),0,1,sum(execs)) execs,
18+
sum(etime) etime,
19+
sum(etime)/decode(sum(execs),0,1,sum(execs)) avg_etime,
20+
sum(cpu_time)/decode(sum(execs),0,1,sum(execs)) avg_cpu_time,
21+
sum(lio)/decode(sum(execs),0,1,sum(execs)) avg_lio,
22+
sum(pio)/decode(sum(execs),0,1,sum(execs)) avg_pio
23+
from (
24+
-- select decode(sum(execs),0,1,sum(execs)) execs, sum(etime) etime, sum(cpu_time) cpu_time, sum(lio) lio, sum(pio), sql_id, plan_hash_value from (
25+
select ss.snap_id, ss.instance_number node, begin_interval_time, sql_id, plan_hash_value,
26+
nvl(executions_delta,0) execs,
27+
elapsed_time_delta/1000000 etime,
28+
(elapsed_time_delta/decode(nvl(executions_delta,0),0,1,executions_delta))/1000000 avg_etime,
29+
buffer_gets_delta lio,
30+
disk_reads_delta pio,
31+
cpu_time_delta/1000000 cpu_time,
32+
(buffer_gets_delta/decode(nvl(buffer_gets_delta,0),0,1,executions_delta)) avg_lio,
33+
(cpu_time_delta/decode(nvl(executions_delta,0),0,1,executions_delta)) avg_cpu_time
34+
from DBA_HIST_SQLSTAT S, DBA_HIST_SNAPSHOT SS
35+
where sql_id = nvl('&sql_id','114hx6ysjt86v')
36+
and ss.snap_id = S.snap_id
37+
and ss.instance_number = S.instance_number
38+
-- and executions_delta > 0
39+
)
40+
group by sql_id, plan_hash_value
41+
order by 5
42+
/
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
----------------------------------------------------------------------------------------
2+
--
3+
-- File name: baseline_hints.sql
4+
--
5+
-- Purpose: Show hints associated with a SQL Plan Baseline.
6+
-
7+
-- Author: Kerry Osborne
8+
--
9+
-- Usage: This scripts prompts for one value.
10+
--
11+
-- baseline_name: the name of the basleine to be used
12+
--
13+
-- Description: This script pulls the hints associated with a SQL Profile.
14+
--
15+
-- Mods: Modified to check for 11g or 12c as the hint structure changed.
16+
-- Note that 12c actually stores a plan table (but still uses hints).
17+
--
18+
-- See kerryosborne.oracle-guy.com for additional information.
19+
---------------------------------------------------------------------------------------
20+
--
21+
set serverout on format wrapped
22+
set sqlblanklines on
23+
set feedback off
24+
accept baseline_plan_name -
25+
prompt 'Enter value for baseline_plan_name: ' -
26+
default 'X0X0X0X0'
27+
28+
declare
29+
ar_baseline_hints sys.sqlprof_attr;
30+
cl_sql_text clob;
31+
version varchar2(3);
32+
unsupported_version varchar2(1);
33+
l_category varchar2(30);
34+
l_force_matching varchar2(3);
35+
b_force_matching boolean;
36+
begin
37+
select regexp_replace(version,'\..*') into version from v$instance;
38+
39+
if version = '11' then
40+
41+
-- dbms_output.put_line('version: '||version);
42+
execute immediate -- to avoid 942 error
43+
'select extractvalue(value(d), ''/hint'') as outline_hints '||
44+
'from xmltable(''/outline_data/hint'' passing ( '||
45+
'select xmltype(comp_data) as xmlval '||
46+
'from sqlobj$data sod, sqlobj$ so '||
47+
'where so.signature = sod.signature '||
48+
'and so.plan_id = sod.plan_id '||
49+
'and comp_data is not null '||
50+
'and name like ''&baseline_plan_name'')) d'
51+
bulk collect
52+
into ar_baseline_hints;
53+
54+
elsif version = '12' then
55+
56+
-- dbms_output.put_line('version: '||version);
57+
execute immediate -- to avoid 942 error
58+
'select extractvalue(value(d), ''/hint'') as outline_hints '||
59+
'from xmltable(''/other_xml//outline_data/hint'' passing ('||
60+
'select xmltype(other_xml) as xmlval '||
61+
'from SQLOBJ$PLAN sod, sqlobj$ so '||
62+
'where so.signature = sod.signature '||
63+
'and so.plan_id = sod.plan_id '||
64+
'and other_xml is not null '||
65+
'and name like ''&&baseline_plan_name'')) d'
66+
bulk collect
67+
into ar_baseline_hints;
68+
69+
else
70+
71+
unsupported_version := 'Y';
72+
73+
end if;
74+
75+
if unsupported_version = 'Y' then
76+
dbms_output.put_line(' ');
77+
dbms_output.put_line('This script does not support version '||version);
78+
dbms_output.put_line(' ');
79+
else
80+
dbms_output.put_line(' ');
81+
dbms_output.put_line('HINT');
82+
dbms_output.put_line('------------------------------------------------------------------------------------------------------------------------------------------------------');
83+
for i in 1..ar_baseline_hints.count loop
84+
dbms_output.put_line(ar_baseline_hints(i));
85+
end loop;
86+
dbms_output.put_line(' ');
87+
dbms_output.put_line(ar_baseline_hints.count||' rows selected.');
88+
dbms_output.put_line(' ');
89+
end if;
90+
91+
end;
92+
/
93+
undef baseline_plan__name
94+
set feedback on
95+
set serverout off
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
set lines 155
2+
col sql_text for a35 trunc
3+
col last_executed for a28
4+
col enabled for a7
5+
col plan_hash_value for a16
6+
col last_executed for a16
7+
select spb.sql_handle, spb.plan_name, to_char(so.plan_id) plan_hash_value,
8+
dbms_lob.substr(sql_text,3999,1) sql_text,
9+
spb.enabled, spb.accepted, spb.fixed,
10+
to_char(spb.last_executed,'dd-mon-yy HH24:MI') last_executed
11+
from
12+
dba_sql_plan_baselines spb, sqlobj$ so
13+
where spb.signature = so.signature
14+
and spb.plan_name = so.name
15+
and dbms_lob.substr(sql_text,3999,1) like nvl('&sql_text', dbms_lob.substr(sql_text,3999,1))
16+
-- spb.sql_text like nvl('%'||'&sql_text'||'%',spb.sql_text)
17+
and spb.sql_handle like nvl('&name',spb.sql_handle)
18+
and spb.plan_name like nvl('&plan_name',spb.plan_name)
19+
/

0 commit comments

Comments
 (0)