数据泵 EXPDP 导出工具的使用

本文详细介绍了Oracle数据库中EXPDP数据泵工具的使用方法。包括数据泵的体系结构、优点、程序接口及模式等内容,并通过实例演示了如何进行表、用户、表空间以及整个数据库的导出。

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

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

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

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

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

一、数据泵的体系结构

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

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

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

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

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

数据泵进程

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

Windows系统而言,数据泵进程为expdp.exeimpdp.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用于指定要排除的具体对象.excludeinclude不能同时使用

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 归档日志

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值