数据泵 EXPDP 导出工具的使用

系统 1775 0

--=================================

-- 数据泵 EXPDP 导出工具的使用

--=================================

 

    对于 Oracle 数据库之间的导入导出,可以使用 Oracle 提供的导入导出工具 EXP / IMP 来实现。 EXP / IMP Oracle 早期提供的数据 导入导出工具。在 Oracle 10g 中,提供了高速导入导出数据泵 IMPDP EXPDP ,本文主要讲述 EXPDP 的用法。

    关于 IMPDP 的用法,请参照:数据泵 IMPDP 导入工具的使用

   

一、数据泵的体系结构

    数据泵是一个基于服务器端的高速导入导出工具,通过 dbms_datapump 包来调用

    提供 expdp impdp ,以及基于 Web 页面来实现导入导出

    提供两种数据数据方式方式:直接路径、外部表

    可以定制数据泵作业,以及从作业中分离和重新附加到作业

    服务器端的数据泵是直接访问数据文件与 SGA ,不必通过会话进行访问

    数据泵进程

        Unix 系统而言,数据泵进程为 expdp impdp

        Windows 系统而言,数据泵进程为 expdp . exe impdp . exe

    启动一个 DataPump 作业,至少会启动下列两个进程,一个 Data Pump Master ( DMnn ) ,一个或多个工作进程 ( DWnn ) ,主进程控制工作进程

        如果多个 DataPump 作业同时运行,那么每个作业都具有自己的 DMnn 进程以及自己的 DWnn 进程

        如果设置了并行技术,则每个 DWnn 进程可以使用两个或多个并行执行服务器 ( 名称为 Pnnn )

    DataPump 生成下列三种形式的文件

        SQL 文件:描述指定作业所包含对象的若干 DDL 语句

        转储文件:即包含数据和元数据的文件

        日志文件:用于记录导出时的相关信息

    目录

        用于设置导入导出文件所在或存放的位置   create directory dump_scott as /home/oracle/dump/scott' ;     

        可以通过 dba_directories 来查看系统中已创建的目录 select * from dba_directories ;

        对于创建的目录必须授予用户读写目录的权限     grant read , write on directory dump_scott to scott ;

       

   

二、数据泵的优点

    Oracel 10g 中提供的数据泵,较之 i 时代的导入导出工具 ( imp , exp ) ,除了能实现 imp / exp 的功能之外,提供了更好的性能, 下面是数据泵的优点

        为数据及数据对象提供更细微级别的选择性 ( 使用 exclude , include , content 参数 )

        可以设定数据库版本号 ( 主要是用于兼容老版本的数据库系统 )

        并行执行

        预估导出作业所需要的磁盘空间 ( 使用 estimate_only 参数 )

        支持分布式环境中通过数据库链接实现导入导出

        支持导入时重新映射功能 ( 即将对象导入到新的目标数据文件,架构,表空间等 )

        支持元数据压缩及数据采样

       

三、数据泵程序接口及模式

    数据泵导入导出接口如下

        命令行接口

        参数文件

        交互式命令行接口

        数据库控制台

       

    数据泵导入导出模式

        整个数据库

        架构

       

        表空间

        传输表空间

       

四、导出工具 expdp

 

