Oracle

在 Orcale 數據庫中插入查詢 - 不顯示表中的行

  • July 11, 2021

我在 Oracle 數據庫表中插入一行。查詢如下所示 -

INSERT INTO <schema_name>.<Table_name> (SID, LABEL, DESCR, GTI_EXPTYP, GTI_MODUS, GTI_NAME) VALUES (22, '21.01.2019, 08:10:10', 'PDJHF q_sz_nlp (Update)', null, null, null);

我已經在 3/4 天前執行了上述查詢。查詢執行的結果是 -

1 row created.

但我沒有在表中看到新添加的條目。我想,我需要承諾。現在,當我嘗試再次執行相同的查詢並送出時,查詢執行沒有進行(卡住/掛起終端)。有人可以幫我理解這裡的問題嗎?

我是數據庫處理的新手。我正在使用 sqlplus 工具。

提前致謝!!

如果表中的插入使用相同的主鍵值掛起,則表明存在已插入此值但尚未送出的打開事務。

您可以通過檢查來自具有足夠特權的使用者的阻塞會話來確認這一點:

select s.machine, s.sid, s.serial#, s.event, s.state, s.blocking_session, sql.sql_text
from   gv$session s
left join   gv$sql sql
 on   s.sql_id           = sql.sql_id
and   s.sql_child_number = sql.child_number
and   s.inst_id      = sql.inst_id
where  (s.blocking_session is not null
or     (s.inst_id, s.sid) in (select bs.blocking_instance, bs.blocking_session from gv$session bs where bs.blocking_session is not null)
      )

找到舊的打開 SQL*Plus 會話並執行commitrollback. 或者,您可以使用查詢的輸出來確定您可以作為適當特權使用者終止哪個會話(這將強制回滾)。

執行以下查詢以找出被阻止的會話後 -

select s.machine, s.sid, s.serial#, s.event, s.state, s.blocking_session, sql.sql_text
from   gv$session s
left join   gv$sql sql
 on   s.sql_id           = sql.sql_id
and   s.sql_child_number = sql.child_number
and   s.inst_id      = sql.inst_id
where  (s.blocking_session is not null
or     (s.inst_id, s.sid) in (select bs.blocking_instance, bs.blocking_session from gv$session bs where bs.blocking_session is not null)
      )

然後通過執行以下查詢來終止打開事務的會話。

ALTER SYSTEM KILL SESSION 'sid,serial#';

謝謝!!

引用自:https://dba.stackexchange.com/questions/295512