82 lines
2.5 KiB
MySQL
82 lines
2.5 KiB
MySQL
@@header
|
|
|
|
/*
|
|
*
|
|
* Author : Vishal Gupta
|
|
* Purpose : Create SQL Profile from AWR Repository
|
|
* Parameters : 1 - SQL ID
|
|
* 2 - PLAN_HASH_VALUE
|
|
* 3 - SQL Profile Categor, usually "DEFAULT"
|
|
* 4 - FORCE_MATCH, possibile values - TRUE or FALSE
|
|
* 5 - SQL Profile Description
|
|
*
|
|
*
|
|
* Revision History:
|
|
* ===================
|
|
* Date Author Description
|
|
* --------- ------------ -----------------------------------------
|
|
* 16-May-12 Vishal Gupta Created
|
|
*
|
|
*/
|
|
|
|
|
|
DEFINE SQLID="&&1"
|
|
DEFINE PLAN_HASH_VALUE="&&2"
|
|
DEFINE CATEGORY="&&3"
|
|
DEFINE FORCE_MATCH="&&4"
|
|
DEFINE DESCRIPTION="&&5"
|
|
|
|
set serveroutput on
|
|
declare
|
|
ar_profile_hints sys.sqlprof_attr;
|
|
cl_sql_text clob;
|
|
l_profile_name VARCHAR2(30) := 'PROF_' || '&&SQLID' || '_' || '&&PLAN_HASH_VALUE';
|
|
begin
|
|
SELECT extractvalue(value(d), '/hint') AS outline_hints
|
|
bulk collect
|
|
INTO ar_profile_hints
|
|
FROM xmltable('/*/outline_data/hint' passing
|
|
(SELECT xmltype(other_xml) AS xmlval
|
|
FROM dba_hist_sql_plan s
|
|
, v$database d
|
|
WHERE d.dbid = s.dbid
|
|
AND sql_id = '&&SQLID'
|
|
AND plan_hash_value = &&PLAN_HASH_VALUE
|
|
AND other_xml IS NOT NULL
|
|
) ) d;
|
|
|
|
SELECT sql.sql_text
|
|
INTO cl_sql_text
|
|
FROM dba_hist_sqltext sql
|
|
, v$database d
|
|
WHERE d.dbid = sql.dbid
|
|
AND sql.sql_id = '&&SQLID';
|
|
|
|
dbms_sqltune.import_sql_profile( sql_text => cl_sql_text
|
|
, profile => ar_profile_hints
|
|
, category => '&&CATEGORY'
|
|
, name => l_profile_name
|
|
, description => '&&DESCRIPTION'
|
|
-- use force_match => true
|
|
-- to use CURSOR_SHARING=SIMILAR
|
|
-- behaviour, i.e. match even with
|
|
-- differing literals
|
|
, force_match => &&FORCE_MATCH
|
|
-- , replace => true
|
|
);
|
|
|
|
dbms_output.put_line(' ');
|
|
dbms_output.put_line('SQL Profile '||l_profile_name||' created.');
|
|
dbms_output.put_line(' ');
|
|
|
|
end;
|
|
/
|
|
|
|
UNDEFINE SQLID
|
|
UNDEFINE PLAN_HASH_VALUE
|
|
UNDEFINE CATEGORY
|
|
UNDEFINE FORCE_MATCH
|
|
UNDEFINE DESCRIPTION
|
|
|
|
@@footer
|