對比資料泵與原始匯入匯出工具(七)

yangtingkun發表於2010-08-25

Oracle的匯入匯出工具EXP/IMP由來已久,大部分人對於使用這兩個工具也都不陌生。Oracle10g開始推出的資料泵EXPDP/IMPDP,提供了匯入匯出的效能,也增加了匯入匯出的功能,但是由於使用時間不長,可能部分人對這個工具不太瞭解。一直打算寫幾篇文章,簡單描述一下EXP/IMPEXPDP/IMPDP的差異。

對比資料泵與原始匯入匯出工具(一):http://yangtingkun.itpub.net/post/468/476017

對比資料泵與原始匯入匯出工具(二):http://yangtingkun.itpub.net/post/468/476060

對比資料泵與原始匯入匯出工具(三):http://yangtingkun.itpub.net/post/468/477335

對比資料泵與原始匯入匯出工具(四):http://yangtingkun.itpub.net/post/468/477380

對比資料泵與原始匯入匯出工具(五):http://yangtingkun.itpub.net/post/468/477633

對比資料泵與原始匯入匯出工具(六):http://yangtingkun.itpub.net/post/468/504239

這篇描述資料泵的SQLFILE引數。

 

 

Oracleexp提供了INDEXFILE命令,可以將索引和表的建立指令碼輸出到檔案:

[oracle@bjtest ~]$ exp yangtk/yangtk file=yangtk.dmp

Export: Release 11.2.0.1.0 - Production on 星期四 8 26 01:10:55 2010

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


連線到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即將匯出指定的使用者...
.
正在匯出 pre-schema 過程物件和操作

.
正在匯出使用者 YANGTK 的外部函式庫名
.
匯出 PUBLIC 型別同義詞
.
正在匯出專用型別同義詞
.
正在匯出使用者 YANGTK 的物件型別定義
即將匯出 YANGTK 的物件...
.
正在匯出資料庫連結

.
正在匯出序號
.
正在匯出簇定義
.
即將匯出 YANGTK 的表透過常規路徑...
. .
正在匯出表                     MV_UNIONALL匯出了          25

. .
正在匯出表                               T匯出了          11
. .
正在匯出表                    T_DOUBLE_IND匯出了       85995
.
.
.
.
正在匯出 post-schema 過程物件和操作
.
正在匯出統計資訊
成功終止匯出, 沒有出現警告。
[oracle@bjtest ~]$ imp yangtk/yangtk file=yangtk.dmp indexfile=yangtk_imp.sql full=y

Import: Release 11.2.0.1.0 - Production on 星期四 8 26 01:11:51 2010

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


連線到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

經由常規路徑由 EXPORT:V11.02.00 建立的匯出檔案
已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的匯入
. .
正在跳過表 "MV_UNIONALL"                     

. . 正在跳過表 "T"                               

. . 正在跳過表 "T_DOUBLE_IND"                    

. . 正在跳過表 "T_EXP"                           

. . 正在跳過表 "T_ID"                            

. . 正在跳過表 "T_LOG"                           

. . 正在跳過表 "T_NEW"                           

. . 正在跳過分割槽 "T_PART_LIST":"P1"                

. . 正在跳過分割槽 "T_PART_LIST":"P2"                

. . 正在跳過分割槽 "T_PART_LIST":"P4"                

. . 正在跳過表 "T_RECORD"                        

成功終止匯入, 沒有出現警告。
[oracle@bjtest ~]$ more yangtk_imp.sql

