SQL 共享之 ROLL_INVALID_MISMATCH 含义
浏览:1464次 出处信息
SELECT * FROM V$SQL_SHARED_CURSOR WHERE sql_id = '4svx3gu1gvx8n'
发现不能共享的原因是ROLL_INVALID_MISMATCH。
那么这个ROLL_INVALID_MISMATCH是什么含义呢?
Oracle的文档这样注释:Marked for rolling invalidation and invalidation window exceeded
这是什么意思呢?在Oracle收集对象统计信息的时候,是否INVALID相关Cursor是一个可选问题,在DBMS_STATS包的调用过程中,这个选择是可以设置的,缺省的有一些常量指标,如下:
| Name | Type | Value | Description |
|---|---|---|---|
|
|
|
|
Lets Oracle decide whether to collect statistics for indexes or not |
|
|
|
|
Lets Oracle select the degree of parallelism based on size of the object, number of CPUs and initialization parameters |
|
|
|
NULL |
Lets Oracle decide when to invalidate dependent cursors |
|
|
|
|
Indicates that auto-sample size algorithms should be used |
DBMS_STATS.GATHER_TABLE_STATS (在10g中,缺省的使用
ownname VARCHAR2,
tabname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
estimate_percent NUMBER DEFAULT to_estimate_percent_type
(get_param('ESTIMATE_PERCENT')),
block_sample BOOLEAN DEFAULT FALSE,
method_opt VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree NUMBER DEFAULT to_degree_type(get_param('DEGREE')),
granularity VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade BOOLEAN DEFAULT to_cascade_type(get_param('CASCADE')),
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
AUTO_INVALIDATE选项时,分析对象之后,原有SQL并不会立即失效,失效时间和SQL执行有关,同时受到另外一个参数的影响:_optimizer_invalidation_period ,这个参数的缺省值是18000s(以下是Oracle 10gR2的缺省设置),当超过这个时间,SQL会重新硬解析,生成一个新的SQL,并标记与之前Cursor不能共享的原因为ROLL_INVALID_MISMATCH :SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ这一设置的作用是为了减少统计信息收集带来的大量SQL重解析带来的性能冲击。
2 FROM SYS.x$ksppi x, SYS.x$ksppcv y
3 WHERE x.indx = y.indx AND x.ksppinm LIKE '%&par%'
4 /
Enter value for par: optimizer_invalidation_period
old 3: WHERE x.indx = y.indx AND x.ksppinm LIKE '%&par%'
new 3: WHERE x.indx = y.indx AND x.ksppinm LIKE '%optimizer_invalidation_period%'
NAME VALUE DESCRIB
------------------------------ -------------------- -----------------------------------------------------
_optimizer_invalidation_period 18000 time window for invalidation of cursors of analyzed objects
ROLL_INVALID_MISMATCH
说的就是这样一件事。
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:化整为零访问大表的三种方式
后一篇:Oracle索引abc >>
文章信息
- 作者:eygle@eygle.com(eygle) 来源: Oracle Life
- 标签: ROLL_INVALID_MIS
- 发布时间:2010-01-19 09:28:52
近3天十大热文
-
[917] WordPress插件开发 -- 在插件使用 -
[135] 解决 nginx 反向代理网页首尾出现神秘字 -
[54] 整理了一份招PHP高级工程师的面试题 -
[53] 如何保证一个程序在单台服务器上只有唯一实例( -
[52] Innodb分表太多或者表分区太多,会导致内 -
[52] 海量小文件存储 -
[51] 全站换域名时利用nginx和javascri -
[51] 用 Jquery 模拟 select -
[50] CloudSMS:免费匿名的云短信 -
[48] jQuery性能优化指南