0
我經常在Oracle中掛起會話(鎖定表)。避免掛斷會話和表鎖Oracle
沒有DBA權限,是否有方法刪除這些會話或解鎖表?
我能做些什麼來避免這個問題嗎? (例如SQL * PLUS中的某些超時設置)。
這主要是從bash腳本啓動的SQL。
我經常在Oracle中掛起會話(鎖定表)。避免掛斷會話和表鎖Oracle
沒有DBA權限,是否有方法刪除這些會話或解鎖表?
我能做些什麼來避免這個問題嗎? (例如SQL * PLUS中的某些超時設置)。
這主要是從bash腳本啓動的SQL。
您可以要求您的DBA將權力委託給您,但如果您不是DBA,則無法解決這些開箱即用的問題。儘管如果他們是bash腳本,你可以殺死它們,假設你可以找出哪些PID需要切換。
當然,掛起會話通常是由於系統設計不佳或編程實踐不佳所致。所以如果你經常得到它們,你應該考慮修復你的應用程序。
不知道有關應用程序的任何內容以及究竟導致這些掛起的具體建議,但這裏有一些建議。在架構層面上,可能的解決方案將是更明智的作業管理,如調度或隊列。更好的編程實踐可能包括悲觀鎖定(select ... for update
)和事務管理。
不需要查殺會話將需要ALTER SYSTEM權限。要檢查鎖定的對象,您應該能夠查詢v $ locked_object。 –
解鎖主要是指清除鎖定對象的會話。所以殺死會話將自動清除該會話的鎖 –