今日学习Oracle心得体会
2013-09-07 21:30
225 查看
/*************breakable parse locks易碎的解析锁*******************/
1,parse lock由模式对象引用的sql或plsql语句或代码块持有
2,持有此锁的目的,如果sql或plsql引用的对象被drop or alter,以便相关的shared sql area变更为invalidate无效
(也就是说只有有了这个锁,共享池中shared sql area的sql or plsql一旦引用对象变化了,其share sql area才可以变为无效)
3,此锁不允许任何ddl操作
4,此锁产生于share pool共享池
5,解析sql会获取此锁(解析sql要查看sql所引用对象是否发生过变化,从而决定shared pool中的share sql area是否有否,否则变更为无效;这个期间要获取此锁)
6,只要针对sql的share sql area在共享池,就要持此锁,注意是针对sql的share sql area,二者不一回事
v$librarycache视图
scott@ORCL > desc v$librarycache;
Name Null? Type
----------------------------- ----------------------
NAMESPACE VARCHAR2(15) --存储在库缓存中的对象类型,值为SQLarea,table/procedure,body,trigger
GETS NUMBER --显示请求库缓存中的条目的次数(或语句句柄数)
GETHITS NUMBER --显示被请求的条目存在于缓存中的次数(获得的句柄数)
GETHITRATIO NUMBER --前两者之比
PINS NUMBER --位于execution阶段,显示库缓存中条目被执行的次数
PINHITS NUMBER --位于execution阶段,显示条目已经在库缓存中之后被执行的次数
PINHITRATIO NUMBER --前两者之比
RELOADS NUMBER --显示条目因过时或无效时在库缓存中被重载的次数
INVALIDATIONS NUMBER --由于对象被修改导致所有参照该对象的执行计划无效的次数,需要被再次解析
DLM_LOCK_REQUESTS NUMBER
DLM_PIN_REQUESTS NUMBER
DLM_PIN_RELEASES NUMBER
DLM_INVALIDATION_REQUESTS NUMBER
DLM_INVALIDATIONS NUMBER
get表示请求条目或对象、获得对象句柄;
pin根据句柄找到实际对象并执行,但对象内容可能因为老化而pin不到所以出现reload;
一个session需要使用一个object时,如果是初次使用,则必然是先get然后pin并维护这个object的句柄。下次再使用这个object时,因为
已经维护该句柄,所以直接pin而没有了get过程。如果对象老化则移除共享池,再次请求则会出现reload。 www.2cto.com
由上面所列出的字段可知,v$librarycache视图可以用来监控librarycache的活动情况。
重点关注字段
RELOADS列:表示对象被重新加载的次数,理论上该值应该接近于零。过大是由于对象无效或librarypool过小被换出。
INVALIDATIONS:列表示对象失效的次数,对象失效后,需要被再次解析。
GETHITRATIO:该列值过低,表明过多的对象被换出内存。
GETPINRATIO:该列值过低,表明会话没有多次执行相同的游标,即使对象被不同的会话共享或会话没有找到共享的游标。
1,parse lock由模式对象引用的sql或plsql语句或代码块持有
2,持有此锁的目的,如果sql或plsql引用的对象被drop or alter,以便相关的shared sql area变更为invalidate无效
(也就是说只有有了这个锁,共享池中shared sql area的sql or plsql一旦引用对象变化了,其share sql area才可以变为无效)
3,此锁不允许任何ddl操作
4,此锁产生于share pool共享池
5,解析sql会获取此锁(解析sql要查看sql所引用对象是否发生过变化,从而决定shared pool中的share sql area是否有否,否则变更为无效;这个期间要获取此锁)
6,只要针对sql的share sql area在共享池,就要持此锁,注意是针对sql的share sql area,二者不一回事
v$librarycache视图
scott@ORCL > desc v$librarycache;
Name Null? Type
----------------------------- ----------------------
NAMESPACE VARCHAR2(15) --存储在库缓存中的对象类型,值为SQLarea,table/procedure,body,trigger
GETS NUMBER --显示请求库缓存中的条目的次数(或语句句柄数)
GETHITS NUMBER --显示被请求的条目存在于缓存中的次数(获得的句柄数)
GETHITRATIO NUMBER --前两者之比
PINS NUMBER --位于execution阶段,显示库缓存中条目被执行的次数
PINHITS NUMBER --位于execution阶段,显示条目已经在库缓存中之后被执行的次数
PINHITRATIO NUMBER --前两者之比
RELOADS NUMBER --显示条目因过时或无效时在库缓存中被重载的次数
INVALIDATIONS NUMBER --由于对象被修改导致所有参照该对象的执行计划无效的次数,需要被再次解析
DLM_LOCK_REQUESTS NUMBER
DLM_PIN_REQUESTS NUMBER
DLM_PIN_RELEASES NUMBER
DLM_INVALIDATION_REQUESTS NUMBER
DLM_INVALIDATIONS NUMBER
get表示请求条目或对象、获得对象句柄;
pin根据句柄找到实际对象并执行,但对象内容可能因为老化而pin不到所以出现reload;
一个session需要使用一个object时,如果是初次使用,则必然是先get然后pin并维护这个object的句柄。下次再使用这个object时,因为
已经维护该句柄,所以直接pin而没有了get过程。如果对象老化则移除共享池,再次请求则会出现reload。 www.2cto.com
由上面所列出的字段可知,v$librarycache视图可以用来监控librarycache的活动情况。
重点关注字段
RELOADS列:表示对象被重新加载的次数,理论上该值应该接近于零。过大是由于对象无效或librarypool过小被换出。
INVALIDATIONS:列表示对象失效的次数,对象失效后,需要被再次解析。
GETHITRATIO:该列值过低,表明过多的对象被换出内存。
GETPINRATIO:该列值过低,表明会话没有多次执行相同的游标,即使对象被不同的会话共享或会话没有找到共享的游标。
相关文章推荐
- 今日学习linux心得体会
- 通过此微博记录自己机械转行AI的学习心得及体会
- uCOS/ii 学习心得及体会
- 黑马程序员—22—高新技术:有关高新技术的学习笔记和学习心得体会
- (转贴)正则表达式学习心得体会(4)
- 新手学习java的心得体会
- 我的大学--单片机高手郭天祥的学习心得体会
- Metro学习笔记+心得+体会(二)
- 师德师风学习心得体会
- 今日心得与体会
- 技术学习心得体会
- 学习八荣八耻心得体会
- 学习SQL的心得体会之三
- 解放思想学习心得体会 17
- 学习单片机的心得体会
- 断点续传学习心得与体会
- PHP框架Laravel学习心得体会
- (转贴)正则表达式学习心得体会(5)
- 新手学习java的心得体会
- java学习心得体会