我有一個Oracle表,我試圖插入大量的記錄(大約150M)。 我正在使用sqldeveloper,並且在插入後我沒有單擊'commit'按鈕。Oracle:在緩慢的表上提交掛起的事務
現在這個表在任何操作上都很慢,但是如果我執行更新或計數,它將顯示錶中有0條記錄。例如,所有記錄的更新耗時5小時,並更新0條記錄。
因此,我認爲它之所以慢是因爲它有未提交的交易。我如何提交這些待處理的交易? (SqlDeveloper在初始插入後已關閉並打開)。
我有一個Oracle表,我試圖插入大量的記錄(大約150M)。 我正在使用sqldeveloper,並且在插入後我沒有單擊'commit'按鈕。Oracle:在緩慢的表上提交掛起的事務
現在這個表在任何操作上都很慢,但是如果我執行更新或計數,它將顯示錶中有0條記錄。例如,所有記錄的更新耗時5小時,並更新0條記錄。
因此,我認爲它之所以慢是因爲它有未提交的交易。我如何提交這些待處理的交易? (SqlDeveloper在初始插入後已關閉並打開)。
如果有必要的特權時,你可以使用
select nvl(S.USERNAME,'Internal') username,
nvl(S.TERMINAL,'None') terminal,
L.SID||','||S.SERIAL# Kill,
U1.NAME||'.'||substr(T1.NAME,1,20) tab,
decode(L.LMODE,1,'No Lock',
2,'Row Share',
3,'Row Exclusive',
4,'Share',
5,'Share Row Exclusive',
6,'Exclusive',null) lmode,
decode(L.REQUEST,1,'No Lock',
2,'Row Share',
3,'Row Exclusive',
4,'Share',
5,'Share Row Exclusive',
6,'Exclusive',null) request
from V$LOCK L,
V$SESSION S,
SYS.USER$ U1,
SYS.OBJ$ T1
where L.SID = S.SID
and T1.OBJ# = decode(L.ID2,0,L.ID1,L.ID2)
and U1.USER# = T1.OWNER#
and S.TYPE != 'BACKGROUND'
order by 1,2,5
這個SQL讓你在表中的任何鎖,你可以殺了他們
此查詢給了我一些結果,但我可以在這個列表中沒有看到指定的表 –
這意味着你的表沒有鎖可能你在sql中有問題 – CanFil
你的表可能會被鎖定,請運行從系統用戶下面的查詢找出那張桌子上是否有鎖。
select
object_name,
object_type,
session_id,
type, -- Type or system/user lock
lmode, -- lock mode in which session holds lock
request,
block,
ctime -- Time since current mode was granted
from
v$locked_object, all_objects, v$lock
where
v$locked_object.object_id = all_objects.object_id AND
v$lock.id1 = all_objects.object_id AND
v$lock.sid = v$locked_object.session_id
ORDER BY
session_id, ctime desc, object_name;
沒有鎖定表我也可以重命名錶 –
檢查是否有任何觸發器正在那張桌子上工作。 – Dba
您可能沒有該表上的索引,因此您必須運行全表掃描。 表的「高水位」向前移動。 嘗試通過執行「alter table shrink space compact」來減小表段的大小。 或者您可以使用「老式」命令「alter table move」,但是這個將會使您的表索引失效,並且這些索引也必須重建。
注意:Oracle表不是自我碎片整理。
你是糾正沒有索引。但有0記錄我的想法是計數應該很快。感謝您的建議。 –
當您在該表中插入150M行Oracle擴展表的空間分配單元「SEGMENT」時。當我們的交易回滾時,這並沒有減少。由於沒有索引,Oracle不知道其中沒有行。每次訪問表格時必須掃描整個分段。 – ibre5041
謝謝伊萬。它確實有道理。簡直就是輕便的轉儲桌子,並開始一個新的。 –
:你的sqldeveloper已關閉,這意味着你的會話已過期,這意味着所有的初始插入是回滾:(,沒有其他方式來檢索未完成的事務。嘗試新插入 –
謝謝。爲什麼桌子這麼慢?顯然有什麼東西必須在那裏? –
:什麼是表中的計數? –