enqueues and locks

来源:互联网 发布:译林出版社知乎 编辑:程序博客网 时间:2024/05/18 00:03

statspack dump

Top 5 Wait Events
~~~~~~~~~~~~~~~~~                                             Wait
% Total
Event                                               Waits  Time (cs)
Wt Time
-------------------------------------------- ------------ ------------
-------
enqueue                                             5,810    1,730,154
 74.95
PL/SQL lock timer                                   4,209      473,702
 20.52
pipe put                                              271       27,826
  1.21
latch free                                         36,676       16,935
   .73
db file sequential read                            31,151       11,278
   .49

Enqueue activity for DB: PROD  Instance: PROD  Snaps: 294 -306
-> ordered by waits desc, gets desc

Enqueue            Gets      Waits
---------- ------------ ----------
TX               98,227         98

result : TX enqeues locks
find it lock objects and which sql lock it

select * from v$system_event se where UPPER(se.EVENT)='ENQUEUE'
EVENT     TOTAL_WAITS TOTAL_TIMEOUTS TIME_WAITED AVERAGE_WAIT
----- ----------- -------------- ----------- ------------
enqueue    3181           2846      880619 276.83715812

when total_waits adding

 select * from v$session s where s.USERNAME='CRG' and s.LOCKWAIT is not
null;

SADDR           SID    SERIAL#     AUDSID PADDR         USER# USERNAME
                        COMMAND    OWNERID TADDR    LOCKWAIT STATUS
SERVER       SCHEMA# SCHEMANAME                     OSUSER
           PROCESS   MACHINE
              TERMINAL                       PROGRAM
                      TYPE       SQL_ADDRESS SQL_HASH_VALUE
PREV_SQL_ADDR PREV_HASH_VALUE MODULE
       MODULE_HASH ACTION                           ACTION_HASH
CLIENT_INFO
FIXED_TABLE_SEQUENCE ROW_WAIT_OBJ# ROW_WAIT_FILE# ROW_WAIT_BLOCK#
ROW_WAIT_ROW# LOGON_TIME  LAST_CALL_ET PDML_ENABLED FAILOVER_TYPE
FAILOVER_METHOD FAILED_OVER RESOURCE_CONSUMER_GROUP
PDML_STATUS PDDL_STATUS PQ_STATUS

select * from v$lock l where l.TYPE='TX'

link l.kaddr = s.lockwait

sql casue lock
================
select * from v$sqltext st where st.hash_value =  $l.sql_hash_value

object be locked
=================
select * from v$dba_dml_locks ddl where ddl.sid= $s.sid

TX enqeues raise because
1: the table has bm index be updated
2: unqion index table be updated long time wihtout commit;
3: many user operate a block ; fix : need more itl ,bigger  initrans
and maxtrans of table, increase pctfree valuse of table.


    oraclehu  2005-10-28 03:39 PM