이번에는 이 기종인 linux에서 window로 migration을 하는 방법을 포스팅하려고 한다.
제약사항은 이전에 있던 TTS글에서 설명했으므로 생략하고 바로 테스트 시나리오로 넘어가도록 하겠다.
Source DB
▶ nls_characterset이 같은지 확인한다.
select value from nls_database_parameters where parameter='NLS_CHARACTERSET'
VALUE
---------------
KO16MSWIN949
▶ compatible을 확인한다. (양쪽다 10.0 이상이어야 한다)
show parameter compatible
NAME TYPE VALUE
------------ ----------- ------------------------------
compatible string 11.2.0.0.0
▶ 블록사이즈를 확인한다.
show parameter db_block_size
NAME TYPE VALUE
-------------- ----------- ---------
db_block_size integer 8192
▶ Endian_format을 확인한다.
select d.dbid,d.name,tp.platform_id,tp.platform_name,endian_format from v$transportable_platform tp,v$database d
where tp.platform_name=d.platform_name
DBID NAME PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
---------- --------- ----------- ------------------ --------------
1681187063 13 Linux x86 64-bit Little
Target DB
▶ nls_characterset이 같은지 확인한다.
select value from nls_database_parameters where parameter='NLS_CHARACTERSET'
VALUE
----------------
KO16MSWIN949
▶ compatible을 확인한다. (양쪽다 10.0 이상이어야 한다)
show parameter compatible
NAME TYPE VALUE
------------ ----------- ------------------------------
compatible string 11.2.0.0.4
▶ 블록사이즈를 확인한다.
show parameter db_block_size
NAME TYPE VALUE
-------------- ----------- ---------
db_block_size integer 8192
▶ Endian_format을 확인한다.
select d.dbid,d.name,tp.platform_id,tp.platform_name,endian_format from v$transportable_platform tp,v$database d
where tp.platform_name=d.platform_name
DBID NAME PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
---------- --------- ----------- ------------------ --------------
4155286339 12 Microsoft Windows x86 64-bit Little-
확인하고 이상없이 동일하다면 다음으로 넘어간다.
Source DB
▶ 테스트용 테이블 생성
sql> create tablespace tts
datafile '/app/oracle/oradata/ysbae/tts.dbf' size 1G;
Tablespace created.
▶ 유저 생성
sql> create user tts identified by tts default tablespace tts quota unlimited on tts;
▶ tts 유저에 접속권한 부여
sql> grant connect,resource to tts;
Grant succeeded.
▶ 테스트 테이블 및 인덱스 생성
sql> conn tts/tts
sql> create table tts_1 as
select l.*, o.*
from
(select dbms_random.string('l',10) from dual) o,
(select level as lvl
from dual connect by level <= 1000000) l ;
Table created.
sql> select count(*) from tts_1;
COUNT(*)
----------
1000000
sql> create index tts_1_lvl on tts_1(lvl);
Index created.
sql> select segment_name,segment_type from user_segments;
SEGMENT_NAME SEGMENT_TYPE
----------------- ------------------
TTS_1 TABLE
TTS_1_LVL INDEX
-테스트용 테이블과 인덱스가 정상생성된 것을 확인할 수 있다.
▶ tts 가능여부 체크(sys 계정에서 진행)
sql> exec dbms_tts.transport_set_check('TTS',true);
PL/SQL procedure successfully completed.
sql> select * from transport_Set_violations
no rows selected
- no rows selected가 뜨면 위반사항이 없다는 뜻이고 진행하면 된다.
▶ expdp/impdp위한 디렉토리 생성
$mkdir /home/oracle/tts
sql> create or replace directory trans_dir as '/home/oracle/tts'
Directory created.
sql> grant read,write on directory trans_dir to system;
Grant succeeded.
▶ 옮길 Tablespace를 read only로 변경
sql> alter tablespace tts read only;
▶ expdp로 object 정보의 메타데이터 추출
$ expdp test/test dumpfile=trans_dir:trans.dmp transport_tablespaces=tts;
Export: Release 11.2.0.1.0 - Production on Tue Oct 29 10:03:35 2019
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
...생략
- 이로써 Source DB의 준비는 끝났으며 Target DB 설정 후 TTS를 진행한다.
Target DB
▶ DB 유저 생성 및 디렉토리 생성
sql> create or replace directory trans_dir as 'C:\tts';
Directory created.
Sql>grant read,write on directory trans_dir to system;
Sql> create user tts identified by tts default tablespace users;
User created.
sql> grant connect,resource to tts;
▶ TTS에 필요한 dbf파일과 dmp파일을 Target DB로 전송
-파일전송 툴을 사용하여 dmp파일과 dbf파일을 전송한다.
▶dbf파일을 [datafile 경로] 밑으로 옮겨준다.
▶메타데이터 dmp파일을 impdp를사용하여 넣어준다
>impdp system/oracle dumpfile=trans_dir:trans.dmp transport_datafiles=C:\app\Administrator\oradata\ysbae2\tts.dbf
Import: Release 11.2.0.4.0 - Production on Tue Oct 29 10:15:08 2019
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
UDI-28002: operation generated ORACLE error 28002
ORA-28002: the password will expire within 7 days
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit
Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
Source time zone version is 11 and target time zone version is 14.
Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": system/******** dumpfile=trans
_dir:trans.dmp transport_datafiles=C:\app\Administrator\oradata\ysbae2\tts.dbf
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object type TRANSPORTABLE_EXPORT/INDEX
Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at Tue Oct 29
10:15:12 2019 elapsed 0 00:00:03
▶ 데이터가 Migration되었는지 확인
SQL> conn tts/tts
Connected.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
TTS_1 TABLE
SQL> select count(*) from tts_1;
COUNT(*)
----------
1000000
SQL> select segment_name,segment_type from user_segments;
SEGMENT_NAME SEGMENT_TYPE
---------------------------
TTS_1 TABLE
TTS_1_LVL INDEX
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
TTS_1 TABLE
이 기종이긴 하지만 endian format이 동일하여 convert 작업 없이 dbf 파일을 그대로 사용할 수 있었다.
'Oracle > 이관' 카테고리의 다른 글
Redo log,Datafile 경로 변경 (0) | 2020.10.27 |
---|---|
MSSQL to Oracle DB Link (2) | 2020.09.14 |
[TTS]11g file system to 19c ASM Migration_2 (0) | 2020.03.05 |
[TTS]11g linux to 18c linux migration (0) | 2019.11.05 |
[TTS]11g file system to 19c ASM Migration (0) | 2019.11.05 |
댓글