반응형
ORA-00071: attempt to destroy lock by a thread that did not create it
이 오류는 하나의 스레드가 자신이 생성하지 않은 락을 제거하려고 할 때 발생합니다. 일반적으로 Oracle 내부 구조나 사용자 정의 락 처리 로직에서 나타날 수 있습니다.
오류 원인
- 락을 생성한 세션/스레드와 제거하려는 주체가 일치하지 않음
- 사용자 정의 락 관리 로직에서 오류 발생
- Oracle 내부에서 다중 스레드/세션 간 자원 충돌 발생
해결 방법
- 락 생성과 제거를 동일 세션 또는 동일 트랜잭션 내에서 수행
- 락 추적 시:
SELECT * FROM dba_locks WHERE session_id = (세션 ID);
- PL/SQL 프로그래밍 시, DBMS_LOCK 사용 시 주의 필요
- 잠금 관련 코드를 트랜잭션 단위로 정리
간단 요약
- 오류 코드: ORA-00071
- 오류 요약: 다른 스레드가 만든 락을 제거하려는 시도
- 주요 원인: 락 생성/제거 주체 불일치
- 해결 방법: 동일 트랜잭션/세션 내에서 처리, 코드 재검토
반응형