1.用hints写好SQL执行,然后执行
explain plan for
select .... 新SQL;
2.查询对应的outline,也就是下面要绑定的q'[那些
select * from table(dbms_xplan.display(null,null,'+outline'));
3.将上面的outline取出来,放到ue里,用列模式,前面加q'[ 后面加]', 注意把{BANNED}最佳后一条的逗号去掉,然后按照下面的方式拼好语句,注意sql_id,profile名字修改,执行
执行完毕后看原始语句的执行计划部分是否绑定成功
|
declare
v_hints sys.sqlprof_attr; v_sql_id clob; begin v_hints := sys.sqlprof_attr ( q'[BEGIN_OUTLINE_DATA]', q'[USE_NL(@"SEL$3" "F"@"SEL$3")]', q'[USE_NL(@"SEL$3" "H"@"SEL$3")]', q'[USE_NL(@"SEL$3" "E"@"SEL$3")]', q'[USE_NL(@"SEL$3" "A"@"SEL$3")]', q'[USE_NL(@"SEL$3" "B"@"SEL$3")]', q'[LEADING(@"SEL$3" "G"@"SEL$3" "B"@"SEL$3" "A"@"SEL$3" "E"@"SEL$3" "H"@"SEL$3" "F"@"SEL$3")]', 。。。 q'[IGNORE_OPTIM_EMBEDDED_HINTS]', q'[END_OUTLINE_DATA]' ); select sql_text into v_sql_id from gv$sql where sql_id='&sql_id' and rownum=1; dbms_sqltune.import_sql_profile(v_sql_id,v_hints,'profile_&sql_id',force_match => TRUE); end; / |