오라클(ORACLE) 계정간의 데이터베이스 이관(복사, 이동) Tip

 experience

  • 개발중인 서비스의 대규모 개편으로 DB 스키마등이 많이 바뀔 예정인 상태. 오라클 DB 성능이 좋은건지, 뭐가 좋은 건지 파티션(?), 샤딩(?) 없이 한대로 서비스 중(부하가 그리 크지는 않은 상태)이라서 오픈 시점에(서비스 영향이 없는 한에서..)  한꺼번에 마이그레이션 등등 작업을 계획함.. 이에 대한 검증 등의 목적으로 실 DB -> 개발 DB로 이관을 고려하게 됨. 


 - SQLDeveloper의 도구(tool) > 데이터베이스 복사(?) 메뉴를 이용


 여러 우여곡절 끝에 오라클에서 DB 복사 및 이관시에는 다음과 같은 선작업이 필요함을 알게됨.(데이터 크기에 따라 복사에 시간이 많이 소요되므로 알고 이관하는 것이 시간낭비를 줄일 수 있는 듯.)


 


* 복사될 계정(또는 DB)에 넉넉한 TableSpace가 있어야함. 그렇지 않을 경우, 복사 및 인덱스 생성등이 제대로 되지 않음.. (동적으로 tablespace가 증가하는 설정이 미리 안되어 있는 경우에는, 복사된 테이블 삭제후 새로운 tablespace에 이관을 해야하는 번거로움 존재) 

** SQLDeveloper 만을 이용할 경우, tablespace 설정이 고정인 경우가 있음(즉, 모든 작업이 하나의 tablespace에서만 수행됨). 이런 경우에는 테이블 1개만 복사를 수행한 뒤, 결과로 생성된 쿼리에서 tablespace부분만 원하는 tablespace 변경한 쿼리를 이용하여 해결하는 방법도 가능.(전체 테이블 적용시에는 생성된 쿼리의 테이블 부분등등 일부만 변경하여 일괄적으로 수행)


 * 실 데이터는 가장 나중으로 미룬 뒤, 스키마 및 시퀀스, 인덱스 등을 먼저 이관

 ** 인덱스를 미리 생성하지 않고 데이터 복제부터 한뒤, 인덱스 생성시 인덱스 생성에도 시간이 많이 소요됨.


* 데이터까지 복사 후, 각 테이블별 통계정보 샘플링 작업이 필요함. 인덱스가 있더라도 통계정보가 제대로 쌓여있지 않아, 쿼리 수행속도가 상당히 느린 경우 발생. (샘플링 역시 sql developer로 진행가능 하며, 대량으로 할 경우에는 한 개 테이블 샘플링 한 뒤, 나오는 쿼리를 복사하여 전체테이블에 적용하도록 수정하면 가능함)


 

댓글

이 블로그의 인기 게시물

엑셀(excel) 비쥬얼 베이직(visual basic, vba) 심플 실비(실손보험, 실손의료비) 계산식

아트월에 날짜, 시간 나오는 LED 벽시계 설치시 케이블(전선)이 두꺼워서 틈새(홈)에 매립이 안되는 경우 랜선(lan cable, lan선) 이용시 주의사항

신한투자증권(주) 님이 세금계산서를 발행하였습니다. TaxBill365 관련 안전한 메일인지 여부?