ORACLE_DATAPUMPドライバでの外部表

ORACLE_DATAPUMPドライバでの外部表の作成

外部表の作成

外部表TOM.EXT_DP_BOOKを作成する

CREATE TABLE EXT_DP_BOOK
    ORGANIZATION EXTERNAL (
        TYPE ORACLE_DATAPUMP
        DEFAULT DIRECTORY DATAPUMP_DIR
        ACCESS PARAMETERS (LOGFILE 'tom_exp_dp_book.log')
        LOCATION ('ext_dp_book.dmp')
    )
    AS SELECT * FROM TAB_HASH_PART;
 
PROD(TOM)>DESC EXT_DP_BOOK
 名前                                    NULL?    型
 ----------------------------------------- -------- ----------------------------
 ORDER_ID                                           NUMBER
 ORDER_DATE                                         DATE
 BOOK_NO                                   NOT NULL VARCHAR2(20)
 BOOK_TYPE                                 NOT NULL VARCHAR2(20)
 BOOK_CNT                                  NOT NULL NUMBER
 REMARKS                                            VARCHAR2(40)
 
PROD(TOM)>select count(*) from ext_dp_book;
 
  COUNT(*)
----------
    100000
 
PROD(TOM)>

上記のダンプファイルを使って、外部表TOMCAT.EXT_DP_BOOKを作成する
CREATE TABLE TOMCAT.EXT_DP_BOOK (
    ORDER_ID    NUMBER,
    ORDER_DATE    DATE,
    BOOK_NO        VARCHAR2(20),
    BOOK_TYPE    VARCHAR2(20),
    BOOK_CNT    NUMBER,
    REMARKS        VARCHAR2(40))
    ORGANIZATION EXTERNAL (
        TYPE ORACLE_DATAPUMP
        DEFAULT DIRECTORY DATAPUMP_DIR
        ACCESS PARAMETERS (LOGFILE 'tomcat_exp_dp_book.log')
        LOCATION ('ext_dp_book.dmp')
    );
 
PROD(TOMCAT)>desc TOMCAT.EXT_DP_BOOK;
 名前                                    NULL?    型
 ----------------------------------------- -------- ----------------------------
 ORDER_ID                                           NUMBER
 ORDER_DATE                                         DATE
 BOOK_NO                                            VARCHAR2(20)
 BOOK_TYPE                                          VARCHAR2(20)
 BOOK_CNT                                           NUMBER
 REMARKS                                            VARCHAR2(40)
 
PROD(TOMCAT)>select count(*) from TOMCAT.EXT_DP_BOOK;
 
  COUNT(*)
----------
    100000
 
PROD(TOMCAT)>
パラレルで外部表の作成
  • LOCATION句のファイル数と並列度が一致している必要がある。
  • 余分なファイルを指定した場合は、すべて無視される。
  • 指定された並列度に対して必要数のファイルが存在しない場合、LOCATION句のファイル数と一致するよう並列度が下げられる。

##パラレル3でTOM.EXT_DP_BOOKを作成する。##

CREATE TABLE EXT_DP_BOOK
    ORGANIZATION EXTERNAL (
        TYPE ORACLE_DATAPUMP
        DEFAULT DIRECTORY DATAPUMP_DIR
        ACCESS PARAMETERS (LOGFILE 'tom_exp_dp_book.log')
        LOCATION ('ext_dp_book1.dmp','ext_dp_book2.dmp','ext_dp_book3.dmp')
    )
    PARALLEL 3
    AS SELECT * FROM TAB_HASH_PART;
 
PROD(TOM)>host ls -l
total 4764
-rw-r-----  1 oracle oinstall 1527808 Jun 13 01:37 ext_dp_book1.dmp
-rw-r-----  1 oracle oinstall 1728512 Jun 13 01:37 ext_dp_book2.dmp
-rw-r-----  1 oracle oinstall 1605632 Jun 13 01:37 ext_dp_book3.dmp
-rw-r--r--  1 oracle oinstall     164 Jun 13 01:37 tom_exp_dp_book.log
 
PROD(TOM)>select count(*) from ext_dp_book;
 
  COUNT(*)
----------
    100000
 
PROD(TOM)>
複数のダンプファイルで外部表を作成する。

上記の例で作成されたext_dp_book1.dmpとext_dp_book3.dmpでTOMCAT.EXT_DP_BOOKを作成する

CREATE TABLE TOMCAT.EXT_DP_BOOK (
    ORDER_ID    NUMBER,
    ORDER_DATE    DATE,
    BOOK_NO        VARCHAR2(20),
    BOOK_TYPE    VARCHAR2(20),
    BOOK_CNT    NUMBER,
    REMARKS        VARCHAR2(40))
    ORGANIZATION EXTERNAL (
        TYPE ORACLE_DATAPUMP
        DEFAULT DIRECTORY DATAPUMP_DIR
        ACCESS PARAMETERS (LOGFILE 'tomcat_exp_dp_book.log')
        LOCATION ('ext_dp_book1.dmp','ext_dp_book3.dmp')
    );
 
PROD(TOMCAT)>select count(*) from ext_dp_book;
 
  COUNT(*)
----------
     64406
 
PROD(TOMCAT)>

主なパラメータとオプション

LOGFILE | NOLOGFILE

  • LOGFILEは、ダンプ・ファイルのアクセス中に生成されたすべてのメッセージを含むログ・ファイルの名前を指定する。
  • LOGFILEが指定されない場合、デフォルトのディレクトリにログ・ファイルが作成され、ログ・ファイルの名前は、表名および.logの拡張子を持つプロセスIDから生成される。

VERSION句

  • VERSION句は、ダンプ・ファイルを読み込むOracle Databaseの最小バージョンを指定するために使用する。
  • バージョン10.1を指定すると、10.1と10.2の両方のデータベースでダンプ・ファイルを読み込むことができる。
  • バージョン10.2を指定すると、10.2のデータベースのみでダンプ・ファイルを読み込むことができる。
  • デフォルト値はCOMPATIBLEである。
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License