"코딩세끼"

Oracle_Lock 본문

프로그래머로 전직하기/DataBase

Oracle_Lock

StrrayNight 2022. 6. 27. 19:48
반응형

입문자 사유 : 

update 문을 전송하고 commit을 안한 상황 : 해당 상황이 더욱 Lock을 길게 만드는 상황을 초래 할 수 있다. 

 

운영되고 있는 서버에 작업을 할 때 수동 update 문 작성 후 항상 commit을 날려야 한다. 그렇지 않으면 lock에 걸려 내 session과 SID가 날리는 쓰기,수정하기,지우기 문을 무시 할 수 있다. 이런 상황을 lock 이 걸렸다고 표현하는데, 단순히 

사람의 실수에서만 비롯되는 것은 아니다. Auto Commit 기능이 없는 API 또는 언어를 사용 할 때 항상 확인 해야하는 습관을 들여야한다. code를 작성하는 일도  사람이 작성하는 지라, (사람에게서 비롯되네요 ㅎㅎ) 조심해야 할 것이다. 

 

확인하는 방법은 lock의 원인이 되는 session 및  sid를 확인해서 제거하거나 죽여주는 것. 

 

sqltools 에 보면 session을 확인할 수 있는데, 그것을 확인 함으로 어느 명령에서 lock이 잡혔는지 알 수 있다. 

또한, 누가 그랬는지도 알 수 있다. 

======================================2022.07.01.============================================

lock 의 원인 : 

코드상 JSP 파일에서 executeUpdate(); 를 쓰는 구문이 있는데 

해당 JDBC API가 제대로 읽혀지지 않아 AutoCommit이 정상작동하지 않은 것으로 확인 됐다. 

 

lock의 해결 :

ExecuteUpdate() 구문에 AutoCommit의 기능의 오작동을 확인 했으므로, 해당 구문의 정상작동 원리를 파악하여 시간을 사용하는 것 보다는, 사용자의 입장에서 일단 기능을 정상작동을 하게 해놓고 파악해 보는 것이 좋겠다 생각돼, 코드에 먼저 Commit을 강제로 실행하게 했다. 

 

<%

Connection conn = ds.getConnection();

conn.commit() %>

 

lock은 해결 되었고, 해당 구문이 이상없이 commit을 나중에 한번 찍더라도 문제가 되지 않는지 모니터링 했다.

<<< A few moments later >>>

이상없이 잘 작동 되었다.

 

이상 주절주절 글 읽어주셔서 감사합니다. 

 

 

 

반응형