오라클(Oracle) 락(Lock) 개체 확인 및 락해제 방법
오라클 프로그램을 사용하다 보면 통계성의 테이터 조회를 하거나 대용량의 데이터를 업데이트 하기도 합니다. 오라클은 많은 데이터를 한번에 처리하는것이 아니라 commit 전까지 데이터를 가지고 있다가 commit 이나 rollback이 일어나면 그 때 처리하는 겁니다.
실무에서는 이런 일이 상당히 많이 있는데요. 일부 운영데이터를 개발데이터로 이관 시 이런 문제가 발생하기도 하지요
그러다 보니 lock이 걸리기도 하는데요. 어떤 부분에서 lock이 걸리는지 확인 후 걸린 개체를 해체시켜야 합니다.
이번 시간은 오라클(Oracle) 락(Lock) 개체 확인 및 락해제 방법을 알아보겠습니다.
락개체를 조회하기 위해 V$LOCKED_OBJECT 시스템 테이블을 이용합니다.
SID 와 SERIAL#를 확인해서 어떤 테이블에 어떤 세션이 잡고 있는지 확인합니다.
SELECT A.SID |
조회가 되면 MEBMER_TEST 테이블에 락이 걸린것을 확인할 수 있습니다.
락해제는 SID와 SERIAL#번호로 확인할 수 있는데요
락이 걸린 SID와 SESSION 의 세션을 죽이면 되는데요
명령어는 다음과 같습니다.
ALTER SYSTEM KILL SESSION '[SID], [SESSION]';
ALTER SYSTEM KILL SESSION '231, 13515'; |
이렇게 되면 락이 걸린 세션이 죽게되어 락해제가 됩니다.
어떤 SQL 때문에 해당 TABLE에 LOCK이 걸린것인지 확인할수 있는데요
SELECT DISTINCT A.SESSION_ID |
쿼리를 실행하면 어떤 SQL 이 문제가 되고 어떤 테이블에 문제가 있는지 확인할 수 있습니다.
이상 오라클(Oracle) 락(Lock) 개체 확인 및 락해제 방법을 알아보았습니다.