站内搜索
Oracle证书
分类目录
- ASM (30)
- Database (86)
- backup&recovery (21)
- expdp/impdp (5)
- Installation and Deinstall (31)
- network (7)
- ORA-600 or ORA-7445 (6)
- Performence Tuning (13)
- troubleshoooting (2)
- Dataguard (7)
- EBS (3)
- Exadata (120)
- FAQ (19)
- POC和性能调整 (11)
- 体系架构 (19)
- 内部机制 (22)
- 安装和升级 (14)
- 性能指标 (8)
- Exadata V1 (1)
- Exadata V2 (1)
- Exadata X2-2 (2)
- Exadata X3-2 (1)
- Exadata X4-2 (1)
- FAQ (1)
- 故障诊断 (3)
- 日常运维 (15)
- 硬件配置 (43)
- Exadata V1 (6)
- Exadata V2 (6)
- Exadata X2-2 (6)
- Exadata X3-2 (8)
- Exadata X4-2 (8)
- FAQ (1)
- FAQ (16)
- Internal (21)
- Linux (20)
- MYSQL (8)
- OGG (1)
- ORA-600/7445 (2)
- ORA-XXXXX (5)
- Oracle 11.1 & Oracle11.2 (6)
- ORACLE 12C (21)
- Oracle 8 & Oracle 8i (1)
- RAC (47)
- SAP (2)
- Scripts (6)
- 未分类 (1)
- 虚拟化 (1)
2024 年十二月 S M T W T F S « Nov 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 文章归档
-
近期文章
- 针对最近黑客攻击数据库的解决方案和预防建议
- CentOS7.2(RHEL 7.2)的CPU占用高(%system 占用高)
- Oracle 12.1 RAC 系列 – 配置第二个网络和相应的SCAN2
- Oracle 12.1 RAC 系列-安装新主机,识别老存储和恢复数据库
- Oracle 12.2的Sharding-1-基础概念
- 11.2 RAC 系列-安装新主机,识别老存储-3-配置老存储的数据库
- 11.2 RAC 系列-安装新主机,识别老存储-2-准备识别数据库
- 11.2 RAC 系列-安装新主机,识别老存储-1-识别ASM磁盘
- 2016年1月PSU列表
- 单实例数据库转换为RAC数据库–使用rconfig转换
近期评论
- tom 发表在《exadata巡检报告的模板》
- cyx 发表在《关于我》
- 李科胜 发表在《EBS克隆–db和app分开在两个服务器上》
- xiao 发表在《exadata巡检报告的模板》
- Chris Sun 发表在《使用Oracle 11.2的DBMS_RESOURCE_MANAGER.CALIBRATE_IO对Exadata X5(HC)进行测试》
标签归档:sqlprof_attr;sqlobj$data od;sys.sqlobj$;dbms_sqltune; OUTLINE;固定执行计划; 绑定执行计划;
固定执行计划-使用coe_xfr_sql_profile(BASELINE)固定执行计划
测试目的: 使用coe_xfr_sql_profile的方式固定执行计划和hint中指定no index,谁的优先级高? 在SQLT工具中包含了几个轻巧方便的coe脚本,用来固定执行计划,其中coe_xfr_sql_profile是我常用的。 . 固定执行计划-使用SQL Tuning Advisor 固定执行计划-手工指定PLAN OUTLINE 固定执行计划-手工指定索引名称的方式 固定执行计划-使用coe_xfr_sql_profile固定执行计划 固定执行计划-使用SPM(Sql Plan Management)固定执行计划 . 查看当前的SQL Profile: 使用coe_xfr_sql_profile脚本自动识别和指定执行计划: 因为删除了SQL Profile,对应的执行计划也会被删除,因此当前只有一个全表扫描的执行计划(上次测试留下的),以前的执行计划都不在了。 上面的执行过程中已经告诉我们,这个执行计划会使用全表扫描(q'[FULL(@”SEL$1″ “LUNARTEST1″@”SEL$1”)]’): 我们查看一下这个SQL Profile的主要内容: 现在我们产生一个正确的执行计划,让该sql执行时使用到索引: 找出sqlid 找出正确的outline: 这里我们看到已经使用了索引。 使用coe_xfr_sql_profile固定执行计划: 现在,测试一下,使用SYS用户绑定是否会影响其他用户使用执行计划: 再次执行查询: 这里我们看到该SQL还是忽略了hint而使用了索引。 结论: 1,使用SYS用户绑定执行计划不会影响其他用户使用该SQL Profile及执行效果 2,这里已经使用了我们的SQL PROFILE(coe_bjgduva68mbqm_3241900148),sql使用了索引,说明coe_xfr_sql_profile绑定执行计划的方式比hint的优先级高
固定执行计划-手工指定索引名称的方式
测试目的:手工指定索引的方式绑定的执行计划和hint中指定no index,谁的优先级高? . 固定执行计划-使用SQL Tuning Advisor 固定执行计划-手工指定PLAN OUTLINE 固定执行计划-手工指定索引名称的方式 固定执行计划-使用coe_xfr_sql_profile固定执行计划 固定执行计划-使用SPM(Sql Plan Management)固定执行计划 . 由于上一个测试中,已经绑定了SQL Profile。 这里我们需要先删除该SQL Profile,再手工指定索引的方式绑定执行计划试试看。 确认下SQL PROFILE的内容: 删除这个sql profile 通过sqlprof_attr来实现手工指定索引的方式绑定执行计划,执行计划起名为“Lunar_bjgduva68mbqm_profile”: 查看这个Lunar_bjgduva68mbqm_profile的一些参数,确认是我们指定的索引: 再次执行SQL,看看这个Lunar_bjgduva68mbqm_profile是否生效: 结论: 这里看到已经使用了Lunar_bjgduva68mbqm_profile,但是SQL并没有按照Lunar_bjgduva68mbqm_profile中指定的索引名称使用索引。 这里已经使用了我们的SQL PROFILE,但是仍然走全表扫描 说明hint覆盖了手工指定索引的方式绑定的执行计划,说明手工指定索引名称的方式比hint的优先级低。
固定执行计划-手工指定PLAN OUTLINE
测试目的: hint和手工指定OUTLINE参数的方式来帮顶执行计划,谁的优先级高? . 固定执行计划-使用SQL Tuning Advisor 固定执行计划-手工指定PLAN OUTLINE 固定执行计划-手工指定索引名称的方式 固定执行计划-使用coe_xfr_sql_profile固定执行计划 固定执行计划-使用SPM(Sql Plan Management)固定执行计划 . 由于上一个测试中,已经绑定了sql使用SQL Tuning Advisor中的执行计划,从而使SQL走索引了(覆盖了hint)。这里我们需要先删除该SQL Profile,再手工绑定试试。 确认下SQL PROFILE的内容: 这里我们看到该SQP Profile中提供了详细的表和列的统计信息 并且有“IGNORE_OPTIM_EMBEDDED_HINTS”,也就是忽略嵌入到SQL中的hint 确认一下,当前SQL语句使用了该SQL Profile: 这里我们看到,当前执行确实使用了SQL profile SYS_SQLPROF_015236655fb80000,因此hint no_index失效了 (优先级低于SYS_SQLPROF_015236655fb80000,具体参见固定执行计划-使用SQL Tuning Advisor) 查看SYS_SQLPROF_015236655fb80000的OUTLINE信息: 这里我们看到该SQP Profile中提供了详细的表和列的统计信息 并且有“IGNORE_OPTIM_EMBEDDED_HINTS”,也就是忽略嵌入到SQL中的hint 现在,我们删除这个SQL Profile,稍后使用上面的OUTLINE手工绑定执行计划: 此时,应该正常按照hint走了全表扫描: 手工指定sqlprofile参数的方式绑定执行计划: … 继续阅读