오라클/백업/복구

TTS(Transportable Tablespace) Migration

김포춘 2015. 7. 24. 14:55
반응형

TTS Migration

 

서로 다른 DB간 Tablespace단위로 Datafile을 migration 할 수 있는 기능

 

TTS 제약사항

 - 10g 이전 버전에서는 원본과 대상이 동일 platform일 경우 migration 가능

 - 동일 블록 사이즈 사용

 - system, undo, sysaux, temp tablespace 는 지원 불가능

 - asm 사용시 rman을 사용해 변환 작업을 거쳐야 함

 - standard edition 에서는 지원안됨

 

 

 

Oracle 8i 

Oracle 9i 

Oracle 10g 

blcok size 

동일 

달라도 됨 

달라도 됨 

platform (os) 

동일 

동일 

달라도 됨 

character set 

동일 

동일 

동일 

 

- character set, block size, platform 정보 확인 후 migration

 

character set 확인

select * from nls_database_parameters where parameter='NLS_CHARACTERSET';

 

-character set 다를 경우 변경 방법-      ex) KO16KSC601 로 변경

sql> shutdown immediate;

sql> startup mount;

sql> alter system enable restricted session;

sql> alter system set job_queue_processes=0;

sql> alter system set aq_tm_processes=0;

sql> alter database open;

sql> alter database character set internal_use KO16KSC5601;

sql> shutdown immediate

sql> startup

 

block size 확인

sql> show parameter block_size;

 

원본과 대상의 초기 parameter COMPATIBLE_VERSION 이 10.0 이상이어야 함.

(compatible_version 과 oracle version은 다른 것임)

sql> show parameter compatible

 

platform 확인

sql> select d.dbid,d.name,tp.platform_id, tp.platform_name,tp.endian_format

from v$transportable_platform tp, v$database d where tp.platform_name = d.platform_name;

 

platform 의 endian_format(os 속성) 이 동일해야 함. 다를 경우 rman 의 convert 명령어 이용

sql> select PLATFROM_ID, PLATFORM_NAME, ENDIAN_FORMAT from v$transportable_platform ;    

 

ex) HP UX ENDIAN_FORMAT=big => Microsoft Windows ENDIAN_FORMAT=little

$rman target=/

RMAN> convert tablespace 'TEST' to platform='Microsoft Windows IA (32-bit)' db_file_name_convert='/home/oracle/oradat/testdb/test01.dbf', '/home/oracle/test01_win.dbf';

 

-------------------------------------------------------------------------------------------준비 단계

 

 

실습.

 

Windows 7 oracle 11g -> RHEL 5.3 oracle 11g

 

Windows = source

RHEL = target

 

 

SOURCE

sql> conn / as sysdba

 

Test 용 tablespace, table 생성

sql> create tablespace test datafile 'c:\app\vmware\oradata\orcl\test_01.dbf' size 30m;

 

sql> create user test

default tablespace test

quota unlimited on test

identified by test;

 

sql> grant connect, resource to test;

 

sql> conn test/test

 

sql> create table test100(no number, name varchar2(10));

sql> create table test101(no number, name varchar2(10));

 

sql> insert into test100 values(1,'apple');

sql> insert into test100 values(2,'orange');

 

sql> insert into test101 values(1,'car');

sql> insert into test101 values(2,'ship');

 

sql> select segment_name, tablespace_name from user_segments;

 

SEGMENT_NAME      TABLESPACE_NAME

------------------   ----------------------

TEST100                    TEST

TEST101                    TEST

 

sql> select * from test.test100;           <--  insert 한 결과 잘 나오나 확인

sql> select * from test.test101;           <--  insert 한 결과 잘 나오나 확인

 

이동하려는 tablespace test 가 이동 가능한지 확인

sql> conn / as sysdba

 

sql> exec DBMS_TTS.transport_set_check('TEST',true) ;

pl/sql 처리가 정상적으로 완료되었습니다.

 

sql> select * from transport_set_violations ;

선택된 레코드가 없습니다.

 

test tablespace 를 read only 모드로 변경 (exp, imp하기위해서)

sql> alter tablespace test read only ; 

 

datapump 하기 위해 directory 생성, 권한부여

sql> create or replace directory dump as 'c:\app\vmware\dump' ;

sql> grant read, write on directory dump to system ;

 

$ expdp system/oracle dumpfile=dump:test.dmp transport_tablespaces=test

 

ftp 이용해서 test.dmp , test_01.dbf 파일을 target db 로 이동

-binary 모드로 변경 후 파일 이동-

 

 

TARGET

datapump 경로 설정

 

sql> create or replace directory dump as '/app/datapump';

sql> grant read, write on directory dump to system;

 

user 생성 (source db 에서 test user로 했기 때문에 target 도 test의 user가 있어야 함)

sql> create user test identified by test

* Source DB 에서 Target DB 로 옮기려고 하는 tablespace 중 target db에 동일한 이름의 tablespace 가 있으면 안됨.

 

impdp system/oracle dumpfile=test.dmp directory=dump transport_datafiles=/app/oracle/oradata/testdb/test_01/dbf

 

 

반응형

'오라클 > 백업/복구' 카테고리의 다른 글

RMAN+Clone DB 사용해서 복구  (0) 2014.11.17
RMAN 복구하기  (0) 2014.11.14
RMAN  (0) 2014.11.13
Flashback  (0) 2014.11.12
Clone DB  (0) 2014.11.10
sql loader  (0) 2014.11.10
데이터 이동하기  (0) 2014.11.06