Admin/admin

PARTITION TABLE의 EXPORT/ IMPORT

Qhtlr 2007. 8. 24. 15:29

8~10g Standard Edition 에서는 Partitioning Option 은 지원하지 않는다.

1. export

   partitioned table과 관련하여 export는 다음의 두가지 level로 분류할
   수 있다.

   table-level export :
      1) partitioned 또는 non-partitioned table 전체를 export한다.
      2) 모든 export mode (full, user, table)에서 사용된다.
      예) $ exp scott/tiger file=wookpark.dmp tables=emp
          emp table(partitioned 또는 non-partitioned) 전체를 export

   partition-level export :
      1) partitioned table의 일부 partition만을 export한다.
      2) table export mode에서만 사용가능하다.
      3) b의 제한 사항때문에 full mode를 사용해야 하는 incremental
         export는 지원하지 못한다.
      예) $ exp scott/tiger file=wookpark.dmp tables=emp:px
          emp table의 px partition만을 export
          ':'을 이용하여 partition name을 지정한다.

   비고) 다음과 같이 두가지 level을 혼용하여 사용하는 것도 가능하다.
         $ exp scott/tiger file=wookpark.dmp tables=(emp:px, sales)
         sales table은 전부를, emp table에서는 px partition만을 export


2. import

   export와 마찬가지로 import도 다음의 두 가지로 분류할 수 있다.

   table-level import :
      1) partitioned 또는 non-partitioned table 전체를 import한다.
      2) 모든 import mode (full, user, table)에서 사용된다.
      예) $ imp scott/tiger file=wookpark.dmp tables=emp
          emp table(partitioned 또는 non-partitioned)전체를 import

   partition-level import :
      1) export dump file에서(full,user,table 중 어떠한 mode를 이용하여
         export했건 간에) partitioned table의 일부 partition만을 import
      2) table import mode에서만 사용 가능하다.
      예) $ imp scott/tiger file=wookpark.dmp tables=emp:px
          emp table의 px partition만을 import
          ':'을 이용하여 partition을 지정한다.


table-level import 시 우선 table creation 문장을 수행하고 row insert문을
수행하는 것과 마찬가지로, partition-level import도 우선 partitioned table
의 생성 문장을 수행하고 row insert문을 수행하게 된다.
따라서 ignore=y option 등을 적절히 사용하면, non-partitioned table과
partitioned table 간의 변경, partitioned table의 구조 변경 등을 수행할 수
있게 된다. 다음에는 그 중 몇 가지 예를 들어본다.

1. unpartitioned table을 exp, imp를 이용하여 partitioning하는 예

   1) unpartitioned table을 export한다.
      $ exp scott/tiger file=wookpark.dmp tables=emp

   2) 해당 table을 drop한다.
      SQL> drop table emp

   3) 해당 table을 create하면서 partitioning한다.
      SQL> create table emp (
             empno number(4) not null,
             ... )
           partition by range (empno)
           (partition emp1 values less than (1000) tablespace ts1,
            partition emp2 values less than (2000) tablespace ts2,
            partition emp3 values less than (3000) tablespace ts3) ;

   4) import한다.
      $ imp scott/tiger file=wookpark.dmp tables=emp ignore=y


2. partitioned table의 partition들을 exp, imp를 이용하여 merge하는 예

   1) merge의 대상이 되는 partition을 export한다.
      $ exp scott/tiger file=wookpark.dmp tables=emp:emp2

   2) merge의 대상이 되는 partition을 'alter table...'문장으로 drop한다.
      SQL> alter table emp drop partition emp2 ;

   3) import한다.
      $ imp scott/tiger file=wookpark.dmp tables=emp:emp2 ignore=y

   이후 emp table을 확인하면, emp2 partition에 있던 data가 emp3
   partition에 merge되어 있음을 확인할 수 있다.