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
进程。
当时执行的是
8938
号
job
,根据
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
号
rowcache
(
dc_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改到白天或清算前执行。
由于业务高峰发生在晚间清算,因此建议将JOB改到白天或清算前执行。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26239116/viewspace-1076276/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26239116/viewspace-1076276/