2026-03-12 20:23:15
This commit is contained in:
133
vg/awr_sql_binds.sql
Normal file
133
vg/awr_sql_binds.sql
Normal file
@@ -0,0 +1,133 @@
|
||||
@@header
|
||||
|
||||
/*
|
||||
*
|
||||
* Author : Vishal Gupta
|
||||
* Purpose : Display SQL Binds from AWR
|
||||
* Version : 10.2 and above
|
||||
* Parameters : 1 - SQL_ID
|
||||
* 2 - Number of Days (Default 7 days)
|
||||
* 2 - Whereclause
|
||||
*
|
||||
*
|
||||
* Revision History:
|
||||
* ===================
|
||||
* Date Author Description
|
||||
* --------- ------------ -----------------------------------------
|
||||
* 27-Aug-15 Vishal Gupta Created
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/************************************
|
||||
* INPUT PARAMETERS
|
||||
************************************/
|
||||
UNDEFINE sql_id
|
||||
UNDEFINE days
|
||||
UNDEFINE whereclause
|
||||
UNDEFINE force_matching_signature
|
||||
UNDEFINE use_force_matching_signature
|
||||
|
||||
DEFINE sql_id="&&1"
|
||||
DEFINE days="&&2"
|
||||
DEFINE whereclause="&&3"
|
||||
DEFINE force_matching_signature=""
|
||||
|
||||
COLUMN _days NEW_VALUE days NOPRINT
|
||||
COLUMN _force_matching_signature NEW_VALUE force_matching_signature NOPRINT
|
||||
|
||||
set term off
|
||||
SELECT DECODE('&&days','','7','&&days') "_days"
|
||||
, DECODE('&&sql_id','%','%','') "_force_matching_signature"
|
||||
FROM DUAL
|
||||
;
|
||||
|
||||
set term on
|
||||
|
||||
|
||||
COLUMN _force_matching_signature NEW_VALUE force_matching_signature NOPRINT
|
||||
|
||||
set term off
|
||||
select to_char(ss2.force_matching_signature) "_force_matching_signature"
|
||||
from v$database d
|
||||
, dba_hist_sqlstat ss2
|
||||
where d.dbid = ss2.dbid
|
||||
AND ss2.sql_id = '&&sql_id' and rownum = 1;
|
||||
|
||||
select CASE WHEN '&&force_matching_signature' IS NULL THEN '0'
|
||||
WHEN '&&force_matching_signature' = '' THEN '0'
|
||||
ELSE '&&force_matching_signature'
|
||||
END "_force_matching_signature"
|
||||
from dual
|
||||
;
|
||||
|
||||
set term on
|
||||
|
||||
/************************************/
|
||||
|
||||
Prompt
|
||||
Prompt **************************************************************
|
||||
Prompt * AWR SQL Bind Values
|
||||
Prompt * (Force Matching Signature = '&&force_matching_signature')
|
||||
PROMPT *
|
||||
PROMPT * Input Parameters
|
||||
PROMPT * - SQL Id = '&&sql_id'
|
||||
PROMPT * - Days = '&&days'
|
||||
PROMPT * - WhereClause = '&&whereclause'
|
||||
Prompt **************************************************************
|
||||
|
||||
COLUMN seperator HEADING "!|!|!|!" FORMAT a1
|
||||
COLUMN end_interval_time HEADING "Snap Time" FORMAT a15
|
||||
COLUMN instance_number HEADING "I#" FORMAT 99
|
||||
COLUMN SQL_ID HEADING "SQLId" FORMAT a13
|
||||
COLUMN plan_hash_value HEADING "Plan|Hash|Value" FORMAT 999999999999
|
||||
COLUMN bind_values HEADING "Bind Values" FORMAT a100
|
||||
COLUMN bind_datatype HEADING "Bind DataType" FORMAT a80
|
||||
|
||||
SELECT TO_CHAR(s.end_interval_time,'DD-MON-YY HH24:MI') end_interval_time
|
||||
, ss.instance_number
|
||||
, ss.sql_id
|
||||
, ss.plan_hash_value
|
||||
, (select listagg(NVL(name,':B' || position)
|
||||
||'['
|
||||
|| datatype_string || NVL2(scale
|
||||
,'(' || scale || NVL2(precision,','|| precision,'') || ')'
|
||||
,''
|
||||
)
|
||||
|| ']'
|
||||
||'='
|
||||
|| CASE
|
||||
WHEN datatype_string <> 'TIMESTAMP' THEN NVL(value_string,'NULL')
|
||||
ELSE TO_CHAR(ANYDATA.ACCESStimestamp(VALUE_ANYDATA))
|
||||
END
|
||||
,','
|
||||
) WITHIN GROUP (order by position)
|
||||
from table(dbms_sqltune.extract_binds(ss.BIND_DATA))
|
||||
) bind_values
|
||||
/*
|
||||
, (select listagg(NVL(name,':B' || position) || '='
|
||||
|| datatype_string || NVL2(scale,'(' || scale || NVL2(precision,','|| precision, '') || ')' ,'' )
|
||||
,','
|
||||
) WITHIN GROUP (order by position)
|
||||
from table(dbms_sqltune.extract_binds(ss.BIND_DATA))
|
||||
) bind_datatype
|
||||
*/
|
||||
from v$database d
|
||||
JOIN dba_hist_snapshot s ON s.dbid = d.dbid
|
||||
JOIN dba_hist_sqlstat ss ON ss.dbid = s.dbid AND ss.instance_number = s.instance_number AND ss.snap_id = s.snap_id
|
||||
AND ss.executions_delta > 0
|
||||
where s.end_interval_time > SYSDATE - &&days
|
||||
AND ss.sql_id LIKE CASE ss.force_matching_signature
|
||||
WHEN 0 THEN '&&sql_id'
|
||||
ELSE '%'
|
||||
END
|
||||
AND ss.force_matching_signature = '&&force_matching_signature'
|
||||
&&whereclause
|
||||
ORDER BY s.end_interval_time
|
||||
, ss.instance_number
|
||||
;
|
||||
|
||||
|
||||
@@footer
|
||||
Reference in New Issue
Block a user