Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1369324
  • 博文数量: 172
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3831
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-30 13:00
个人简介

About me:Oracle ACE pro,optimistic,passionate and harmonious. Focus on ORACLE,MySQL and other database programming,peformance tuning,db design, j2ee,Linux/AIX,Architecture tech,etc

文章分类

全部博文(172)

文章存档

2024年(27)

2023年(28)

2022年(43)

2020年(62)

2014年(3)

2013年(9)

分类: Oracle

2023-05-04 09:02:24

如果有多个执行计划,可以使用coe脚本快速绑定,如果没有多个执行计划,如果可以用hints构造更好的执行计划,则可以使用自定义hints实现SQL PROFILE,步骤如下:

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;
/  

 



阅读(4048) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~