데이터이야기

DB 노하우, 데이터직무, 다양한 인터뷰를 만나보세요.

데이터 마이그레이션(Migration)에 숨겨진 1분을 감소시켜라 - 4부

데이터 이야기
작성자
dataonair
작성일
2014-07-08 00:00
조회
5483


테이블스페이스 이동은 데이터 마이그레이션의 새로운 방법이다.

테이블스페이스 이동을 이용하여 데이터 마이그레이션을 수행하는 경우는 거의 보지 못했다. 그 이유는 많은 사람들이 이러한 방법이 존재하는지를 인지하지 못하기 때문인 것 같다. 또한, 테이블스페이스 이동 방식은 많은 제한 사항을 가지고 있기 때문은 아닐까 생각한다. 그렇다면 테이블스페이스 이동 방식에는 어떠한 제한 사항이 존재하는가 테이블스페이스 이동의 아키텍쳐를 확인하기 전에 우선 테이블스페이스 이동의 제한 사항을 확인해 보자.

테이블스페이스 이동 방식은 동일한 시스템에서 데이터를 마이그레이션하는 방식으로는 사용이 불가능하다. 다른 시스템으로 데이터를 마이그레이션하는 경우에만 사용이 가능하다. 또한, 테이블스페이스를 이동하는 데이터베이스의 버전과 OS가 동일해야만 데이터 마이그레이션을 보장할 수 있다. 데이터베이스 버전과 OS가 다르다면 문제가 발생할 수 있다는 의미가 될 것이다. 추가로, 우리가 이동시키고자 하는 테이블스페이스를 읽기 전용 테이블스페이스 또는 오프라인으로 변경해야 한다. 테이블스페이스 이동은 이와 같은 제한 사항이 존재하기 때문에 사용 시 주의해야 할 것이다. 테이블스페이스 이동을 이용하여 데이터 마이그레이션을 수행한다면 해당 테이블스페이스의 형태 그대로 데이터가 마이그레이션되기 때문에 기존의 I/O 분산과 동일하게 된다. 따라서, 기존에 I/O 분산이 최적화되어 있다면 상관 없겠지만 기존에 I/O 분산이 최적화되어 있지 않다면 I/O의 성능에서 낭패를 볼 수 도 있다.

테이블스페이스 이동은 데이터 마이그레이션을 수행하고자 하는 테이블스페이스를 우리가 원하는 시스템에 FTP로 이동시킨 후 해당 테이블스페이스에 해당하는 메타 데이터만 임포트를 수행한다면 이동한 시스템의 데이터베이스에서 해당 테이블스페이스를 인식하게 된다. 그렇기 때문에 테이블스페이스 이동에 소요되는 마이그레이션 시간은 대부분이 테이블스페이스에 해당하는 데이터 파일을 FTP로 다른 시스템으로 이동시키는 시간이다. 테이블스페이스의 메타 데이터에 대한 임포트는 메타 데이터가 매우 작으므로 바로 임포트를 수행할 수 있다.

위와 같이 테이블스페이스 이동 방식은 매우 간단한 수행 방식을 가지며 단지 데이터 파일에 대한 FTP 속도가 해당 테이블스페이스를 마이그레이션하는 소요 시간의 대부분을 차지하게 된다. 또한, 테이블스페이스 이동은 해당 테이블스페이스를 모두 이동시키는 마이그레이션이므로 해당 테이블스페이스의 모든 데이터와 인덱스가 동시에 마이그레이션된다. 하지만 해당 테이블의 다른 오브젝트는 마이그레이션되지 않으므로 이는 수동으로 생성해야 하는 번거로움이 존재하게 된다.

테이블 이동(Table Move)은 빠른 속도를 보장한다.

테이블 이동 방식은 데이터 마이그레이션 보다는 해당 시스템에서 다른 공간으로 테이블을 이동시키는 방법으로 더 많이 사용된다. 이와 같은 아키텍쳐를 가지고 있으므로 데이터 마이그레이션으로 이용할 수 있다.

테이블 이동의 최대 단점은 다른 시스템으로 테이블을 이동시킬 수 없다는 것이다. 그렇기 때에 동일 시스템에서 데이터를 마이그레이션하는 경우 이용하게 된다. 직접 로딩의 경우에는 동일 시스템에서의 이동 뿐만 아니라 다른 시스템으로의 이동도 가능하다. 이와 같은 단점을 가지고는 있지만 테이블을 이동시키는 방식은 실제 데이터를 엑세스하여 이동하는 방식이 아니라 데이터 파일에서 해당 테이블의 블록을 복사(Copy)하는 방식을 이용하게 되므로 테이블의 데이터를 이동시키는 속도를 보장하게 된다. 이와 같이 복사의 개념을 가지는 테이블 이동은 동일 시스템에서 데이터를 마이그레이션하는 경우 속도를 보장하면서 손쉽게 사용할 수 있는 방식임에는 틀림없다. 이러한 방법도 알고 있다면 우리는 보다 유연성을 가지고 데이터 마이그레이션을 수행할 수 있을 것이다.