1. 它是操作系统下一个可执行的文件存放目录 / ORACLE_HOME / bin

    [oracle@oradb bin]$ ls - lh expdp

    - rwxr - x --x 1 oracle oinstall 174K Sep 13 20:01 expdp

   

   expdp 导出工具将数据库中数据备份压缩成一个二进制系统文件 . 可以在不同 OS 间迁移

  

   expdb 支持三种模式:

       a . 表模式:   导出用户所有表或者指定的表

       b . 用户模式:导出用户所有对象以及对象中的数据

       c . 导出表空间:导出数据库中特定的表空间

       d . 整个数据库:   导出数据库中所有对象

 

    使用 expdp - ? 可以查看 expdp 命令的用法并启动交互进程,也可使用 expdp - help 来查看更详细的帮助信息

        [oracle@oradb bin]$ expdp - ?

        abort_step               Undocumented feature

        access_method            Data Access Method - default is Automatic

        attach           Attach to existing job - no default ) ''

        compression              Content to export : default is METADATA_ONLY

        content          Content to export : default is ALL

        directory                Default directory specification

        dumpfile                 dumpfile names : format is ( file1 ,...) default is expdat . dmp

        encryption_password               Encryption key to be used

        estimate                 Calculate size estimate : default is BLOCKS

        estimate_only            Only estimate the length of the job : default is N

        exclude          Export exclude option : no default

        filesize                  file size : the size of export dump files

        flashback_time           database time to be used for flashback export : no default

        flashback_scn            system change number to be used for flashback export : no default

        full             indicates a full mode export

        include          export include option : no default

        ip_address               IP Address for PLSQL debugger

        help             help : display description on export parameters , default is N

        job_name                 Job Name : no default ) ''

        keep_master              keep_master : Retain job table upon completion

        log_entry                logentry

        logfile          log export messages to specified file

        metrics          Enable / disable object metrics reporting

        mp_enable                Enable / disable multi - processing for current session

        network_link             Network mode export

        nologfile                No export log file created

        package_load             Specify how to load PL / SQL objects

        parallel                 Degree of Parallelism : default is 1

        parallel_threshold               Degree of DML Parallelism

        parfile          parameter file : name of file that contains parameter specifications

        query            query used to select a subset of rows for a table

        sample           Specify percentage of data to be sampled

        schemas          schemas to export : format is '(schema1, .., schemaN)'

        silent           silent : display information , default is NONE

        status           Interval between status updates

        tables           Tables to export : format is '(table1, table2, ..., tableN)'

        tablespaces              tablespaces to transport / recover : format is '(ts1,..., tsN)'

        trace            Trace option : enable sql_trace and timed_stat , default is 0

        transport_full_check             TTS perform test for objects in recovery set : default is N

        transport_tablespaces            Transportable tablespace option : default is N

        tts_closure_check                Enable / disable transportable containment check : def is Y

        userid           user / password to connect to oracle : no default

        version          Job version : Compatible is the default

 

        Export : Release 10.2.0.1.0 - Production on Monday , 20 September , 2010 14 : 22 : 56

 

        Copyright ( c ) 2003 , 2005 , Oracle .   All rights reserved .

 

        Username :      

  

