온라인 재정의를 통한 LONG -> LOB 변환을 하던 중 Primary Key가 없을 경우 DBMS_REDEFINITION.START_REDEF_TABLE 호출시 다음과 같은 오류가 발생하였다.
ORA-12089: cannot online redefine table “KCUBE”.”TBR_RFM_QXDMMSG” with no primary key
PK가 없는 테이블에 대해서는 안되는 모양이다.. -_-;;
추가
PK가 반드시 존재해야 하는 이유는 Table의 재정의 작업이 MV를 통해 이루어지기 때문이었다. MV를 이용하는 시점은 SYNC_INTERIM_TABLE 호출시로 온라인 작업중 변경된 사항에 대해 SYNC를 맞추는 시점이다. 재정의시 PK를 생성하고 정의가 끝나면 DROP 하는 방식으로 작업을 하면 되겠다.
참고로, PK가 아닌 ROWID 방식으로도 가능하다. DBMS_REDEFINITION.CONS_USE_PK 대신에
DBMS_REDEFINITION.CONS_USE_ROWID를 사용하면 된다.

No comments yet
Comments feed for this article