查看oracle硬解析,Oracle硬解析与软解析:编码硬解析的改进方法

1.更改参数cursor_sharing

参数cursor_sharing决定了何种类型的SQL能够使用相同的SQL area

CURSOR_SHARING = { SIMILAR | EXACT | FORCE }

EXACT --只有当发布的SQL语句与缓存中的语句完全相同时才用已有的执行计划。

FORCE --如果SQL语句是字面量,则迫使Optimizer始终使用已有的执行计划,无论已有的执行计划是不是最佳的。

SIMILAR --如果SQL语句是字面量,则只有当已有的执行计划是最佳时才使用它,如果已有执行计划不是最佳则重新对这个SQL

--语句进行分析来制定最佳执行计划。

可以基于不同的级别来设定该参数,如ALTER SESSION, ALTER SYSTEM

sys@ASMDB> show parameter cursor_shar --查看参数cursor_sharing

NAME TYPE VALUE

cursor_sharing string EXACT

sys@ASMDB> alter system set cursor_sharing='similar'; --将参数cursor_sharing的值更改为similar

sys@ASMDB> select name,class,value from v$sysstat where statistic#=331;

NAME CLASS VALUE

--当前硬解析的值为865

parse count (hard) 64 865

scott@ASMDB> select * from dept where deptno=10;

sys@ASMDB> select name,class,value from v$sysstat where statistic#=331;

NAME CLASS VALUE

--执行上一条SQL查询后,硬解析的值变为866

parse count (hard) 64 866

scott@ASMDB> select * from dept where deptno=20;

sys@ASMDB> select name,class,value from v$sysstat where statistic#=331;

NAME CLASS VALUE

--执行上一条SQL查询后,硬解析的值没有发生变化还是866

parse count (hard) 64 866

sys@ASMDB> select sql_text,child_number from v$sql -- 在下面的结果中可以看到SQL_TEXT列中使用了绑定变量:"SYS_B_0"

2 where sql_text like 'select * from dept where deptno%';

SQL_TEXT CHILD_NUMBER

select * from dept where deptno=:"SYS_B_0" 0

sys@ASMDB> alter system set cursor_sharing='exact'; --将cursor_sharing改回为exact

--接下来在scott的session 中执行deptno=40 和的查询后再查看sql_text,当cursor_sharing改为exact后,每执行那个一次

--也会在v$sql中增加一条语句

sys@ASMDB> select sql_text,child_number from v$sql

2 where sql_text like 'select * from dept where deptno%';

SQL_TEXT CHILD_NUMBER

select * from dept where deptno=50 0

select * from dept where deptno=40 0

select * from dept where deptno=:"SYS_B_0" 0

注意当该参数设置为similar,会产生不利的影响,可以参考这里:cursor_sharing参数对于expdp的性能影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值