2. 导出工具 expdp 非交互式命令行方式的例子

    a . 基于表模式的导出

    SQL > create directory dump_scott as '/home/oracle/dump/scott' ;

 

    Directory created .

 

    SQL > select * from dba_directories ;

 

    OWNER                           DIRECTORY_NAME                  DIRECTORY_PATH

    ------------------------------ ------------------------------ --------------------------------------------------

    SYS                             DUMP_SCOTT                      / home / oracle / dump / scott

 

    SQL > grant read , write on directory dump_scott to scott ;

 

    Grant succeeded .

 

    SQL > !

    [oracle@oradb /]$ mkdir / home / oracle / dump

    [oracle@oradb /]$ mkdir / home / oracle / dump / scott

    [oracle@oradb ~]$ expdp scott / tiger directory = dump_scott dumpfile = dumptab . dmp /

    > logfile = scott . log tables = dept , emp

 

    Export : Release 10.2.0.1.0 - Production on Monday , 20 September , 2010 14 : 55 : 23

 

    Copyright ( c ) 2003 , 2005 , Oracle .   All rights reserved .

 

    Connected to : Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

    With the Partitioning , OLAP and Data Mining options

    Starting "SCOTT" . "SYS_EXPORT_TABLE_01" :   scott /********/ directory = dump_scott dumpfile = dumptab . dmp logfile = scott . log tables = dept , emp

    Estimate in progress using BLOCKS method ...

    Processing object type TABLE_EXPORT / TABLE / TABLE_DATA

    Total estimation using BLOCKS method : 128 KB

    Processing object type TABLE_EXPORT / TABLE / TABLE

    Processing object type TABLE_EXPORT / TABLE / INDEX / INDEX

    Processing object type TABLE_EXPORT / TABLE / CONSTRAINT / CONSTRAINT

    Processing object type TABLE_EXPORT / TABLE / INDEX / STATISTICS / INDEX_STATISTICS

    Processing object type TABLE_EXPORT / TABLE / CONSTRAINT / REF_CONSTRAINT

    Processing object type TABLE_EXPORT / TABLE / STATISTICS / TABLE_STATISTICS

    . . exported "SCOTT" . "DEPT"                               5.656 KB        4 rows

    . . exported "SCOTT" . "EMP"                                7.820 KB       14 rows

    Master table "SCOTT" . "SYS_EXPORT_TABLE_01" successfully loaded / unloaded

    ******************************************************************************

    Dump file set for SCOTT . SYS_EXPORT_TABLE_01 is:

      / home / oracle / dump / scott / dumptab . dmp

    Job "SCOTT" . "SYS_EXPORT_TABLE_01" successfully completed at 14 : 55 : 56

 

    -- 后台中 DMnn,DWnn 进程为启动 DataPump 是产生的进程

    [oracle@oradb /]$ ps - ef | grep ora_d

    oracle     3445      1   0 14 : 19 ?         00 : 00 : 00 ora_dbw0_orcl

    oracle     3461      1   0 14 : 19 ?         00 : 00 : 00 ora_d000_orcl

 

    [oracle@oradb ~]$ ls - lh / home / oracle / dump / scott

    total 132K

    - rw - r ----- 1 oracle oinstall 124K Sep 20 14:55 dumptab.dmp

    - rw - r --r-- 1 oracle oinstall 1.4K Sep 20 14:55 scott.log

 

    b . 基于用户模式导出

    [oracle@oradb /]$ expdp scott / tiger directory = dump_scott dumpfile = dumpscott . dmp schemas = scott

 

    Export : Release 10.2.0.1.0 - Production on Monday , 20 September , 2010 15 : 08 : 55

 

    Copyright ( c ) 2003 , 2005 , Oracle .   All rights reserved .

 

    Connected to : Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

    With the Partitioning , OLAP and Data Mining options

    Starting "SCOTT" . "SYS_EXPORT_SCHEMA_01" :   scott /********/ directory = dump_scott dumpfile = dumpscott . dmp schemas = scott

    Estimate in progress using BLOCKS method ...

    Processing object type SCHEMA_EXPORT / TABLE / TABLE_DATA

    Total estimation using BLOCKS method : 192 KB

    Processing object type SCHEMA_EXPORT / PRE_SCHEMA / PROCACT_SCHEMA

    Processing object type SCHEMA_EXPORT / TABLE / TABLE

    Processing object type SCHEMA_EXPORT / TABLE / INDEX / INDEX

    Processing object type SCHEMA_EXPORT / TABLE / CONSTRAINT / CONSTRAINT

    Processing object type SCHEMA_EXPORT / TABLE / INDEX / STATISTICS / INDEX_STATISTICS

    Processing object type SCHEMA_EXPORT / TABLE / COMMENT

    Processing object type SCHEMA_EXPORT / TABLE / CONSTRAINT / REF_CONSTRAINT

    Processing object type SCHEMA_EXPORT / TABLE / STATISTICS / TABLE_STATISTICS

    . . exported "SCOTT" . "DEPT"                               5.656 KB        4 rows

    . . exported "SCOTT" . "EMP"                                7.820 KB       14 rows

    . . exported "SCOTT" . "SALGRADE"                           5.585 KB        5 rows

    . . exported "SCOTT" . "BONUS"                                  0 KB        0 rows

    Master table "SCOTT" . "SYS_EXPORT_SCHEMA_01" successfully loaded / unloaded

    ******************************************************************************

    Dump file set for SCOTT . SYS_EXPORT_SCHEMA_01 is:

      / home / oracle / dump / scott / dumpscott . dmp

    Job "SCOTT" . "SYS_EXPORT_SCHEMA_01" successfully completed at 15 : 09 : 23

 

    c . 基于表空间导出

    [oracle@oradb /]$ expdp scott / tiger directory = dump_scott dumpfile = users1 . dmp , user2 . dmp /

    > compression tablespaces = users

 

    Export : Release 10.2.0.1.0 - Production on Monday , 20 September , 2010 15 : 17 : 35

 

    Copyright ( c ) 2003 , 2005 , Oracle .   All rights reserved .

 

    Connected to : Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

    With the Partitioning , OLAP and Data Mining options

    Starting "SCOTT" . "SYS_EXPORT_TABLESPACE_01" :   scott /********/ directory = dump_scott dumpfile = users1 . dmp , user2 . dmp compression tablespaces = users

    Estimate in progress using BLOCKS method ...

    Processing object type TABLE_EXPORT / TABLE / TABLE_DATA

    Total estimation using BLOCKS method : 192 KB

    Processing object type TABLE_EXPORT / TABLE / TABLE

    Processing object type TABLE_EXPORT / TABLE / INDEX / INDEX

    Processing object type TABLE_EXPORT / TABLE / CONSTRAINT / CONSTRAINT

    Processing object type TABLE_EXPORT / TABLE / INDEX / STATISTICS / INDEX_STATISTICS

    Processing object type TABLE_EXPORT / TABLE / COMMENT

    Processing object type TABLE_EXPORT / TABLE / CONSTRAINT / REF_CONSTRAINT

    Processing object type TABLE_EXPORT / TABLE / STATISTICS / TABLE_STATISTICS

    . . exported "SCOTT" . "DEPT"                               5.656 KB        4 rows

    . . exported "SCOTT" . "EMP"                                7.820 KB       14 rows

    . . exported "SCOTT" . "SALGRADE"                           5.585 KB        5 rows

    . . exported "SCOTT" . "BONUS"                                  0 KB        0 rows

    Master table "SCOTT" . "SYS_EXPORT_TABLESPACE_01" successfully loaded / unloaded

    ******************************************************************************

    Dump file set for SCOTT . SYS_EXPORT_TABLESPACE_01 is:

      / home / oracle / dump / scott / users1 . dmp

    Job "SCOTT" . "SYS_EXPORT_TABLESPACE_01" successfully completed at 15 : 17 : 51   

 

    [oracle@oradb /]$ ls - lh / home / oracle / dump / scott

    total 524K

    - rw - r ----- 1 oracle oinstall 4.0K Sep 20 15:17 compression.dmp

    - rw - r ----- 1 oracle oinstall 224K Sep 20 15:09 dumpscott.dmp

    - rw - r ----- 1 oracle oinstall 124K Sep 20 14:55 dumptab.dmp

    - rw - r --r-- 1 oracle oinstall 1.6K Sep 20 15:17 export.log

    - rw - r --r-- 1 oracle oinstall 1.4K Sep 20 14:55 scott.log

    - rw - r ----- 1 oracle oinstall 4.0K Sep 20 15:17 user2.dmp

    - rw - r ----- 1 oracle oinstall 148K Sep 20 15:17 users1.dmp   

   

    d . 导出整个数据库,且使用并行导出方式

    [oracle@oradb /]$ expdp scott / tiger directory = dump_scott dumpfile = full20_ % u . dmp parallel = 4 full = y

 

    Export : Release 10.2.0.1.0 - Production on Monday , 20 September , 2010 15 : 24 : 02

 

    Copyright ( c ) 2003 , 2005 , Oracle .   All rights reserved .

 

    Connected to : Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

    With the Partitioning , OLAP and Data Mining options

    ORA - 31631 : privileges are required

    ORA - 39161 : Full database jobs require privileges

 

    [oracle@oradb /]$ sqlplus / nolog

 

    SQL * Plus : Release 10.2.0.1.0 - Production on Mon Sep 20 15 : 24 : 16 2010

 

    Copyright ( c ) 1982 , 2005 , Oracle .   All rights reserved .

 

    SQL > conn / as sysdba

    Connected .

    Grant succeeded .

 

    SQL > !  

    [oracle@oradb /]$ expdp scott / tiger directory = dump_scott dumpfile = full20_ % u . dmp parallel = 6 full = y

    -- 中间过程省略

    [oracle@oradb dump]$ ls - lh ./ scott / fu *

    - rw - r ----- 1 oracle oinstall   19M Sep 20 15:36 ./scott/full20_01.dmp

    - rw - r ----- 1 oracle oinstall   22M Sep 20 15:34 ./scott/full20_02.dmp

    - rw - r ----- 1 oracle oinstall   18M Sep 20 15:36 ./scott/full20_03.dmp

    - rw - r ----- 1 oracle oinstall   15M Sep 20 15:36 ./scott/full20_04.dmp

    - rw - r ----- 1 oracle oinstall 5.4M Sep 20 15:36 ./scott/full20_05.dmp

    - rw - r ----- 1 oracle oinstall 196K Sep 20 15:33 ./scott/full20_06.dmp

 

 

    [oracle@oradb dump]$ ps - ef | grep ora_d

    oracle     3445      1   0 14 : 19 ?         00 : 00 : 01 ora_dbw0_orcl

    oracle     3461      1   0 14 : 19 ?         00 : 00 : 00 ora_d000_orcl

    oracle    23443      1   4 15 : 32 ?         00 : 00 : 01 ora_dm00_orcl

    oracle    23494      1 23 15 : 32 ?         00 : 00 : 08 ora_dw01_orcl

    oracle    23673      1 11 15 : 33 ?         00 : 00 : 02 ora_dw02_orcl

    oracle    23675      1 16 15 : 33 ?         00 : 00 : 03 ora_dw03_orcl

    oracle    23677      1   8 15 : 33 ?         00 : 00 : 01 ora_dw04_orcl

    oracle    23679      1   5 15 : 33 ?         00 : 00 : 00 ora_dw05_orcl

    oracle    23681      1   2 15 : 33 ?         00 : 00 : 00 ora_dw06_orcl

    oracle    23696   2416   0 15 : 33 pts / 1     00 : 00 : 00 grep ora_d

 

 

