Deadlocks & chained rows

f_tabas
29 de Noviembre del 2005
Hola,

tengo un problema de deadlocks y no se si esta relacionado por filas partidas, adjunto traza:

*** 2005-11-14 14:02:59.175
*** SESSION ID:(447.6280) 2005-11-14 14:02:59.163
DEADLOCK DETECTED
Current SQL statement for this session:
UPDATE CLIENTES SET CLESTADOID = :B2 WHERE CLID = :B1
----- PL/SQL Call Stack -----
object line object
handle number name
3e858cc4 28 package body OWN01.UPDATE_ESTADO_CLIENTE
3e9a1ae0 52 EREPOWN01.TRI_UPDATE_ESTADO
4964fca0 340 procedure OWN01.UPDATE_PRODUCTO_SGI
47a7be7c 432 procedure OWN01.INSERT_PRODUCTO_SGI
The following deadlock is not an ORACLE error. It is a
deadlock due to user error in the design of an application
or from issuing incorrect ad-hoc SQL. The following
information may aid in determining the deadlock:
Deadlock graph:
---------Blocker(s)-------- ---------Waiter(s)---------
Resource Name process session holds waits process session holds waits
TX-0006001d-001998ad 499 447 X 497 94 X
TX-0001003a-0016ddca 497 94 X 499 447 X
session 447: DID 0001-01F3-00000006 session 94: DID 0001-01F1-00000009
session 94: DID 0001-01F1-00000009 session 447: DID 0001-01F3-00000006
Rows waited on:
Session 94: obj - rowid = 00020FFE - AAAg/+AAeAAAbWFAA1
(dictionary objn - 135166, file - 30, block - 112005, slot - 53)
Session 447: obj - rowid = 00020FFE - AAAg/+AAeAAASH9AAS
(dictionary objn - 135166, file - 30, block - 74237, slot - 18)
Information on the OTHER waiting sessions:
Session 94:
pid=497 serial=31773 audsid=4661603 user: 55/OWN01
O/S info: user: oracle, term: unknown, ospid: , machine: myserver
program: JDBC Thin Client
application name: JDBC Thin Client, hash value=0
Current SQL Statement:
UPDATE CLIENTES SET CLESTADOID = :B2 WHERE CLID = :B1
End of information on OTHER waiting sessions.
===================================================

No entiendo muy bien esta traza pero lo que observo es que los rowid de las filas donde dice que hay un deadlock no son los mismos, ¿no es la misma fila? ¿como se puede producir un deadlock de diferentes registros si el bloqueo esta definido por registro? ¿Es posible que exista relación con las filas partidas?

este es el contenido de user_tables

OWNER TABLE_NAME TABLESPACE_NAME CLUSTER_NAME IOT_NAME PCT_FREE PCT_USED INI_TRANS MAX_TRANS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE FREELISTS FREELIST_GROUPS LOGGING BACKED_UP NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_SPACE CHAIN_CNT AVG_ROW_LEN AVG_SPACE_FREELIST_BLOCKS NUM_FREELIST_BLOCKS DEGREE INSTANCES CACHE TABLE_LOCK SAMPLE_SIZE LAST_ANALYZED PARTITIONED IOT_TYPE TEMPORARY SECONDARY NESTED BUFFER_POOL ROW_MOVEMENT GLOBAL_STATS USER_STATS DURATION SKIP_CORRUPT MONITORING CLUSTER_OWNER DEPENDENCIES COMPRESSION
OWN01 CLIENTES DATA01 10 50 1 255 2048000000 204800000 1 2147483645 0 1 1 NO N 7570513 112510 161789 585 33483 143 6718 6 1 1 N ENABLED 1135577 14/10/2005 1:12:42 NO N N NO DEFAULT DISABLED YES NO DISABLED NO DISABLED DISABLED

Muchas gracias