2013-11-08 2 views
4

Мне нужно, чтобы кто-нибудь помог мне выяснить причину следующего тупика. вовлеченные таблицы являются родительскими/дочерними, а дочерняя таблица индексирована FK. родитель: PK_FMS_FC_MAIN_FLD_INPUT_LIMIT Чили: FMS_FC_REL_FLD_INPUT_LIMITорел-орел родитель/ребенок и ребенок проиндексировали FK

Deadlock graph: 
         ---------Blocker(s)-------- ---------Waiter(s)--------- 
Resource Name   process session holds waits process session holds waits 
TX-0019000b-0000b486  22 2755  X    57  492   S 
TX-00010019-00061e13  57  492  X    22 2755   S 

session 2755: DID 0001-0016-00000FCE session 492: DID 0001-0039-00000719 
session 492: DID 0001-0039-00000719 session 2755: DID 0001-0016-00000FCE 

Rows waited on: 
    Session 2755: obj - rowid = 000DB256 - AADbJWABbAAAYJQAAA 
    (dictionary objn - 897622, file - 91, block - 98896, slot - 0) 
    Session 492: no row 

----- Information for the OTHER waiting sessions ----- 
Session 492: 
    sid: 492 ser: 2757 audsid: 132281277 user: 364/GKS_IM_9990740 
    flags: (0x41) USR/- flags_idl: (0x1) BSY/-/-/-/-/- 
    flags2: (0x40009) -/-/INC 
    pid: 57 O/S info: user: grid, term: UNKNOWN, ospid: 16372 
    image: [email protected] 
    client details: 
    O/S info: user: imart, term: unknown, ospid: 1234 
    machine: hgkswa05 program: JDBC Thin Client 
    application name: JDBC Thin Client, hash value=2546894660 
    current SQL: 
    DELETE FROM FMS_FC_MAIN_FLD_INPUT_LIMIT MAIN WHERE MAIN.ID = :B1 

----- End of information for the OTHER waiting sessions ----- 

Information for THIS session: 

----- Current SQL Statement for this session (sql_id=56azrvwd48huf) ----- 
INSERT INTO FMS_FC_REL_FLD_INPUT_LIMIT(ID, RELATION_FIELD_MASTER_CD, CREATE_USER_CD, CREATE_DATE, RECORD_USER_CD, RECORD_DATE) VALUES(:B4 , :B3 , :B2 , SYSDATE, :B1 , SYSDATE) 
----- PL/SQL Stack ----- 
----- PL/SQL Call Stack ----- 
    object  line object 
    handle number name 
0x1f37f7a58  462 package body GKS_IM_9990740.ZPKG_PRJ_FLDREL 
0x1ed1a9d38   1 anonymous block 
=================================================== 

CREATE TABLE GKS_IM_9990740.FMS_FC_MAIN_FLD_INPUT_LIMIT 
(
ID        NUMBER(18,0) NOT NULL, 
COMPANY_CD      VARCHAR2(100) NOT NULL, 
MAIN_FIELD_TYPE    VARCHAR2(100) NOT NULL, 
RELATION_FIELD_TYPE   VARCHAR2(100) NOT NULL, 
START_DATE      DATE NOT NULL, 
MAIN_FIELD_MASTER_CD   VARCHAR2(1000) NOT NULL, 
MAIN_FIELD_SUB_CD    VARCHAR2(1000), 
IS_INPUT_ENABLE    VARCHAR2(1) NOT NULL, 
IS_INPUT_COMPULSORY   VARCHAR2(1) NOT NULL, 
DEFAULT_VALUE     VARCHAR2(1000), 
IS_INPUT_LIMIT     VARCHAR2(1) NOT NULL, 
CREATE_USER_CD     VARCHAR2(100) NOT NULL, 
CREATE_DATE     TIMESTAMP(6) NOT NULL, 
RECORD_USER_CD     VARCHAR2(100), 
RECORD_DATE     TIMESTAMP(6), 
CONSTRAINT PK_FMS_FC_MAIN_FLD_INPUT_LIMIT PRIMARY KEY (ID) USING INDEX 
PCTFREE 10 
INITRANS 2 
MAXTRANS 255 
TABLESPACE FMS_DATA 
STORAGE(INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT) 
LOGGING 
) 

CREATE TABLE GKS_IM_9990740.FMS_FC_REL_FLD_INPUT_LIMIT 
(
ID        NUMBER(18,0) NOT NULL, 
RELATION_FIELD_MASTER_CD  VARCHAR2(1000) NOT NULL, 
CREATE_USER_CD     VARCHAR2(100) NOT NULL, 
CREATE_DATE     TIMESTAMP(6) NOT NULL, 
RECORD_USER_CD     VARCHAR2(100), 
RECORD_DATE     TIMESTAMP(6), 
CONSTRAINT PK_FMS_FC_REL_FLD_INPUT_LIMIT PRIMARY KEY (ID, RELATION_FIELD_MASTER_CD) USING INDEX 
PCTFREE 10 
INITRANS 2 
MAXTRANS 255 
TABLESPACE FMS_DATA 
STORAGE(INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT) 
LOGGING, 
CONSTRAINT FK_FMS_FC_REL_FLD_INPUT_LIMIT0 FOREIGN KEY (ID) REFERENCES GKS_IM_9990740.FMS_FC_MAIN_FLD_INPUT_LIMIT (ID) 
) 
PCTFREE 10 
MAXTRANS 255 
TABLESPACE FMS_DATA 
STORAGE(INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT) 
NOCACHE 
LOGGING 

CREATE INDEX "GKS_IM_9990740"."FK_FMS_FC_REL_FLD_INPUT_LIMIT" ON "GKS_IM_9990740"."FMS_FC_REL_FLD_INPUT_LIMIT" 
(
"ID" 
) 
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE 
(
INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT 
) 
TABLESPACE "FMS_DATA" ; 
+0

пару идей, если это возможно: 1) вы можете упростить пример как можно больше и воссоздают мертвую блокировку. 2) похоже, что удаление выполняется в родительской таблице со вставками, которые выполняются на дочерней таблице, это вызовет проблемы. однако, поскольку значения переменных связывания не знают, их трудно определить. 3) Я столкнулся с проблемами взаимоблокировки, используя индексы с битовым отображением. Является ли индекс FK единственным, кроме уникальных индексов для первичных ключей? – Stu

ответ

1

Некоторые мысли: 1.) Так как ставит в очередь, участвующих в тупике являются TX, а не ТМ, это не имеет ничего сделать с без индекса внешнего ключа проблемы. 2.) Поскольку сеансы ждут в режиме TX 'S' (общий), это не проблема блокировки на уровне строк. 3.) Поскольку одно из заявлений является INSERT, это не будет проблемой с нехваткой слотов ITL.

Итак, учитывая вышеизложенное, мои лучшие догадки: Для удаления, растрового индекса или нехватки слота ITL. для вставки, наложения pk/uk.

Надежда, что помогает ....

Смежные вопросы