五、数据泵的监控

    1. 查询 dba_directories 获得所创建的目录

    2. 可以查询 dba_datapump_jobs 来查看数据泵作业的运行情况,也可以利用 ATTACH 重新连接上还在进行的 JOB

      每个 datapump 可以通过 job_name 参数来指定作业名称,如未指定,则系统使用默认的作业名称 , 如下面的视图中为 SYS_EXPORT_FULL_01

      通过 v$session_longops 也可以查看长时间运行的 datapump job 的具体内容

     

        SQL > select owner_name owr , job_name jbn , operation ope , job_mode jbm , state , degree ,

          2   attached_sessions atts , datapump_sessions dats

          3   from dba_datapump_jobs ;

 

        OWR         JBN                   OPE                   JBM              STATE           DEGREE        ATTS        DATS

        ---------- -------------------- -------------------- --------------- ---------- ---------- ---------- ----------

        SCOTT       SYS_EXPORT_FULL_01    EXPORT                FULL             COMPLETING           2           1           2

 

 

        SQL > select sid , serial# , session_type

          2   from   v$session s , dba_datapump_sessions d

          3   where s . saddr = d . saddr ;

 

               SID     SERIAL# SESSION_TYPE

        ---------- ---------- --------------

               143          10 DBMS_DATAPUMP

               149          37 MASTER

                132           3 WORKER

               136           3 WORKER

               135           4 WORKER

               141           5 WORKER

               128           2 WORKER

               142           4 WORKER

   

    3. 监控数据泵的逻辑备份程度

        SELECT sid , serial# , context , sofar , totalwork ,

        ROUND ( sofar / totalwork * 100 , 2 ) "%_COMPLETE"

        FROM v$session_longops

        WHERE opname LIKE '%EXP%'

        AND totalwork != 0

        AND sofar <> totalwork ;

       

        SID SERIAL# CONTEXT SOFAR    TOTALWORK    % _COMPLETE

        130 33     0        54           70        77.14

   

