Oracle Outline,中文也称为存储大纲,是最早的基于提示来控制SQL执行计划的机制,也是9i以及之前版本唯一可以用来稳定和控制SQL
一、基本概述
注意:
注意:
SQL解析时,,使用SQL文本却匹配数据字典outline保存的文本,此处匹配的方式为去掉SQL空格,忽略SQL大小写区别后,进行的比较。例如,select * from dual 和SELECT * FROM dual这两个语句将使用同样的outline。
Oracle教程:实例故障恢复
Linux-6-64下安装Oracle 12C笔记
在CentOS 6.4下安装Oracle 11gR2(x64)
Oracle 11gR2 在VMWare虚拟机中安装步骤
Debian 下 安装 Oracle 11g XE R2
三、使用场景
注意
任何一个数据库中,大部分的SQL语句执行计划应该是通过优化器自动生成,并且高效运行,而只有极少部分,需要通过各种工具(outine、sql profile)来锁定执行计划
四、注意事项
五、outline相关的视图
两个基本视图:dba_outlines,dba_outline_hints三个底层表:ol$、ol$hints、ol$nodes
六、使用outline
一、创建outline
创建outline的方法有三种,下面我们一一简单介绍
1、给会话甚至整个系统执行的每一条SQL语句都创建outline,可以设置如下参数,分别针对会话级和系统级
ALTER SYSTEM SET create_stored_outlines=TRUE;
ALTER SESSION SET create_stored_outlines=TRUE;
注意:基本上没有任何一个数据库会这么做,因此这种方式我们不做测试;
2、手工通过CREATE OUTLINE方式来创建给定SQL语句的outline,如下
CREATE or replace OUTLINE outline_dh_test FOR CATEGORY test on select * from dh_stat where id=11;
or
CREATE or replace OUTLINE outline_dh_test1 on select * from dh_stat where id=11;
示例:
replace OUTLINE outline_dh_test dh_stat where id=11;
Outline created.
linesize long long ,
OUTLINE_DH_TEST DBMON TEST UNUSED dh_stat ,hint
OUTLINE_DH_TEST )
OUTLINE_DH_TEST OPT_PARAM(_gby_hash_aggregation_enabled_optimizer_extended_cursor_sharing)
OUTLINE_DH_TEST OPT_PARAM()
OUTLINE_DH_TEST DB_VERSION(‘11.2.0.1’)
OUTLINE_DH_TEST OPTIMIZER_FEATURES_ENABLE(‘11.2.0.1’)
OUTLINE_DH_TEST IGNORE_OPTIM_EMBEDDED_HINTS
15 rows selected.
注意:
不指定outline类别是,默认为default,而且此处创建时,不能指定为default类别(会报错)。这个方法不是很方便,因为必须将整个SQL文本作为语句的一部分,可能导致语句无法共享等问题,因此很少使用这种方法
3、从10g起,可以通过引用共享池中已经存在的SQL语句来创建outline
exec DBMS_OUTLN.create_outline(hash_value=>1752921103,child_number => 0,category=>’test’);
注意
更多详情见请继续阅读下一页的精彩内容:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1970374.html