ITPub博客

首页 > 数据库 > Oracle > 一次WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK

一次WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK

原创 Oracle 作者:liiinuuux 时间:2014-01-28 16:37:35 0 删除 编辑
alert报错信息:
>>> WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK! pid=57
System State dumped to trace file /opt/app/oracle/product/10.2.0/db_1/admin/ XXXXXX/bdump/XXXXXXX2_j001_16704.trc

报错的是 j001进程,是一个后台job进程。

当时执行的是 8938job ,根据scheduler$_job数据字典确认,该 job用来收集数据库统计信息。
Job Slave State Object
Slave ID: 1, Job ID: 8938
----------------------------------------
SO: 0xcd78567b0, type: 4, owner: 0xcd4553530, flag: INIT/-/-/0x00
(session) sid: 2969 trans: (nil), creator: 0xcd4553530, flag: (48110041) USR/- BSY/-/-/-/-/-
DID: 0002-0039-00000C4A, short-term DID: 0002-0039-00000C4B
txn branch: (nil)
oct: 3, prv: 0, sql: 0xcde99cc10, psql: 0xcd8a1f068, user: 0/SYS
service name: SYS$USERS
O/S info: user: oracle, term: UNKNOWN, ospid: 16704, machine: XXXXXX2
program: oracle@XXXXXX2 (J001)
application name: DBMS_SCHEDULER, hash value=2478762354
action name: GATHER_STATS_JOB, hash value=930355498

job运行期间:
大量等待16 rowcachedc_histogram_defs
申请3级(行级排它锁 SX
反复超时(3 秒),最后报 “WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK”
[3 samples,                                          23:34:45 - 23:34:47]
  waited for 'row cache lock', seq_num: 8470
    p1: 'cache id'= 0x10   (16号)
    p2: 'mode'=0x0
    p3: 'request'= 0x3
    time_waited: 2.930612 sec (sample interval: 2 sec)
[3 samples,                                          23:34:42 - 23:34:44]
  waited for 'row cache lock', seq_num: 8467
    p1: 'cache id'= 0x10
    p2: 'mode'=0x0
    p3: 'request'= 0x3
    time_waited: 2.931427 sec (sample interval: 2 sec)


很可能是本节点或另一个节点长时间使用柱状图(如硬解析)或执行 DDL(清算期间需要对大量表进行并发truncate)导致。
由于业务高峰发生在晚间清算,因此建议将JOB改到白天或清算前执行。

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

下一篇: 分区表和索引
请登录后发表评论 登录
全部评论

注册时间:2012-11-12

  • 博文量
    94
  • 访问量
    309020