Oracle Outline总结

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’);

注意

更多详情见请继续阅读下一页的精彩内容:

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1970374.html

(0)
上一篇 2025年2月23日 07:49:31
下一篇 2025年2月23日 07:50:45

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • ORACLE 用户权限管理

    今天带大家一起来了解一下ORACLE 的用户权限管理。创建新的用户只能是oracle的DBA管理者的事。 语句:Create user TestUser identified by testPass; 其中TestUser是用户名,test…

    2025年2月23日
    100
  • 小白学Oracle第二关之第一个oracle数据库表的创建

    现如今在实际工作中,在数据库中创建表是经常会用到的。本文中小编主要给大家来分享一下在数据库如何通过sql语句去创建表。首先,先使用plsql连接到oracle数据库,先保证下面的服务是开启的。   我们本次创建表的需求是:创建一张班级表,和…

    2025年2月23日 数据库
    100
  • oracle删除重复数据保留第一条记录

    oracle删除重复数据保留第一条记录 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 where Id in (select Id from 表 group byId having cou…

    2025年2月23日
    100
  • oracle如何修改字段长度

    oracle如何修改字段长度 使用modify关键字来实现对数据类型的修改:alter table 表名 modify 字段名 数据类型; 1、表中已存有数据 ALTER table tableName MODIFY (字段名 字段类型(长…

    2025年2月23日
    100
  • oracle如何删除表数据

    oracle如何删除表数据 删除表内容的两种方法 1、truncate table 表名; 2、delete from 表名 where 条件; 两种方法的区别: truncate,意思为截断表,能够不占用资源的全部删除表,优点是速度快,缺…

    2025年2月23日
    100
  • oracle如何修改表名

    oracle如何修改表名 方式一 alter table old_table_name rename to new_table_name; 登录后复制 这是最简单的(个人认为) 方式二: 推荐:《SQL教程》 select tname fr…

    2025年2月23日
    100
  • Oracle建表语句是什么

    oracle建表语句是什么 oracle数据库的建表语句,具体语法如下: CREATE TABLE tablename(    column_name datatype [null,not null],    column_name dat…

    2025年2月23日
    100
  • oracle中exists的用法

    oracle中exists的用法 1、exists后面接的是一个子查询  2、以下图两个表为示例,来演示 a表中的id   与b表中的aid相关联 推荐学习:SQL教程 3、exists的作用是检查子查询的结果是否为真,如果子查询为true…

    2025年2月23日 数据库
    100
  • oracle截取字符串前几位的方法

    oracle截取字符串前几位的方法 Oracle提前某数据的前几位用substr函数。 如test表中数据如下: 现要提取dept字段中的前两位,可用如下语句: select id,name,substr(dept,1,2) from te…

    2025年2月23日
    100
  • oracle中exists有什么用法

    exists后面接的是一个子查询 以下图两个表为示例,来演示 a表中的id与b表中的aid相关联 exists的作用是检查子查询的结果是否为真,如果子查询为true则执行外面的SQL语句。 exists不返回数据只返回true 或false…

    2025年2月23日 数据库
    100

发表回复

登录后才能评论