六、 expdp 的常用参数

    1. content : 该选项用于指定要导出的内容 . 默认值为 ALL

        CONTENT ={ALL | DATA_ONLY | METADATA_ONLY}

 

        expdp scott / tiger   schemas = scott content =all

        expdp scott / tiger tables = emp content = data_only directory = dump_scott dumpfile = empdata . dmp ( 只导出对象数据 )

        expdp scott / tiger tables = emp content = metadata_only directory = dump_scott dumpfile = empmd . dmp ( 只有定义信息 )

 

    2.estimate : 指定估算被导出表所占用磁盘空间分方法 . 默认值是 blocks

 

        expdp scott / tiger directory = dump_scott dumpfile = dba_object . dmp tablespaces = users estimate = statistics

        expdp scott / tiger directory = dump_scott dumpfile = dba_object . dmp tablespaces = users estimate = blocks

 

    3.extimate_only : 指定是否只估算导出作业所占用的磁盘空间 , 默认值为 N

 

        expdp scott / tiger   schemas = scott estimate_only = y                

        设置为 Y , 导出作用只估算对象所占用的磁盘空间 , 而不会执行导出作业 ,

        N , 不仅估算对象所占用的磁盘空间 , 还会执行导出操作 .

 

    4.exclude : 该选项用于指定执行操作时释放要排除对象类型或相关对象

        exclude = view

        exclude = package

        exclude = index : "like 'EMP%'

        object_type 用于指定要排除的对象类型 ,name_expr 用于指定要排除的具体对象 .exclude include 不能同时使用

        expdp scott/tiger   schemas=scott   exclude=view dumpfile=a9.dmp

 

        include = object_type[:"name_expr"]

    5.filesize: 指定导出文件的最大尺寸 , 默认为 ,( 表示文件尺寸没有限制 )

       

    6.flashback_scn: 前提闪回功能开启

        expdp scott/tiger   tables=emp dumpfile=e2.dmp   flashback_scn=4284715

        如果闪回的时间点该对象结构发生变化,将报错(比如该对象没有创建或者 ddl 操作 )

 

    7.flashback_time :指定导出特定时间点的表数据

        expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_TIME="TO_TIMESTAMP ( - 08 - 2004 14 : 35 : 00’ , ’DD - MM - YYYY HH24 : MI : SS’ ) "

 

        windows 下:

        C:/>expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=a.dmp

        flashback_time=/"TO_TIMESTAMP ( '06-04-2010 11:24:26' , 'DD-MM-YYYY HH24:MI:SS' ) /"

 

    8.query 导出查询得到的结果集

        query=scott.emp :" where deptno = 30 and sal > 3500"

   

    9.sample 使用该参数进行对导出的数据进行采样

        sample="scott"."emp":20

        expdp scott/tiger directory=dump_scott dumpfile=sam.dmp sample=30

   

    10.dumpfile 指定导出时的文件名

        dumpfile=scott_tb.dmp

        dumpfile=scott_tb_%u.dmp    %u 用于扩展导出的文件名,固定长度为个字符,从开始递增,使用并行导出时建议指定该参数

       

七、更多参考

Oracle 备份

 

SPFILE 错误导致数据库无法启动

 

Oracle 用户、对象权限、系统权限

 

Oracle 角色、配置文件

 

  Oracle 联机重做日志文件(ONLINE LOG FILE)

 

  Oracle 控制文件(CONTROLFILE)

 

  Oracle 表空间与数据文件

 

Oracle 归档日志

 

 

数据泵 EXPDP 导出工具的使用


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论