ฉันมีสถานการณ์ต่อไปนี้
ฉันมี RAC บนโหนดทั้งสองมีการล็อคอยู่
บนโหนดแรก
SID EVENT USERNAME BLOCKING_SESSION ROW_WAIT_OBJ# OBJECT_NAME LOCKWAIT SQL_ID STATUS
1 102 enq: TX - row lock contention MYUSER 155 136972 TABLE1V 0000000810EFA958 5f4bzdg49fdxq ACTIVE
2 111 enq: TX - row lock contention MYUSER 155 136972 TABLE1V 0000000810EFAC98 5f4bzdg49fdxq ACTIVE
การปิดกั้นข้อมูลเซสชั่น
SID EVENT USERNAME ROW_WAIT_OBJ# OBJECT_NAME LOCKWAIT SQL_ID STATUS
1 155 SQL*Net message from client MYUSER 136971 MyTABLEIMAGES_IDPK 4hw85z8absbjc INACTIVE
บนโหนดที่สอง
SID EVENT USERNAME BLOCKING_SESSION ROW_WAIT_OBJ# OBJECT_NAME LOCKWAIT SQL_ID STATUS
1 65 enq: TX - row lock contention MYUSER 155 137033 FactTABLE1V 0000000810EF9B58 1mznc2z75ksdx ACTIVE
2 111 enq: TX - row lock contention MYUSER 155 136972 TABLE1V 0000000810EF9818 5f4bzdg49fdxq ACTIVE
การปิดกั้นข้อมูลเซสชั่น
SID EVENT USERNAME ROW_WAIT_OBJ# OBJECT_NAME SQL_ID STATUS
1 155 SQL*Net message from client MYUSER 127176 MYTableLOG INACTIVE
ข้อมูลเพิ่มเติม: การปิดกั้นเซสชัน SQL_TEXT
create or replace procedure ACTIONProcedureDELETE
(
p_ID NUMBER
)
is
cursor oldval is select r.id,r.sessionstatus
from MyTABLEIMAGES r where r.idparent=p_ID;
begin
update actionmyTableblock r set r.status='False' where ID=p_ID;
for oldvalItem in oldval loop
if oldvalItem.Sessionstatus='True' then
update MyTABLEIMAGES r set r.sessionstatus='False' where r.id=oldvalItem.Id;
else
update MyTABLEIMAGES r set r.sessionstatus='True' where r.id=oldvalItem.Id;
end if;
end loop;
end ACTIONProcedureDELETE;
ฉันจะแก้ไขปัญหานี้ได้อย่างไร
ตามที่คุณเห็นการบล็อคเซสชันไม่ทำงาน แต่ยังคงล็อคอยู่
ถ้าฉันselect v$sql_bind_capture
มีค่าไม่มีสำหรับการปิดกั้นเซสชั่นVALUE_STRING
sql_id
จากที่จะเริ่ม?
ฉันสามารถเดาได้ว่าไม่มีคอมมิชชัน / ย้อนกลับ แต่ผู้พัฒนาแอปพลิเคชันกล่าวว่า "ฉันมีทุกอย่างโอเคฉันได้เขียนคอมมิทที่จำเป็น"
กรุณาช่วย.