2016-04-27 81 views
0

我經常在Oracle中掛起會話(鎖定表)。避免掛斷會話和表鎖Oracle

沒有DBA權限,是否有方法刪除這些會話或解鎖表?

我能做些什麼來避免這個問題嗎? (例如SQL * PLUS中的某些超時設置)。

這主要是從bash腳本啓動的SQL。

+1

不需要查殺會話將需要ALTER SYSTEM權限。要檢查鎖定的對象,您應該能夠查詢v $ locked_object。 –

+1

解鎖主要是指清除鎖定對象的會話。所以殺死會話將自動清除該會話的鎖 –

回答

1

您可以要求您的DBA將權力委託給您,但如果您不是DBA,則無法解決這些開箱即用的問題。儘管如果他們是bash腳本,你可以殺死它們,假設你可以找出哪些PID需要切換。

當然,掛起會話通常是由於系統設計不佳或編程實踐不佳所致。所以如果你經常得到它們,你應該考慮修復你的應用程序。

不知道有關應用程序的任何內容以及究竟導致這些掛起的具體建議,但這裏有一些建議。在架構層面上,可能的解決方案將是更明智的作業管理,如調度或隊列。更好的編程實踐可能包括悲觀鎖定(select ... for update)和事務管理。