IT/ORACLE

Toad로 대용량 테이블 조회시에 테이블 잠김문제

Qhtlr 2007. 4. 24. 11:46

Toad로 대용량 테이블 조회시에 테이블 잠김문제

Q> 데이터베이스 서버 모니터링 중에 갑작스레 과부하가 걸려서 확인했더니 Toad 세션을 열어놓고 대용량 테이블을 조회하던 개발자 쪽에서 Tx Lock이 발견되었다.
Lock형식이 TX면 트랜잭션 잠금으로 커밋이나 롤백을 하던지 해당 세션을 삭제하는 걸로 알고있다. 일단,개발자가 자리를 비웠기에 해당세션을 Kill하고 확인해보니까 테이블을 변경한 적도 없고
단지 그리드를 띄워 놓고 조회만 했다고 한다. Toad로 테이블 조회시에 암묵적으로 Lock이 발생하는 경우가 있다고 들은 기억이 있는데 어떻게 테이블 조회하는 경우에 Toad가 Lock을 유발하는지에 대해 알고 싶다.

A> Oracle11g database에서도 SFU(select for update)는 select객체권한으로부터 분리되지 않았다.
select,debug,delete,insert,references,under,upate와 같은 객체 권한이 있으면 관련 테이블에LT(Lock Table)명령문을 사용할 수 있다는 사실을 통해,경우에 따라서는 순수하게 읽기 전용 세션만으로 머무르지는 않을 수도 있다는 가상을 해본다.
즉,SQL Prompt를 획득할 수만 있다면 LT나 SFU를 던져서 어떤 테이블에 잼을 거는 것은 그리 어려운 일이 아니라는 것이다. Toad와 같은 편리한 GUI를 가진 만능툴에는 이러한 그늘이 숨어있다.
아주 손쉽게, 그리고 부지불식간에 SFU를 사용하게 되는 여러 가지 유형의 케이스(Schema browser에서의 그리드 팝업데이터 같은)를 가지고 있다.
관리자는 개발자에게 이런 백-엔드의 리스크를 알리고 Toad세션을 절약하도록 당부하는 것이 좋을것 이다.

출처:OKM 2007 spring