데이터베이스 백업 본을 이용한 데이터 마이그레이션은 기존 시스템에 영향을 주지 않는다.

다른 데이터 마이그레이션 방법은 기존 시스템에 영향을 미치게 된다. 하지만, 기존에 존재하는 데이터베이스의 백업 본을 이용한 데이터 마이그레이션 방법은 기존 시스템을 엑세스하지 않기 때문에 기존 시스템에 성능 영향을 미치지 않게 된다. 이러한 장점도 있지만 데이터베이스 백업을 이용한 데이터 마이그레이션 또한 테이블스페이스 이동과 마찬가지로 테이블스페이스 단위로 데이터 마이그레이션이 수행되며 모든 테이블스페이스를 이동시키는 경우가 아니라면 테이블을 제외한 나머지 오브젝트는 수동으로 생성해야 할 것이다.

데이터베이스 백업을 이용한 마이그레이션도 많은 곳에서 사용하는 데이터 마이그레이션 아키텍쳐이다. 하지만, 이와 같이 수행한다면 기존 데이터베이스에 백업 본이 정상적으로 존재해야 하며 현 시점까지의 데이터를 마이그레이션할 수는 없게 된다. 백업을 받은 시점에서 부터 적용할 수 있는 로그가 기록하고 있는 시점까지만 데이터 마이그레이션을 수행할 수 있다는 단점을 가지고 있지만 이러한 특징은 때로 장점이 되기도 한다.

SQL Loader를 이용한 데이터 마이그레이션은 제한적으로 사용이 가능하다.

SQL Loader를 이용한 데이터 마이그레이션은 우리가 편집기로 읽을 수 있는 파일이 존재해야 한다. 해당 파일이 어떤 형식일지라도 반드시 데이터의 정보를 저장하고 있는 파일이 존재해야 SQL Loader를 사용할 수 있게 된다.

SQL Loader는 직접 로딩도 가능하며 병렬 프로세싱도 가능하다. 그렇기 때문에 데이터베이스를 파일로 UNLOAD한 후 데이터 마이그레이션을 수행하고자 하는 시스템에서 SQL Loader를 수행할 경우 직접 로딩 및 병렬 프로세싱을 이용한다면 우리가 원하는 수행 속도를 보장 받을 수 있을 것이다.

이와 같이 SQL Loader를 이용한 데이터 마이그레이션은 테이블에 대한 데이터 마이그레이션만 가능하기 때문에 그 외의 오브젝트에 대한 마이그레이션은 수동으로 수행해야만 된다. 또한 기존 데이터베이스에서 데이터를 UNLOAD하기 위해서는 SQL을 통해 SPOOL UNLOAD를 수행할 수도 있지만 이 방법보다는 다른 업체의 UNLOAD 유틸리티를 이용하여 데이터를 UNLOAD 한다면 UNLOAD에 대한 성능을 보장 받을 수 있게 된다.

최적의 데이터 마이그레이션 방법을 선택해라.

데이터 마이그레이션의 방법은 위에서 확인한 것과 같이 많은 종류가 존재한다. 이와 같이 많은 방법이 존재하기 때문에 최적의 데이터 마이그레이션 방법을 선택하기 힘들 수도 있을 것이다. 잘못된 데이터 마이그레이션 방법을 선택하는 순간 데이터 마이그레이션을 수행하기 위해 많은 시간을 소요해야 한다. 이와 같이 많은 시간을 데이터 마이그레이션에 소요한다면 해당 시스템의 서비스 정지 시간 또한 증가하게 될 것이다.

우리가 데이터 마이그레이션을 수행하는 동안 한가지 방법만을 사용할 수 있는 것은 아니다. 해당 시스템의 모든 테이블을 분석하여 어떤 테이블들은 직접 로딩을 수행하고 나머지 테이블은 익스포트/임포트 방식을 사용할 수 도 있다. 이처럼 다양한 방법을 이용하여 우리는 데이터 마이그레이션을 수행할 수 있으며 이로 인해 데이터 마이그레이션의 수행 속도를 최적화시킬 수 있게 된다.

이제 데이터 마이그레이션을 수행하는 작업에 대해 다양한 방식을 고려하여 최적의 방법을 선택해야 할 것이다. 최적의 데이터 마이그레이션 방법의 선택이 10시간의 작업을 1시간으로 감소시킬 수 있는 방법임을 명심하길 바란다.