REM  CREATE TABLE "YANGTK"."MV_UNIONALL" ("ROW_ID" ROWID, "ID" NUMBER,
REM  "NAME" VARCHAR2(30), "FLAG" CHAR(1)) PCTFREE 10 PCTUSED 40 INITRANS 1
REM  MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1
REM  FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE
REM  "YANGTK" LOGGING NOCOMPRESS ;
REM  ... 25 rows
REM  CREATE TABLE "YANGTK"."T" ("ID" NUMBER, "NAME" VARCHAR2(30)) PCTFREE
REM  10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT
REM  1048576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL
REM  DEFAULT) TABLESPACE "YANGTK" LOGGING NOCOMPRESS ;
REM  ... 11 rows
CONNECT YANGTK;
CREATE INDEX "YANGTK"."IND_T_ID" ON "T" ("ID" ) PCTFREE 10 INITRANS 2
MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 FREELISTS 1
FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "YANGTK" LOGGING ;
REM  ALTER TABLE "YANGTK"."T" ADD CHECK (id > 0) ENABLE ;
REM  ALTER TABLE "YANGTK"."T" ADD CHECK (id > 0) ENABLE ;
REM  CREATE TABLE "YANGTK"."T_DOUBLE_IND" ("ID" NUMBER, "NAME"
REM  VARCHAR2(30), "TYPE" VARCHAR2(30), "CONTENTS" VARCHAR2(4000)) PCTFREE
REM  10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 109051904 NEXT
REM  1048576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL
REM  DEFAULT) TABLESPACE "YANGTK" LOGGING NOCOMPRESS ;
REM  ... 85995 rows
CREATE INDEX "YANGTK"."IND_DOUBLE_NAME" ON "T_DOUBLE_IND" ("NAME" )
PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 5242880 NEXT 1048576
MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE
"YANGTK" LOGGING ;
CREATE INDEX "YANGTK"."IND_DOUBLE_TYPE" ON "T_DOUBLE_IND" ("TYPE" )
PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 3145728 NEXT 1048576
MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE
"YANGTK" LOGGING ;
REM  CREATE TABLE "YANGTK"."T_EXP" ("ID" NUMBER, "NAME" VARCHAR2(30))
REM  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 131072
.
.
.
REM  CREATE TABLE "YANGTK"."T_RECORD" ("STR" VARCHAR2(30), "TIME" DATE)
REM  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 131072
REM  NEXT 1048576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL
REM  DEFAULT) TABLESPACE "YANGTK" LOGGING NOCOMPRESS ;
REM  ... 3 rows

而在資料泵中,SQLFILE引數可以實現同樣的功能:

[oracle@bjtest ~]$ expdp yangtk/yangtk directory=d_output dumpfile=yangtk.dp

Export: Release 11.2.0.1.0 - Production on 星期四 8 26 01:12:43 2010

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

