Site icon DBA의 정석

Oracle TTS 마이그레이션 작업 가이드

TTS (Transportable Tablespace) 개요

Transportable Tablespace기능은 기존 데이터 로딩 방식이 실제 데이터를 추출하여 insert 하는 방식과는 다르게 테이블 스페이스 단위로 데이터를 마이그레이션 할 수 있는 기능이다. 같은 플랫폼은 물론이고 10g 부터는 이 기종 간의 마이그레이션에 활용 할 수 있다.

이기종 간의 TTS는 endian format에 따라 conversion이 필요할 수 도 있고, conversion없이 가능 하기도 하다. 이 문서는 동일기종간의 TTS에 대해서만 언급 한다.

  

제약 사항

 

Minimum Compatibility Requirements

 

Transport Scenario

Minimum Compatibility Setting

Source Database

Target Database

Databases on the same platform 

8.0 

8.0 

Tablespace with different database block size than the target database

9.0 

9.0 

Databases on different platforms 

10.0 

10.0 

 

 

 

 

 

DATA Migration을 위한 TTS 절차

DATA migration은 동일 기종간의 Transportable tablespace 작업이므로 endian format 등은 생략.

 

전체 작업 절차 :

정리하자면, 일반적으로 아래와 같은 절차에 의해서 TTS가 이루어진다.

 

  1. TTS 대상 테이블 스페이스 선정
  2. TTS violation check
  3. Violation 원인 제거
  4. 해당 Tablespace Read only mode로 전환
  5. Metadata export
  6. 해당 datafile을 Target server에 Copy
  7. Metadata import
  8. 후속 작업

  TTS 작업 관련 오라클 문제


 

아래와 같은 오라클 Bug이 확인됨.


 

Bug 5249074 – EXPDP ERRORS WHEN MANY TRANSPORTABLE TABLESPACES DEFINED

140여 개의 Tablespace에 대한 metadata export작업 시 에러 발생. Bug 5249074는 다량의 테이블 스페이스를 expdp 할때 에러가 발생하는 Bug이다.

그러므로, OM에서는 TTS를 수행하기 전 Source쪽 Database에 관련 패치 적용이 필요하다.


 

BUG 5252501 : IMP-17, ORA-8103 IMPORTING TRANSPORTABLE TABLESPACE

Import 하는 과정에서 테이블 한 개 에러 발생함. dictionary managed TBS 에 위치한 segment header 내의 extent map 을 고전적인 방식으로 fet$ 와 uet$ 로 재구성하는 과정에서 exception 이 발생할 수 있다고 함.

문제를 해결하기 위해서는 관련 Tablespace를 Dictionary 방식에서 Locally 방식으로 변경한 후 TTS 수행.

  


TTS 작업 절차

실 마이그레이션을 위한 작업 절차임.

 

Source site 작업

 

    # sqlplus “/ as sysdba”

  # SQL> @/oracle1/oracle/td/rdbms/admin/prvtbpm.plb

 

                 준비된 스크립트 @loc_tbs.sql 수행 또는 아래 수행.

# sqlplus “/ as sysdba”

# SQL> execute sys.dbms_space_admin.tablespace_migrate_to_local(‘TBS001’);

# SQL> execute sys.dbms_space_admin.tablespace_migrate_to_local(‘TBS194’);

 

# sqlplus “/ as sysdba”

# SQL> create directory AAA as ‘/oraom/MIG_NEW’;

# SQL> grant read, write on directory AAA to public;

 

select distinct tablespace_name

from dba_segments

where owner in (‘TDOPERO’,‘TDAPPO’,‘TDREFNPYS1’,‘TDREFWORK’,

‘TDSECO’) or (segment_name=’ERP_BIZR_SUM’ and segment_type=’TABLE’);

 

@check_tts.sql


샘플)

# sqlplus “/ as sysdba”

# SQL> exec dbms_tts.transport_set_check(‘BILLTEMP’………..,false,true) ;

 

# sqlplus “/ as sysdba”

# SQL> select * from transport_set_violations;

# sqlplus “/ as sysdba”

# SQL>@alter_part.sql

# SQL>@drop.sql

# SQL>@rebuild.sql

 

@check_tts.sql

방식)

# sqlplus “/ as sysdba”

# SQL> exec dbms_tts.transport_set_check(‘BILLTEMP’,false,true) ;

# sqlplus “/ as sysdba”

# SQL> select * from transport_set_violations;

à Violation이 나오지 않으면 정상.

# sqlplus “/ as sysdba”

# SQL>@readonly.sql

select ‘alter tablespace ‘||tablespace_name||’ read only;’

from

(select distinct tablespace_name

from dba_segments

where owner in (‘TDOPERO’,

‘TDAPPO’,

‘TDREFNPYS1’,

‘TDREFWORK’,

‘TDSECO’) or (segment_name=’ERP_BIZR_SUM’ and segment_type=’TABLE’))

/ 

 

expdp system/password dumpfile=tts.dmp directory=AAA transport_full_check=n parfile=parfile.txt EXCLUDE=OBJECT_GRANT,TRIGGER,MATERIALIZED_VIEW,TABLE_STATISTICS,INDEX_STATISTICS,INDEX,MATERIALIZED_VIEW_LOG

<parfile.txt 샘플>

TRANSPORT_TABLESPACES=(BILLTEMP,CSTTEMP… tbs 기술)

 

 

Target Site 작업

 

# sqlplus “/ as sysdba”

# SQL> create directory MIG as ‘/oraom/MIG’;

# SQL> grant read, write on directory MIG to public;

 

@create_user.sql 수행

 

# sqlplus “/ as sysdba”

# SQL> select file_name||’,\’ from dba_data_files

where tablespace_name in (select distinct tablespace_name

from dba_segments

where owner in (‘TDOPERO’,

‘TDAPPO’,

‘TDREFNPYS1’,

‘TDREFWORK’,

‘TDSECO’) or (segment_name=’ERP_BIZR_SUM’ and segment_type=’TABLE’)

)

/

<Par_imp.txt 내용 샘플>

transport_datafiles=/dev/vx/rdsk/ODB015/D05S20V15,\

/dev/vx/rdsk/ODB015/D05S20V12,\

/dev/vx/rdsk/ODB015/D04S20V09,\

/dev/vx/rdsk/ODB015/D04S20V04

 

impdp system/manager dumpfile=tts.dmp logfile=imp.log directory=MIG parfile=par_imp.txt

 

alter tablespace TBS_SUB_HIST_01 read write;


 

Exit mobile version