oracle sql profile固定执行计划

使用sql profile固定执行计划实验

已有表TACCOINFO

create table TACCOINFO
(
  vc_tradeacco             VARCHAR2(17) not null
);
create unique index IACCOINFO_TRADEACCO on TACCOINFO (VC_TRADEACCO);


下面是实验过程

1. 原sql执行计划 select * from taccoinfo t where t.vc_tradeacco = '0001';会走唯一性索引扫描


2.新sql执行计划select /*+ full(t)*/* from taccoinfo t where t.vc_tradeacco = '0001'; 全表扫描


3.获取新sql的sql_id  3p621f6k5pdqt


4.获取新sql的outline



5.创建sql profile(SQLPROFILE_001)


6.查看是否使用sql profile


select * from taccoinfo t where t.vc_tradeacco = '1002';


7.删除sql proflie


8.执行计划变为唯一性索引扫描



创建sql profile

DBMS_SQLTUNE.IMPORT_SQL_PROFILE( 
  sql_text => 'FULL QUERY TEXT',  
  profile => sqlprof_attr('HINT SPECIFICATION WITH FULL OBJECT ALIASES'),  
  name => 'PROFILE NAME', 
  force_match => TRUE/FALSE, 
  replace=> TRUE/FALSE);  

sql_text用于指定sql的全文本,可查询V$SQLAREA.SQL_FULLTEXT或DBA_HIST_SQLTEXT.SQL_TEXT获得

 profile => sqlprof_attr 指定执行计划


sql profile相关视图

SELECT name, created,category,sql_Text from dba_sql_profiles ORDER BY created DESC; 

SELECT sql_attr.attr_val outline_hints
  FROM dba_sql_profiles sql_profiles, sys.SQLPROF$ATTR sql_attr
 WHERE sql_profiles.signature = sql_attr.signature
   AND sql_profiles.name = 'SQLPROFILE_001'
 ORDER BY sql_attr.attr# ASC;

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值