47 lines
1.1 KiB
SQL
47 lines
1.1 KiB
SQL
set serveroutput ON
|
|
|
|
declare
|
|
sql_text CLOB;
|
|
h SYS.SQLPROF_ATTR;
|
|
signature NUMBER;
|
|
signaturef NUMBER;
|
|
begin
|
|
/* Replace values as you wish */
|
|
|
|
h := SYS.SQLPROF_ATTR(
|
|
q'[BEGIN_OUTLINE_DATA]',
|
|
q'[IGNORE_OPTIM_EMBEDDED_HINTS]',
|
|
q'[OPTIMIZER_FEATURES_ENABLE('19.1.0')]',
|
|
q'[DB_VERSION('19.1.0')]',
|
|
q'[ALL_ROWS]',
|
|
q'[OUTLINE_LEAF(@"SEL$1")]',
|
|
q'[FULL(@"SEL$1" "D"@"SEL$1")]',
|
|
q'[END_OUTLINE_DATA]'
|
|
);
|
|
|
|
select SQL_FULLTEXT into sql_text from gv$sql where sql_id='&&1' and CHILD_NUMBER=0;
|
|
|
|
signature := DBMS_SQLTUNE.SQLTEXT_TO_SIGNATURE(sql_text);
|
|
signaturef := DBMS_SQLTUNE.SQLTEXT_TO_SIGNATURE(sql_text, TRUE);
|
|
|
|
DBMS_SQLTUNE.IMPORT_SQL_PROFILE (
|
|
sql_text => sql_text,
|
|
profile => h,
|
|
name => 'sqlprof_&&1',
|
|
description => 'sqlprof_&&1 '||signature||' '||signaturef||'',
|
|
category => 'DEFAULT',
|
|
validate => TRUE,
|
|
replace => TRUE,
|
|
force_match => FALSE /* TRUE:FORCE (match even when different literals in SQL). FALSE:EXACT (similar to CURSOR_SHARING) */ );
|
|
|
|
exception
|
|
when others then
|
|
dbms_output.put_line('Getting error: '||sqlerrm);
|
|
|
|
end;
|
|
/
|
|
|
|
set serveroutput OFF
|
|
|
|
|