当前位置:Gxlcms > mysql > OracleOutline总结

OracleOutline总结

时间:2021-07-01 10:21:17 帮助过:56人阅读

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

    人气教程排行