데이터 펌프 언로드

  • 오라클 10g에서는 Data Pump format으로 알려진 바이너리 포맷으로 추출하는 기능을 제공
TEST
h4. a. directory 객체 생성
{code:sql}
create or replace directory tmp as '/tmp'
/
{code}
h4. b.간단한 select문을 사용해서 디렉토리에 데이터를 언로드
{code:sql}
create table all_objects_unload
organization external
( type oracle_datapump
default directory TMP
location( 'allobjects.dat')
)
as
select
*
from all_objects
/
{code}
h4. c. 테이블 재생성하기위한 DDL추출
{code:sql}
sys@BWD> select dbms_metadata.get_ddl('TABLE','ALL_OBJECTS_UNLOAD')
2 from dual;

DBMS_METADATA.GET_DDL('TABLE','ALL_OBJECTS_UNLOAD')





















CREATE TABLE "SYS"."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)
)
ORGANIZATION EXTERNAL
( TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY "TMP"
LOCATION
( 'allobjects.dat'
)
)

|
|h4. d. 데이터 로드완료
{code:sql}
insert /*+append*/ into some_table select * from all_objects_unload;

|

정리

  • 데이터 로딩과 언로딩의 입출력을 다루었다.
  • SQL*Loader를 다루었고 구분자를가진데이터, 고정길이 데이터, LOB 등을 로드하기 위한 기본기술을 살펴보았다.
  • external 테이블에 대해 오라클 9i에서 활용 가능한 기능과 그 이상 버전에서 SQLLDR를 대체하기 위한 유용한 기능으로 사용할 수 있는 방법을 살표보았다.
  • 데이터 언로딩을 살펴보았다.
  • SQLLDR에 익숙한 포맷으로 데이터를 언로드하는 PL/SQL 유틸리티를 개발해서 시연했었다.
  • external 테이블 언로드와 오라클 10g이상에 있는 한 데이터베이스에서 다른 데이터베이스로 데이터를 쉽게 이동 및 생성할 수 있는 기능을 살펴보았다.