row cache lock 等待

数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。被动数据字典是指修改时必须手工更新其内容的数据字典。
  数据字典是一个预留空间,一个数据库,这是用来储存信息数据库本身。
  数据字典可能包含的信息,例如:
  数据库设计资料
  储存的SQL程序
  用户权限
  用户统计
  数据库的过程中的信息
  数据库增长统计
  数据库性能统计
  数据字典则是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果.
  数据字典通常包括数据项\数据结构\数据流\数据存储和处理过程五个部分.
  数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合.
  数据字典的组成:
  1、数据流
  2、数据流分量,即数据元素
  3、数据存储
  4、处理
  数据字典
  数据库的重要部分是数据字典。它存放有数据库所用的有关信息,对用户来说是一组只读的表。数据字典内容包括:
  1、数据库中所有模式对象的信息,如表、视图、簇、及索引等。
  2、分配多少空间,当前使用了多少空间等。
  3、列的缺省值。
  4、约束信息的完整性。
  5、用户的名字。
  6、用户及角色被授予的权限。
  7、用户访问或使用的审计信息。
  8、其它产生的数据库信息。
  数据库数据字典是一组表和视图结构。它们存放在SYSTEM表空间中。
  数据库数据字典不仅是每个数据库的中心。而且对每个用户也是非常重要的信息。用户可以用SQL语句访问数据库数据字典。
  关于数据的信息集合,是一种用户可以访问的记录数据库和应用程序元数据的目录,是对数据库内表信息的物理与逻辑的说明数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。被动数据字典是指修改时必须手工更新其内容的数据字典。
  数据字典是一个预留空间,一个数据库,这是用来储存信息数据库本身。
  数据字典可能包含的信息,例如:
  数据库设计资料
  储存的SQL程序
  用户权限
  用户统计
  数据库的过程中的信息
  数据库增长统计
  数据库性能统计
  数据字典则是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果.
  数据字典通常包括数据项\数据结构\数据流\数据存储和处理过程五个部分.
  数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合.
  数据字典的组成:
  1、数据流
  2、数据流分量,即数据元素
  3、数据存储
  4、处理
  数据字典
  数据库的重要部分是数据字典。它存放有数据库所用的有关信息,对用户来说是一组只读的表。数据字典内容包括:
  1、数据库中所有模式对象的信息,如表、视图、簇、及索引等。
  2、分配多少空间,当前使用了多少空间等。
  3、列的缺省值。
  4、约束信息的完整性。
  5、用户的名字。
  6、用户及角色被授予的权限。
  7、用户访问或使用的审计信息。
  8、其它产生的数据库信息。
  数据库数据字典是一组表和视图结构。它们存放在SYSTEM表空间中。
  数据库数据字典不仅是每个数据库的中心。而且对每个用户也是非常重要的信息。用户可以用SQL语句访问数据库数据字典。
  关于数据的信息集合,是一种用户可以访问的记录数据库和应用程序元数据的目录,是对数据库内表信息的物理与逻辑的说明

 

今天修改了以前的造数脚本,结果出现了大量的row cache lock 等待事件,CPU几乎到100%了,无从下手.之前性能测试时除出现过一次是因为sequence的问题,后来加cache和noorder后好很多了.可是这次的问题可以确定根本不是由于squence引起的.只好从网上搜索下查询方案,罗列归集下.

字典高速缓冲区(Data Dictionary Cache)
    用于存放Oracle系统管理自身需要的所有信息,这些信息是登录到Oracle的用户名,这些用户有那些数据库对象以及这些数据库对象的位置等。

select *  from v$session_wait where wait_class <> 'Idle';

数据大致如下:

 SID, SEQ#, EVENT, P1TEXT, P1, P1RAW, P2TEXT, P2, P2RAW, P3TEXT, P3, P3RAW, WAIT_CLASS_ID, WAIT_CLASS#, WAIT_CLASS, WAIT_TIME, SECONDS_IN_WAIT, STATE
2054, 15707, 'row cache lock', 'cache id', 13, '000000000000000D', 'mode', 0, '00', 'request', 5, '0000000000000005', 3875070507, 4, 'Concurrency', 2, 0, 'WAITED KNOWN TIME'

然后根据p1去v$rowcache 查询

select * from v$rowcache where cache# = 13;

CACHE#TYPESUBORDINATE#PARAMETERCOUNTUSAGEFIXEDGETSGETMISSES

13SUBORDINATE1dc_users626207E+06

84

 

然后有人建议hanganalyze看看,回头还要学学这个hanganalyze怎么用?

 

==============================

Wait Parameters
Wait parameters for row cache lock are described here:

P1 Cache ID of the row cache lock the session is waiting for; can be obtained from V$ROWCACHE

P2 The mode in which the lock is held

P3 The mode in which the lock is requested

The following SQL can be used to find cache number from the V$ROWCACHE:

select cache#, type, parameter from   v$rowcache where  cache# = &P1;

然后可以在v$lock 中查看什么类型的锁,

========================

ROW CACHE LOCK等待事件是一个共享池相关的等待事件。是由于对于字典缓冲的访问造成的。

  • P1 - Cache Id
  • P2 - Mode Held
  • P3 - Mode Requested

mode 和REQUEST的取值:

  • KQRMNULL 0   null mode - not locked
  • KQRMS    3   share mode
  • KQRMX    5   exclusive mode
  • KQRMFAIL 10  fail to acquire instance lock

如果是RAC/OPS环境,前台进程发出锁请求,LCK0进程发出锁请求。如果是单实例模式,由前台进程直接发出锁请求。

在RAC/OPS环境下,前台进程会循环等待锁的获取,最多会等待60秒钟。在单实例环境,前台进程会循环1000次,等待3秒钟。PMON进程无论在哪种模式,都会等待5秒钟。

要注意的是单实例模式下和多实例模式下申请该锁调用的模块是不同的(kqrget()- 单实例,kqgigt()- 多实例)。

如果发现这个等待十分高,一般来说可能由于2种原因,一是共享池太小了,需要增加共享池,另外一种情况是SQL分析过于频繁,对于共享池的并发访问量过大。对于任何一种情况,绝大多数情况下加大共享池会有助于降低该等待,不过加大共享池的时候也要注意,并不一定所有的情况下增加共享池都会有明显的效果,特别是对于第二种情况,精确的分析十分重要。另外进一步分析,弄清楚哪些ROW CACHE的等待最为严重,有助于解决问题。

比如说如果发现dc_sequences等待比较严重,那么单纯的增加共享池的大小是起不到应有的作用的,而是要通过优化SEQUENCE的访问性能(比如CACHE,NOORDER等)来达到目的。对于早期的版本(7,8.0),SEQUENCE_CACHE_ENTRIES参数的调整也十分关键。
========================================

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22861158/viewspace-675218/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22861158/viewspace-675218/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值