Oracle8i에서 처음 소개된 Transportable Tablespace는 서로 다른 데이터베이스 간의 고속 데이터 전송을 가능하게 하였습니다. 이 기능을 이용하여 먼저 테이블스페이스의 메타데이터만을 export한 다음, 데이터 파일과 export 덤프 파일을 타겟 데이터베이스에 전송하고, 메타데이터를 import하여 타겟 데이터베이스에 테이블스페이스에 “플러그인” 처리하는 것이 가능합니다. 이와 같이 하면 테이블스페이스의 데이터를 타겟 데이터베이스에서 바로 활용할 수 있습니다. Transportable Tablespace는 당시까지 데이터 웨어하우징 분야에서 가장 까다로운 난제의 하나로 인식되던 데이터의 이동 속도 문제를 해결하였다는 점에서 큰 의미를 갖습니다.
하지만 OLTP 데이터베이스 환경에서는 이러한 작업이 항상 가능한 것만은 아닙니다. 특히 OLTP 데이터베이스를 데이터 웨어하우스의 데이터 소스로 이용하는 환경에서 Transportable Tablespace를 이용하여 데이터를 로드하는 경우는 거의 없을 것입니다.
Oracle Database 10g Release 2에서는 테이블스페이스를 또 다른 형태의 소스, 즉 백업으로부터 플러그인할 수 있는 기능을 제공합니다. 예를 들어, ACCDATA 테이블스페이스를 전송하고자 하는 경우, 다음과 같이 RMAN 커맨드를 수행할 수 있습니다
RMAN> transport tablespace accdata
2> TABLESPACE DESTINATION = '/home/oracle'
3> auxiliary destination = '/home/oracle';
위 명령은 /home/oracle 디렉토리에 “auxiliary” 인스턴스를 생성하고, 백업된 파일을 이곳으로 복구하도록 지시하고 있습니다. “auxiliary” 인스턴스의 이름은 랜덤하게 생성됩니다. 인스턴스가 생성되고 나면, 프로세스는 해당 디렉토리에 디렉토리 오브젝트를 생성하고 ACCDATA 테이블의 파일을 복구합니다. 이 모든 작업은 완전 자동화된 형태로 수행됩니다.
/home/oracle 디렉토리에는 ACCDATA 테이블스페이스의 모든 데이터파일, 메타데이터를 포함한 덤프파일, 그리고 impscrpt.sql라는 이름의 스크립트가 저장됩니다. 이 스크립트는 테이블스페이스를 타겟 테이블스페이스에 플러그인하는데 필요한 모든 명령을 포함하고 있습니다. 테이블스페이스는 impdp 커맨드를 통해 전송되지 않으며, 대신 dbms_streams_tablespace_adm.attach_tablespaces 패키지의 호출을 통해 전송됩니다. 관련된 모든 커맨드는 impscrpt.sql 스크립트에서 확인하실 수 있습니다.
하지만 이 과정에서 문제가 발생한다면 어떻게 될까요? 그리 걱정할 필요는 없습니다. 먼저, “auxiliary” 인스턴스의 로그 파일은 $ORACLE_HOME/rdbms/log 디렉토리에 저장됩니다. 두 번째로, 아래 RMAN 커맨드를 이용하면 RMAN 커맨드와 그 실행 결과를 로그 파일에 저장할 수 있습니다
rman target=/ log=tts.log
위 명령은 모든 실행 결과를 tts.log 파일에 저장하도록 명시하고 있습니다.
마지막으로, 모든 파일은 /home/oracle의 TSPITR_ 디렉토리에 복구됩니다. 예를 들어, 메인 데이터베이스의 SID가 ACCT이고, RMAN에 의해 생성된 "auxiliary” 인스턴스의 SID가 KYED인 경우, 디렉토리명은 “TSPITR_ACCT_KYED”로 설정됩니다. 이 디렉토리는 두 개의 서브디렉토리를 가집니다. datafile 디렉토리는 데이터파일을 위해, onlinelog 디렉토리는 리두로그를 위해 사용됩니다. 새로운 테이블스페이스를 생성하기 전에, 이 디렉토리를 점검하여 어떤 파일들이 복구되는지 확인할 수 있습니다 (이 파일은 모든 과정이 완료되면 자동 삭제됩니다).
이 기능은 DBA가 이미 오래 전부터 요구해오던 것입니다. 하지만 백업본을 소스로 사용하는 경우 최신 데이터가 반영될 수 없다는 점을 명심할 필요가 있습니다.
출처:오라클