Oracle 通过sql profile为sql语句加hint】的更多相关文章

sql profile最大的优点是在不修改sql语句和会话执行环境的情况下去优化sql的执行效率,适合无法在应用程序中修改sql时.sql profile最常用方法大概是:--创建产生sql tuning advisor任务DECLARE  tuning_task varchar2(100);  l_sql_id    v$session.prev_sql_id%TYPE;BEGIN  l_sql_id    := '6w02d3ggsj4xb';  tuning_task := dbms_sq…
SQL Profile就是为某一SQL语句提供除了系统统计信息.对象(表和索引等)统计信息之外的其它信息,比方执行环境.额外的更准确的统计信息,以帮助优化器为SQL语句选择更适合的执行计划. SQL Profiles可以说是Outlines的进化.Outlines可以实现的功能SQL Profiles也全然可以实现,而SQL Profiles具有Outlines不具备的优化,最重要的有二点:     SQL Profiles更easy生成.更改和控制. SQL Profiles在对SQL语句的支…
第一篇:介绍         10g开始,查询优化器(Query optimizer)扩展成自动调整优化器(Automatic Tuning Optimizer).也就是扩展了功能.此时,我们就可以让它花更多时间来返回更优秀的执行计划.正常情况下,查询优化器要以最快的速度返回执行计划.与此不同的是,自动调整优化器可以花费较长的时间来产生一个高效的执行计划.它会用假设分析(what-if)来核实哪个才是最好的执行计划.sql概要其实也就是一系列的hint. 自动调整优化器是通过SQL调优建议器(S…
固定(稳定)执行计划 你的应用的功能时快时慢,变化比较大,功能的性能能够保持一种稳定的状态,ORACLE 固定执行计划,采用以下这几种方式 oracle 9i使用 Outline oracle 10g采用 sql profile oracle 11g增加了sql plan manage oracle 10g采用 sql profile :两种模式 从SQL语句历史的执行计划,找到一个合理的,进行绑定 还有一种无法从历史的执行计划找到合理的,只能手工构造进行绑定 提供脚本 create_sql_p…
SQLT工具包含一个脚本,名字是 coe_load_sql_profile.sql,下面以用户SCOTT的EMP表为例,说明如何使用该脚本固定sql profile. 1. SQL> -- 对emp的列ename创建一个索引 SQL> create index i_emp_ename on scott.emp(ename); SQL> --收集统计信息 SQL> exec dbms_stats.gather_table_stats(ownname=>'SCOTT',tabna…
为什么需要SQL Profile Why oracle need SQL Profiles,how it work and what are SQL Profiles... 使用DBMS_XPLAN.DISPLAY分析SQL执行计划,通常会看到Note中有类似下面这样的提示: Note ----- - SQL profile "SYS_SQLPROF_0158283a9b920000" used for this statement SQL profile由人为手工创建或在Automa…
一个SQL,通过SPM固定它的执行计划,可以通过DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE实现.也可以通地此功能在不修改原SQL的情况下对其加HINT来固定执行计划.DB VERSION:Oracle 11.2.0.4OS:CentOS 6.6例如:原SQL走索引:SELECT * FROM SCOTT.TB_SPM WHERE OBJECT_ID=10;想通过加HINT让其走全表扫描:SELECT /*+FULL(TB_SPM)*/* FROM SCOTT.TB…
1.  引子Oracle系统为了合理分配和使用系统的资源提出了概要文件的概念.所谓概要文件,就是一份描述如何使用系统的资源(主要是CPU资源)的配置文件.将概要文件赋予某个数据库用户,在用户连接并访问数据库服务器时,系统就按照概要文件给他分配资源. 包括: 1.管理数据库系统资源.利用Profile来分配资源限额,必须把初始化参数resource_limit设置为true默认是TRUE的.2.管理数据库口令及验证方式.默认给用户分配的是DEFAULT概要文件,将该文件赋予了每个创建的用户.但该文…
(1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2)WHERE子句中的连接顺序: Oracle采用自下而上的顺序解析WHERE子句…
本篇文章中,对于有的和MSSQL Server相同的语法我就没有再写了,这里我只写Oracle和MSSQL Server有点不同的 定义空值 l  空值是无效的,未指定的,未知的或不可预知的值 l  空值不是空格或者0. SELECT last_name, job_id, salary, commission_pct  FROM   employees; 空值在数学运算中的使用 包含空值的数学表达式的值都为空值 SELECT last_name, 12*salary*commission_pct…