대고객 문자 발송 시스템 개발 중 트랜잭션 설계를 하며 트랜잭션 전파 속성, DB pessimistic lock 을 테스트 중이다.

삽질 내용 : 로직(Required) 윗단에 for update wait로 lock을 잡아놓고 밑에 DB update 로직을 REQUIRES_NEW로 처리하면 당연히 될거라 생각. 그런데 계속 멈춤 현상이 발생. 왜 그럴까 생각해보니 이미 한 트랜잭션에서 select lock을 잡아놓고 새로운 트랜잭션에서 Update를 하려고 하니 당연히 lock 걸려 있으니 안되는게 정상...

DB pessimistic lock 기능 잘 작동되네...ㅋ

Posted by 知彼知己百戰不殆
,

상황 : local Database임에도 불구하고 sqlplus / as sysdba 접속 시 insufficient privilege 에러가 발생

해결 : 유저&그룹(Users and Groups) 들어가서 Users 폴더의 현재 실행중인 계정 속성창에서 
          Member Of(그룹) 탭에서 Add 버튼 클릭, advanced 클릭, Find Now 클릭, Search results에서 
         ora_dba 추가

Posted by 知彼知己百戰不殆
,

문제 : 스프링프레임워크를 사용 중인 프로젝트에서 오류 발생 시 rollback 처리가 되지 않음

원인 분석:
1. 메소드에 transactional 어노테이션이 추가되어 있으므로 당연히 오류 발생 시 rollback 될거라 생각했으나, 일단 기본 어노테이션 속성은 예기치 못한 오류에 대해서 rollback하므로 어노테이션에 rollback속성 지정
2. rollback 속성을 지정했음에도 rollback이 실행되지 않았고, 그대로 DB update로 이어짐
3. transaction이 생성되지 않고 그냥 처리된단 생각이 들어 application-context.xml 확인

해결 방안 : <tx:annotation-driven transaction-manager="transactionManager"/> 설정이 없어 추가

참고: annotation-driven: 등록된 bean 중 transactional 어노테이션이 붙은 것들에 transaction 적용

Posted by 知彼知己百戰不殆
,