ITPUB论坛-中国最专业的IT技术社区

 
 注册
热搜:
查看: 289|回复: 13

[参数设置] 请问11g里无法创建sql基线该怎么办?

[复制链接]
论坛徽章:
0
跳转到指定楼层
1#
发表于 2017-12-5 09:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目标生产机版本是11.2.0.3,做过rman异机迁移,迁移的时候从rac降为单实例了,感觉迁移后有些oracle的功能就不正常。查看object无效状态数量很少,都是业务用户下的函数失效。查看组件版本和状态,也均显示正常。目前使用LOAD_PLANS_FROM_CURSOR_CACHE绑定基线再查看dba_sql_plan_baselines视图始终没有结果。11g的自适应游标让我头疼,一个比较复杂的sql生成了多个版本的执行计划,消耗的cpu时间从几千至几十万毫秒不等,现在很需要使用绑定基线的功能。请教这情况该怎么办?
认证徽章
论坛徽章:
5
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:29鲜花蛋
日期:2011-12-20 16:06:45娜美
日期:2017-12-15 13:56:33技术图书徽章
日期:2017-11-17 09:13:02妮可·罗宾
日期:2017-11-17 10:43:23
2#
发表于 2017-12-5 14:15 | 只看该作者
show parameter optimizer_use_sql_plan_baselines   
看下

使用道具 举报

回复
认证徽章
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
3#
发表于 2017-12-5 14:24 | 只看该作者
本帖最后由 sqysl 于 2017-12-5 14:25 编辑

1、最好贴下使用dbms_spm.load_plans_from_cursor_cache的过程,以便大家更好的判断和帮到楼主;
2、ACS是11g中解决绑定变量相关问题的,用SPM前,最好确定是否为绑定变量的SQL语句,以及用SPM是否合适。

使用道具 举报

回复
论坛徽章:
0
4#
 楼主| 发表于 2017-12-6 09:09 | 只看该作者
guocun09 发表于 2017-12-5 14:15
show parameter optimizer_use_sql_plan_baselines   
看下

show parameter optimizer_use_sql_plan_baselines

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
optimizer_use_sql_plan_baselines     boolean     TRUE

使用道具 举报

回复
论坛徽章:
0
5#
 楼主| 发表于 2017-12-6 09:13 | 只看该作者
sqysl 发表于 2017-12-5 14:24
1、最好贴下使用dbms_spm.load_plans_from_cursor_cache的过程,以便大家更好的判断和帮到楼主;
2、ACS是 ...

好的,我补充下,目标sql有51个绑定变量,我用以下语句查出b5xcb37zkxn5u的合适的plan_hash_value为2121469830:
select a.INSTANCE_NUMBER inst_id,to_char(b.END_INTERVAL_TIME,'yyyymmdd hh24:mi:ss') time,plan_hash_value,buffer_gets_delta/executions_delta get_exec, disk_reads_delta/executions_delta read_exec,cpu_time_delta/executions_delta/1000 cpu_exec_ms  ,elapsed_time_delta/executions_delta/1000 elaps_exec_ms  ,parsing_schema_id p_user,ROWS_PROCESSED_delta/executions_delta rows_exec,EXECUTIONS_DELTA execs
    from dba_hist_sqlstat a, dba_hist_snapshot b
    where a.sql_id='b5xcb37zkxn5u'
    and a.snap_id = b.snap_id
    and a.instance_number = b.instance_number
    and b.END_INTERVAL_TIME between sysdate - 3 and sysdate
    and executions_delta>0  order by 2,1;


再执行以下语句绑定基线,执行未报错:
DECLARE  
k1 pls_integer;  
begin  
k1 := DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE (  
sql_id=>'b5xcb37zkxn5u',  
plan_hash_value=>2121469830,  
fixed=>'NO',  
enabled=>'YES');  
end;  
/  


查询dba_sql_plan_baselines结果却依然为空。

使用道具 举报

回复
认证徽章
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
6#
发表于 2017-12-6 14:27 | 只看该作者
本帖最后由 sqysl 于 2017-12-6 14:28 编辑
gbnj2004 发表于 2017-12-6 09:13
好的,我补充下,目标sql有51个绑定变量,我用以下语句查出b5xcb37zkxn5u的合适的plan_hash_value为21214 ...

try the following pls,

exec dbms_sqltune.create_sqlset(sqlset_name =>'b5xcb37zkxn5u_sts',description => 'my sql tuning');

declare
  baseline_ref_cur DBMS_SQLTUNE.SQLSET_CURSOR;
begin
  open baseline_ref_cur for
  select VALUE(p) from table(DBMS_SQLTUNE.SELECT_WORKLOAD_REPOSITORY(snap_id_begin, snap_id_end,         
                             'sql_id='||CHR(39)||'b5xcb37zkxn5u'||CHR(39)||' and
                              plan_hash_value=2121469830', NULL, NULL, NULL, NULL,
                              NULL, NULL, 'ALL')) p;
  DBMS_SQLTUNE.LOAD_SQLSET('b5xcb37zkxn5u_sts', baseline_ref_cur);
  close baseline_ref_cur;
end;
/

declare
  my_int pls_integer;
begin
  my_int := dbms_spm.load_plans_from_sqlset(sqlset_name =>'b5xcb37zkxn5u_sts',fixed =>'NO',enabled => 'YES');
  DBMS_OUTPUT.PUT_line(my_int);
end;
/

使用道具 举报

回复
论坛徽章:
0
7#
 楼主| 发表于 2017-12-7 09:13 | 只看该作者
sqysl 发表于 2017-12-6 14:27
try the following pls,

exec dbms_sqltune.create_sqlset(sqlset_name =>'b5xcb37zkxn5u_sts',desc ...

好的 我试试看哈 这个是通过SQL调优集合里加载吗?我那个是通过库缓存加载

使用道具 举报

回复
认证徽章
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
8#
发表于 2017-12-9 10:17 | 只看该作者
gbnj2004 发表于 2017-12-7 09:13
好的 我试试看哈 这个是通过SQL调优集合里加载吗?我那个是通过库缓存加载

好的,有空反馈下,谢谢。

使用道具 举报

回复
论坛徽章:
0
9#
 楼主| 发表于 2017-12-12 17:06 | 只看该作者
sqysl 发表于 2017-12-9 10:17
好的,有空反馈下,谢谢。

我这尝试的过程中发现,目标sql除了51个绑定变量外还有一个参数藏在角落未使用绑定变量。。。sql太多没办法手动绑定执行计划了。不过这个方法我记录下来,以后有计划再试试看。目前开发那边把这个功能停掉了。

使用道具 举报

回复
认证徽章
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
10#
发表于 2017-12-12 19:11 来自手机 | 只看该作者
gbnj2004 发表于 2017-12-12 17:06
我这尝试的过程中发现,目标sql除了51个绑定变量外还有一个参数藏在角落未使用绑定变量。。。sql太多没办 ...

好的,谢谢反馈。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 |
  | | |
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表