Korean English Japanese Chinese (Simplified) Chinese (Traditional)

 

 

 

/* TTS(Transportable TableSpace)를 이용함으로써 다른 플랫폼 간의 다른 DB끼리 테이블스페이스를 이동할 수 있다. 데이터베이스를 다른 플랫폼으로 이동시키기 위해, V$TRANSPORTABLE_PLATFORM 뷰에서 endian format을 미리 체크해야 할 필요가 있다. */

 

 

 

[노드2]

CREATE TABLESPACE tbs_migrate_01 DATAFILE '/tmp/tbs_migrate01.dbf' SIZE 10M;
CREATE USER usr_migrate_01 IDENTIFIED BY asdf0930k;
GRANT CONNECT, RESOURCE, EXP_FULL_DATABASE, UNLIMITED TABLESPACE TO usr_migrate_01;

conn usr_migrate_01/asdf0930k
CREATE TABLE usr_migrate_01.tbl_migrate_01
TABLESPACE tbs_migrate_01
AS
SELECT     *
FROM       dba_objects
WHERE      rownum <= 100;

 

 

/* 두 노드의 OS가 같다면, V$TRANSPORTABLE_PLATFORM 뷰에서 endian format를 체크할 필요가 없을 것이다. DBMS_TTS.TRANSPORT_SET_CHECK 프로시저를 사용해 해당 테이블스페이스가 self_contained 테이블스페이스 (다른 테이블스페이스와 의존관계가 거의 없는 상태) 인지 확인한다. */

/* DBMS_TTS.TRANSPORT_SET_CHECK 프로시저를 사용해 self_contained 테이블스페이스인지 확인하고, TRANSPORT_SET_VIOLATIONS 뷰를 통해서 TTS에 violation이 있는지 여부를 확인한다. */

 

/* self-contained 테이블스페이스인지 확인한다. */
EXEC DBMS_TTS.TRANSPORT_SET_CHECK('tbs_migrate_01', TRUE);
SELECT * FROM transport_set_violations;

/* 비 self-contained 형식의 테이블 작성 */
CREATE TABLE usr_migrate_01.tbl_self_contained (id NUMBER)
PARTITION BY RANGE(id)
(PARTITION one VALUES LESS THAN (100) TABLESPACE tbs_migrate_01,
 PARTITION two VALUES LESS THAN (1000) TABLESPACE users);
 
EXEC DBMS_TTS.TRANSPORT_SET_CHECK('tbs_migrate_01',TRUE);
SELECT * FROM TRANSPORT_SET_VIOLATIONS;

ALTER TABLE usr_migrate_01.tbl_self_contained MOVE PARTITION two TABLESPACE tbs_migrate_01;

EXEC DBMS_TTS.TRANSPORT_SET_CHECK('tbs_migrate_01',TRUE);
SELECT * FROM TRANSPORT_SET_VIOLATIONS;

 

 

 

/* 이제 테이블스페이스를 read only모드로 바꾸고, metadata를 export할 것이다. DBA_DIRECTORIES 뷰로 덤프파일을 export하기 위한 디렉토리를 확인한다. */

 

/* 노드 간 nfs를 configure */

참고: https://yooliberalhouse.tistory.com/50

 

1-8 Server Configuration - Management of NFS-mounted file system

NFS: Network File System, 지정한 상대방과의 네트워킹을 통해 보다 안전한 파일 공유가 가능 실습 환경: Oracle Database 19.3.0 서버 노드: 192.168.56.25 클라이언트 노드: 192.168.56.26 난이도: ★★★★☆ 문제 1

yooliberalhouse.tistory.com

 

ALTER TABLESPACE tbs_migrate_01 READ ONLY;

CREATE DIRECTORY export AS '/nfs_folder';

SELECT * FROM dba_directories;

$ expdp system/asdf0930k dumpfile=migrate_01.dmp directory=export transport_tablespaces=tbs_migrate_01

 

[노드1]

nfs디렉토리를 통해 제대로 데이터파일이 옮겨졌는지 확인한다.

 

 

 

 

 

 

난이도: 

문제 1:  first virtual machine에 테이블스페이스를 생성하고 테이블을 생성해라. 이 테이블스페이스를 second virtual machine에 옮기고, 테이블을 쿼리해보라. (15분)

 

[노드1]

 

[노드2]

$ impdp system/asdf0930k dumpfile=exp01.dmp directory=export transport_datafiles=/nfs_folder/exporttbs

SELECT count(*) FROM exporttbs01;

 

 

 

 

 

 

난이도: 

문제 2:  Windows OS에 테이블스페이스를 생성하고 테이블을 생성해라. linux 플랫폼으로 테이블스페이스를 옮겨라. (8분)

 

/* 그냥 테이블스페이스를 export하기 전에 RMAN에서 CONVERT DATAFILE 작업을 한번 더 거친다고 생각하면 편하다. */

 

/* 현재 플랫폼 상태와 endian 확인 */
SELECT     db.name, db.platform_name, trp.endian_format
FROM       v$database db, v$transportable_platform trp
WHERE      db.platform_name = trp.platform_name;

/* transportable한 플랫폼 리스트 확인 */
select platform_name, endian_format
from v$transportable_platform;

/* 데이터파일의 플랫폼 endian 모드를 바꿀 수 있다. 본 실습에서는 HP-UX를 사용하지 않는 상태이므로 당연히 에러가 발생한다. */
CONVERT DATAFILE '/tmp/tbs_migrate01.dbf' TO platform="Linux x86 64-bit" FROM platform="HP-UX IA (61-bit)" format='/tmp/convert01.dbf';


$ expdp system/asdf0930k dumpfile=migrate_01.dmp directory=export transport_tablespaces=tbs_migrate_01

 

 

 

 

난이도: 

문제 3: linux OS 환경에서 돌아가는 데이터베이스에 두 테이블스페이스를 생성하여라. 그리고 Windows OS 환경에서 돌아가는 virtual machine으로 옮기고, 데이터베이스에 plug하여라. (8분)

 

/* CONVERT DATAFILE 작업은 [노드2]에서 impdp 후에 진행할 수도 있다. */

 

 

 

 

If you like this post, please give me a ❤️...!
 
✰Popular Posts✰
✰Recent Posts✰
 

❤ Seoul, Daejeon, Tokyo, Fukuoka
Site developed by Ryu Hyunwoo