1. 데이터 펌프 언로드
- 오라클 10g 버전부터 EXPDP/IMPDP와 같은 바이너리 포멧으로 데이터를 추출하는 기능을 제공
-- 디렉토리 생성
SQL> create or replace directory tmp as '/tmp';
디렉토리가 생성되었습니다.
-- 데이터를 바이너리 파일로 저장(/tmp/allobjects.dat)
CREATE TABLE ALL_OBJECTS_UNLOAD
ORGANIZATION EXTERNAL
(
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY TMP
LOCATION( 'allobjects.dat')
)
AS
SELECT * FROM ALL_OBJECTS;
테이블이 생성되었습니다.
-- 바이너리 파일이라 사람이 읽어볼 수 없음
[oracle@mydream demo_dir]$ ls -al /tmp/allobjects.dat
-rw-r----- 1 oracle dba 7450624 12월 30 07:47 /tmp/allobjects.dat
-- 테이블 스크립트 추출
SQL> SELECT DBMS_METADATA.GET_DDL('TABLE', 'ALL_OBJECTS_UNLOAD') FROM DUAL;
DBMS_METADATA.GET_DDL('TABLE','ALL_OBJECTS_UNLOAD')
--------------------------------------------------------------------------------
CREATE TABLE "GENIE"."ALL_OBJECTS_UNLOAD"
( "OWNER" VARCHAR2(30),
"OBJECT_NAME" VARCHAR2(30),
"SUBOBJECT_NAME" VARCHAR2(30),
"OBJECT_ID" NUMBER,
"DATA_OBJECT_ID" NUMBER,
"OBJECT_TYPE" VARCHAR2(19),
"CREATED" DATE,
"LAST_DDL_TIME" DATE,
"TIMESTAMP" VARCHAR2(19),
"STATUS" VARCHAR2(7),
"TEMPORARY" VARCHAR2(1),
"GENERATED" VARCHAR2(1),
"SECONDARY" VARCHAR2(1),
"NAMESPACE" NUMBER,
"EDITION_NAME" VARCHAR2(30)
)
ORGANIZATION EXTERNAL
( TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY "TMP"
LOCATION
( 'allobjects.dat'
)
)
-- 데이터를 LOAD해야할 시스템으로 데이터파일(allobjects.dat)을 복사하고 테이블 생성 또는 원하는 테이블에 데이터 입력
CREATE TABLE TEST_TABLE
AS
SELECT * FROM ALL_OBJECTS_UNLOAD;
테이블이 생성되었습니다.