連線到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
啟動
"YANGTK"."SYS_EXPORT_SCHEMA_01":  yangtk/******** directory=d_output dumpfile=yangtk.dp
正在使用 BLOCKS 方法進行估計
...
處理物件型別
SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計
: 105.5 MB
處理物件型別
SCHEMA_EXPORT/USER
處理物件型別
SCHEMA_EXPORT/SYSTEM_GRANT
.
.
.
處理物件型別
SCHEMA_EXPORT/JOB
. .
匯出了 "YANGTK"."T_DOUBLE_IND"                     85.31 MB   85995

. .
匯出了 "YANGTK"."T_PART_LIST":"P1"                 252.3 KB    5574
. .
匯出了 "YANGTK"."MV_UNIONALL"                      6.890 KB      25
. .
匯出了 "YANGTK"."T"                                5.562 KB      11
. .
匯出了 "YANGTK"."T_EXP"                            5.562 KB      11
. .
匯出了 "YANGTK"."T_ID"                             5.570 KB      83
. .
匯出了 "YANGTK"."T_LOG"                            5.468 KB       4
. .
匯出了 "YANGTK"."T_NEW"                            5.562 KB      11
. .
匯出了 "YANGTK"."T_PART_LIST":"P2"                 6.859 KB      15
. .
匯出了 "YANGTK"."T_PART_LIST":"P4"                 7.921 KB      39
. .
匯出了 "YANGTK"."T_RECORD"                         5.476 KB       3
. .
匯出了 "YANGTK"."T_TEST"                               0 KB       0
已成功載入/解除安裝了主表 "YANGTK"."SYS_EXPORT_SCHEMA_01"
******************************************************************************
YANGTK.SYS_EXPORT_SCHEMA_01
的轉儲檔案集為
:
  /home/oracle/yangtk.dp
作業 "YANGTK"."SYS_EXPORT_SCHEMA_01" 已於 01:13:45 成功完成

[oracle@bjtest ~]$ impdp yangtk/yangtk directory=d_output dumpfile=yangtk.dp sqlfile=yangtk_impdp.sql

Import: Release 11.2.0.1.0 - Production on 星期四 8 26 01:20:45 2010

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

連線到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功載入/解除安裝了主表
"YANGTK"."SYS_SQL_FILE_FULL_01"
啟動
"YANGTK"."SYS_SQL_FILE_FULL_01":  yangtk/******** directory=d_output dumpfile=yangtk.dp sqlfile=yangtk_impdp.sql
處理物件型別
SCHEMA_EXPORT/USER
處理物件型別
SCHEMA_EXPORT/SYSTEM_GRANT
處理物件型別
SCHEMA_EXPORT/ROLE_GRANT
處理物件型別
SCHEMA_EXPORT/DEFAULT_ROLE
處理物件型別
SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
處理物件型別
SCHEMA_EXPORT/TYPE/TYPE_SPEC
處理物件型別
SCHEMA_EXPORT/DB_LINK
處理物件型別
SCHEMA_EXPORT/TABLE/TABLE
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理物件型別
SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別
SCHEMA_EXPORT/TABLE/COMMENT
處理物件型別
SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
處理物件型別
SCHEMA_EXPORT/PROCEDURE/PROCEDURE
處理物件型別
SCHEMA_EXPORT/PROCEDURE/GRANT/OWNER_GRANT/OBJECT_GRANT
處理物件型別
SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
處理物件型別
SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
處理物件型別
SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
處理物件型別
SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
處理物件型別
SCHEMA_EXPORT/MATERIALIZED_VIEW
處理物件型別
SCHEMA_EXPORT/JOB
作業 "YANGTK"."SYS_SQL_FILE_FULL_01" 已於 01:20:49 成功完成

[oracle@bjtest ~]$ more yangtk_impdp.sql
-- CONNECT YANGTK
ALTER SESSION SET EVENTS '10150 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10904 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '25475 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10407 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10851 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '22830 TRACE NAME CONTEXT FOREVER, LEVEL 192 ';
-- new object type path: SCHEMA_EXPORT/USER
-- CONNECT SYSTEM
 CREATE USER "YANGTK" IDENTIFIED BY VALUES 'S:CACB810781CB82D028FD99FB7839AA499B59399E41C820CCC2288B9A402F;B50318A3C52FE640'
      DEFAULT TABLESPACE "YANGTK"
      TEMPORARY TABLESPACE "TEMP";
 
-- new object type path: SCHEMA_EXPORT/SYSTEM_GRANT
GRANT ALTER DATABASE LINK TO "YANGTK";
.
.
.
CREATE TABLE "YANGTK"."T_RECORD"
   (    "STR" VARCHAR2(30 BYTE),
        "TIME" DATE
   ) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 81920 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "YANGTK" ;
.
.
.
-- new object type path: SCHEMA_EXPORT/JOB
 BEGIN SYS.DBMS_IJOB.SUBMIT(
      JOB=> 64,
      LUSER=> 'YANGTK',
      PUSER=> 'YANGTK',
      CUSER=> 'YANGTK',
      NEXT_DATE=> TO_DATE('4000-01-01 00:00:00', 'YYYY-MM-DD:HH24:MI:SS'),
      INTERVAL=> 'sysdate + 1/1440',
      BROKEN=>  TRUE,
      WHAT=> 'begin insert into t_id values (1); commit; end;',
      NLSENV=> 'NLS_LANGUAGE=''SIMPLIFIED CHINESE'' NLS_TERRITORY=''CHINA'' NLS_CURRENCY=''
'' NLS_ISO_CURRENCY=''CHINA'' NLS_NUMER
IC_CHARACTERS=''.,'' NLS_DATE_FORMAT=''DD-MON-RR'' NLS_DATE_LANGUAGE=''SIMPLIFIED CHINESE'' NLS_SORT=''BINARY''',
      ENV=> '0102000200000000');
      END;  
 /
 
 

資料泵的SQLFILEIMPINDEXFILE包含的源資料更多。INDEXFILE如名稱那樣,主要包含索引資訊,連建表的語句都是被註釋的。而SQLFILE則包含當前SCHEMA所有物件的建立資訊。

而且SQLFILE功能更強大之處在於定製性,這是IMPINDEXFILE所不具備的。INCLUDEEXCLUDE用來限制匯入物件的引數完全可以和SQLFILE配合使用,使得SQLFILE獲取DDL更加的靈活方便:

[oracle@bjtest ~]$ impdp yangtk/yangtk directory=d_output dumpfile=yangtk.dp sqlfile=yangtk_impdp.sql include=table include=index

Import: Release 11.2.0.1.0 - Production on 星期四 8 26 01:21:26 2010

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

連線到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功載入/解除安裝了主表
"YANGTK"."SYS_SQL_FILE_FULL_01"
啟動
"YANGTK"."SYS_SQL_FILE_FULL_01":  yangtk/******** directory=d_output dumpfile=yangtk.dp sqlfile=yangtk_impdp.sql include=table include=index
處理物件型別
SCHEMA_EXPORT/TABLE/TABLE
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理物件型別
SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別
SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別
SCHEMA_EXPORT/TABLE/COMMENT
處理物件型別
SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
作業 "YANGTK"."SYS_SQL_FILE_FULL_01" 已於 01:21:30 成功完成

[oracle@bjtest ~]$ more yangtk_impdp.sql
-- CONNECT YANGTK
ALTER SESSION SET EVENTS '10150 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10904 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '25475 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10407 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10851 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '22830 TRACE NAME CONTEXT FOREVER, LEVEL 192 ';
-- new object type path: SCHEMA_EXPORT/TABLE/TABLE
CREATE TABLE "YANGTK"."T_PART_LIST"
   (    "OWNER" VARCHAR2(30 BYTE),
        "NAME" VARCHAR2(30 BYTE),
        "TABLESPACE_NAME" VARCHAR2(30 BYTE),
        "TYPE" VARCHAR2(18 BYTE)
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
  STORAGE(
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "YANGTK"
  PARTITION BY LIST ("TABLESPACE_NAME")
 (PARTITION "P1"  VALUES ('SYSAUX', 'SYSTEM')
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
  STORAGE(INITIAL 81920 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "YANGTK" NOCOMPRESS ,
 PARTITION "P2"  VALUES ('YANGTK')
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
  STORAGE(INITIAL 81920 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "YANGTK" NOCOMPRESS ,
 PARTITION "P4"  VALUES (DEFAULT)
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
  STORAGE(INITIAL 81920 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "YANGTK" NOCOMPRESS ) ;
 
CREATE TABLE "YANGTK"."T_LOG"
   (    "NAME" VARCHAR2(30 BYTE),
        "VALUE" NUMBER
   ) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 81920 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "YANGTK" ;
 
CREATE TABLE "YANGTK"."T_RECORD"
   (    "STR" VARCHAR2(30 BYTE),
        "TIME" DATE
   ) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 81920 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "YANGTK" ;
 
.
.
.
-- new object type path: SCHEMA_EXPORT/TABLE/INDEX/INDEX
CREATE INDEX "YANGTK"."IND_DOUBLE_NAME" ON "YANGTK"."T_DOUBLE_IND" ("NAME")
  PCTFREE 10 INITRANS 2 MAXTRANS 255
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "YANGTK" PARALLEL 1 ;

  ALTER INDEX "YANGTK"."IND_DOUBLE_NAME" NOPARALLEL;
 
CREATE INDEX "YANGTK"."IND_DOUBLE_TYPE" ON "YANGTK"."T_DOUBLE_IND" ("TYPE")
  PCTFREE 10 INITRANS 2 MAXTRANS 255
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "YANGTK" PARALLEL 1 ;

  ALTER INDEX "YANGTK"."IND_DOUBLE_TYPE" NOPARALLEL;
.
.
.

透過指定INDEXTABLE,使得SQLFILE獲取的DDL僅包括建表和索引的語句。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-671886/,如需轉載,請註明出處,否則將追究法律責任。

相關文章