Project & Issu

마이그레이션

gu9gu 2024. 6. 18. 17:57

마이그레이션 시 생각 못 했던 사항을 정리

 

 - 마이그레이션 할 데이터 조회시 ID로 ORDER BY를 해준다.

    -> 어디까지 완료된건지, 문제가 어디서 터진건지 확인 가능

    -> 마이그레이션 할 데이터 조회 시점 이후에 추가된 데이터가 있는 경우 추가로 작업하기 편하다.

 

- 마이그레이션 쿼리를 PL SQL로 하는 경우 에외나 문제 포인트에 ROLLBACK 처리를 해준다.

    ->  DB 툴에서 설정해놓은 대로 ROLLBACK 되는 경우가 있는데,  툴에 의존하지 않고 ROLLBACK 할 수 있도록 예외 처리 코드를 넣어줘야 한다.

 

개발서버에서 DBEAVER로 PL SQL을 돌려봤는데, 에러가 발생했을 때 전체가 다 ROLLBACK 돼서 PL SQL 전체에 대해서 TRANSACTION이 잡힌다고 생각했다. ( DBEAVER에서 설정을 따로 건드리지 않았음)

 

설정 바꾸면 ROLLBACK 안 되는지 다시 테스트 필요

 

 

PL SQL 예외처리를 해줄 때 고민

 방법1. 예외가 발생하기 전에 INSERT한 데이터들의 경우는 유지하고 예외가 발생한 부분에 대한 LOG를 찍는다.

 방법2. 전체 다 ROLLBACK 해준다.

 

PL SQL 예외처리 

 - DBEAVER에서 OUPUT 창에서 OUTPUT 출력 잘 되는지 확인 ( CTRL+SHIFT+O  )

BEGIN
	DBMS_OUTPUT.PUT_LINE('TEST');
END;

 

 - 

 

 

 

 

 

 

 

 

 

 

-- 프로시저 실행 중 

drop table 테이블명;

 -> [54] ORA-00054: 리소스가 사용 중이어서 NOWAIT가 지정되었거나 시간 초과가 만료된 상태로 획득합니다.

 

 

SELECT A.SID, A.SERIAL#, A.STATUS

FROM V$SESSION A, V$LOCK B, DBA_OBJECTS C

WHERE A.SID = B.SID

AND B.ID1 = C.OBJECT_ID

AND B.TYPE = 'TM'

AND C.OBJECT_NAME = '테이블명';

 

ALTER SYSTEM KILL SESSION '768, 31831' immediate;