- 데이터 이관 시 Tablespace 단위로 datafile를 이관하는 방법 - 대상 테이블스페이스 read only 상태에서 작업 진행해야 함 - 소스/타겟 캐릭터셋이 동일 해야 함 |
작업순서
1. 소스 테이블스페이스 read only
2. transport_tablespace 옵션 사용하여 메타정보 export
3. 타겟 장비에 dmp(export 받은)파일 및 데이터파일(해당 테이블스페이스의 데이터 파일) 이동
4. import
5. 타겟 테이블스페이스 read only -> read write 변경
제약사항
- Source DB와 Target DB 간의 character set이 동일해야 한다.
- system,undo,sysaux,temp는 지원 불가능
- 10g 이전 버전은 source 와 target이 같은 플랫폼일 때만 지원
- 10g 이후 버전은 rman 변환 작업을 통하여 지원가능
- Source와 Target은 동일한 Block Size를 사용해야 한다.
- Standard Edition은 지원 불가능
- Target DB는 Source DB 버전과 같거나 더 높아야 한다.
- Target DB에 이미 동일한 이름을 지닌 Tablespace가 존재시 사용불가. Transport 전에 Source Tablespace의 이름을 바꾸거나, 기존에 있던 Tablespace의 이름을 바꿀 수 있다.
- Target DB에 객체의 Owner가 존재하지 않으면 수동으로 User를 생성해야 한다.
소스DB 작업
기본 정보 확인
SQL> select * from v$transportable_platform ;
PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
----------- -------------------------------------------------- ------------------------------------------
1 Solaris[tm] OE (32-bit) Big
2 Solaris[tm] OE (64-bit) Big
7 Microsoft Windows IA (32-bit) Little
10 Linux IA (32-bit) Little
6 AIX-Based Systems (64-bit) Big
3 HP-UX (64-bit) Big
5 HP Tru64 UNIX Little
4 HP-UX IA (64-bit) Big
11 Linux IA (64-bit) Little
15 HP Open VMS Little
8 Microsoft Windows IA (64-bit) Little
9 IBM zSeries Based Linux Big
13 Linux x86 64-bit Little
16 Apple Mac OS Big
12 Microsoft Windows x86 64-bit Little
17 Solaris Operating System (x86) Little
18 IBM Power Based Linux Big
19 HP IA Open VMS Little
20 Solaris Operating System (x86-64) Little
21 Apple Mac OS (x86-64) Little
20 rows selected.
SQL> SELECT NAME, PLATFORM_ID, PLATFORM_NAME FROM V$DATABASE ;
NAME PLATFORM_ID PLATFORM_NAME
--------------------------- ----------- --------------------------------------------------
ORADB 13 Linux x86 64-bit
SQL> SELECT PARAMETER, VALUE FROM NLS_DATABASE_PARAMETERS
where parameter IN (
'NLS_CHARACTERSET', 'NLS_TERRITORY', 'NLS_LANGUAGE'
)
;
PARAMETER VALUE
------------------------------ ------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CHARACTERSET KO16MSWIN949
테스트 테이블, 인덱스 생성
테스트를 위해 TAB2_IX 인데스는 USERS 테이블스페이스에 생성
SQL> create tablespace tts01 datafile '/data/tts01.dbf' size 50M ;
Tablespace created.
SQL> create tablespace tts02 datafile '/data/tts02.dbf' size 50M ;
Tablespace created.
SQL> create table sk.tab1 tablespace tts01 as select * from dba_objects WHERE object_id IS not NULL ;
Table created.
SQL> create table sk.tab2 tablespace tts02 as select * from dba_tables ;
Table created.
SQL> create index sk.tab1_ix on sk.tab1(object_id) tablespace tts01 ;
Index created.
SQL> create index sk.tab2_ix on sk.tab2(owner, table_name) tablespace users ;
Index created.
SQL> SELECT owner, segment_name, segment_type, bytes, tablespace_name
FROM DBA_segments
WHERE owner = 'SK'
;
OWNER SEGMENT_NAME SEGMENT_TYPE BYTES TABLESPACE_NAME
-------------------- ------------------------------ ------------------------------ ---------- ------------------------------
SK TAB1 TABLE 9437184 TTS01
SK TAB2 TABLE 851968 TTS02
SK TAB1_IX INDEX 2097152 TTS01
SK TAB2_IX INDEX 196608 USERS
대상 테이블스페이스 read only 상태로 변경 후 expdp 사용 시 transport_tablespace 옵션 사용하여 진행
타겟DB로 dump 파일 및 데이터파일 복사 완료 후 read only -> read write 변경 해 줄 것(그전에 변경하면 impdp 작업 시 ORA-19722 에러 발생)
-- TTS 작업진행에 문제 없는지 체크
SQL> begin
dbms_tts.transport_set_check
(ts_list=>'TTS01,TTS02',
incl_constraints=>true);
end;
/
PL/SQL procedure successfully completed.
-- 대상 테이블스페이스 read only
SQL> alter tablespace tts01 read only;
Tablespace altered.
SQL> alter tablespace tts02 read only;
Tablespace altered.
SQL> SELECT tablespace_name, status FROM dba_tablespaces ;
TABLESPACE_NAME STATUS
------------------------------ ---------------------------
SYSTEM ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS ONLINE
TS01 ONLINE
IX01 ONLINE
TTS01 READ ONLY
TTS02 READ ONLY
9 rows selected.
SQL>
[oracle@svr1 pump]$ expdp system/oracle dumpfile=tts.dmp directory=pump transport_tablespaces=tts01,tts02 REUSE_DUMPFILES=YES
Export: Release 11.2.0.1.0 - Production on Fri Jun 24 16:48:09 2022
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
Starting "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01": system/******** dumpfile=tts.dmp directory=pump transport_tablespaces=tts01,tts02 REUSE_DUMPFILES=YES
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
Master table "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:
/home/oracle/pump/tts.dmp
******************************************************************************
Datafiles required for transportable tablespace TTS01:
/data/tts01.dbf
Datafiles required for transportable tablespace TTS02:
/data/tts02.dbf
Job "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully completed at 16:48:16
[oracle@svr1 pump]$
타겟DB로 관련 파일 이동 후 타겟DB에서 작업 진행
impdp 사용한 정보 import
[oracle@svr1 ORA19C]$ impdp system/oracle dumpfile=tts.dmp directory=pump transport_datafiles=/ORA19/app/oracle/oradata/ORA19C/tts01.dbf,/ORA19/app/oracle/oradata/ORA19C/tts02.dbf
Import: Release 19.0.0.0.0 - Production on Fri Jun 24 16:49:34 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": system/******** dumpfile=tts.dmp directory=pump transport_datafiles=/ORA19/app/oracle/oradata/ORA19C/tts01.dbf,/ORA19/app/oracle/oradata/ORA19C/tts02.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 Fri Jun 24 16:49:36 2022 elapsed 0 00:00:02
[oracle@svr1 ORA19C]$
이관 데이터 확인
TAB2_IX 인덱스는 이관되지 않았음(소스DB에서 USERS에 생성했기 때문)
SQL> SELECT owner, segment_name, segment_type, bytes, tablespace_name
FROM DBA_segments
WHERE owner = 'SK'
; 2 3 4
OWNER SEGMENT_NAME SEGMENT_TYPE BYTES TABLESPACE_NAME
-------------------- ------------------------------ ------------------------------ ---------- ------------------------------
SK TAB1 TABLE 9437184 TTS01
SK TAB1_IX INDEX 2097152 TTS01
SK TAB2 TABLE 851968 TTS02
SQL> select tablespace_name, status from dba_tablespaces ;
TABLESPACE_NAME STATUS
------------------------------ ------------------------------
SYSTEM ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS ONLINE
TTS01 READ ONLY
TTS02 READ ONLY
7 rows selected.
SQL> select count(*) from sk.tab1 ;
COUNT(*)
----------
71969
SQL> select count(*) from sk.tab2 ;
COUNT(*)
----------
2737
SQL>
'DBMS > ORACLE' 카테고리의 다른 글
OPTIMIZER_DYNAMIC_SAMPLING (0) | 2022.07.06 |
---|---|
WITH 문 사용(임시테이블, 프로시저, 펑션) 및 동작방식 (0) | 2022.07.01 |
listener.ora / sqlnet.ora / tnsnames.ora 차이점 (0) | 2022.06.20 |
패스워드 특수문자 포함 sqlplus 접속 방법 (0) | 2022.06.17 |
ADR(Automatic Diagnostic Repository) (0) | 2022.06.17 |
댓글