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