Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> RE: what's mean of "enqueue hash chains" latch?
Hi,
>From MetaLink:-
"dml lock allocation
This latch protects the list of State Objects (dml locks). Every time a
transaction modifies a table, a DML lock is gotten and released when the
change is committed. The number of State Objects for dml locks is
determined by
the init.ora <Parameter:DML_LOCKS>".
So I would be looking at how often you commit.
Also what sort of turn over are you getting on the online redo logs? It
may well be that they are too small.
You may want to investigate having multiple freelists for the table you
are inserting into, having many parallel
inserts (assuming you have enabled parallel DML), may well be causing a
lot of contention for the header block at
the start of the segment.
Good luck.
Pete
-----Original Message-----
From: oracle-l-bounce_at_freelists.org
[mailto:oracle-l-bounce_at_freelists.org] On Behalf Of eygle
Sent: 08 January 2005 13:56
To: oracle-l_at_freelists.org
Subject: what's mean of "enqueue hash chains" latch?
hello;
We have a Oracle 8.1.7.0.0 Database on Solaris8. With a parallel insert , database slow down heavy suddently.
I find lots of latch wait in database,from statspack(with 15 minutes elapse) list:
Pct Avg Pct Get Get Slps NoWait NoWait Latch Name Requests Miss /Miss RequestsMiss
----------------------------- -------------- ------ ------ ------------ ------ active checkpoint queue latch 260 0.0 0 cache buffers chains 47,228,551 0.0 552 0.0 checkpoint queue latch 3,263 0.0 0 dml lock allocation 46,899,746 12.1 0.0 0 enqueue hash chains 46,899,333 39.2 0.0 0 enqueues 849 0.0 0 job_queue_processes parameter 12 0.0 0 ktm global data 2 0.0 0 library cache 32,739 0.0 0.0 0 library cache load lock 70 0.0 0 list of block allocation 36 0.0 0
and
Latch Sleep breakdown for DB: QCB Instance: qcb Snaps: 150 -151
-> ordered by misses desc
Get Spin & Latch Name Requests Misses Sleeps Sleeps 1->4 -------------------------- -------------- ----------- ----------- ------------ enqueue hash chains 46,899,333 18,367,985 6,312 18361675/630 8/2/0/0 dml lock allocation 46,899,746 5,678,834 1,228 5677606/1228 /0/0/0 -------------------------------------------------------------Latch Miss Sources for DB: QCB Instance: qcb Snaps: 150 -151
NoWait Waiter Latch Name Where Misses SleepsSleeps
------------------------ -------------------------- ------- ---------- ------- dml lock allocation ktaiam 0 615 444 dml lock allocation ktaidm 0 604 784 enqueue hash chains ksqrcl 0 3,778 3,453 enqueue hash chains ksqgtl3 0 2,472 2,832 -------------------------------------------------------------
I can not find more info about "enqueue hash chains". What' s it mean and how to reduce it ?
The SQL of parallel insert is :
insert /*+ append parallel(fc_costgatherresult_m,4) */ into=20
fc_costgatherresult_m
(kjnd,kjqj,pk_dwbm,pk_deptdoc,pk_psndoc,isproduct,pk_productorbalance,ac
countcurrtype,producttype,pk_costitem,originaldwbm,originaldept,calmny,p
k_client,clienttype,pk_credittype)
select /*+ parallel(fc_costcalresult_m,4) */
'2004','11',pk_dwbm,pk_deptdoc,pk_psndoc,isproduct,pk_productorbalance,a
ccountcurrtype,producttype,pk_costitem,originaldwbm,originaldept,sum(cal
mny),pk_client,clienttype,pk_credittype
from fc_costcalresult_m where pk_dwbm =3D originaldwbm
group by
pk_dwbm,pk_deptdoc,pk_psndoc,isproduct,pk_productorbalance,accountcurrty
pe,producttype,pk_costitem,originaldwbm,originaldept,pk_client,clienttyp
e,pk_credittype
All the table is partition table.
Table fc_costcalresult_m with nearly 40G data.
And we have the parameter:
dml_locks =3D 2000
enqueue_resources =3D 2200
I also want to know why "dml lock allocation" Requests is so high?
Any suggestion is appreciate.
-- http://www.freelists.org/webpage/oracle-l -- http://www.freelists.org/webpage/oracle-lReceived on Sat Jan 08 2005 - 10:56:24 CST
![]() |
![]() |