使用expdp导出数据

使用expdp导出数据


Data Pump是服务端工具,只能在服务器上使用。这与exp工具不同。
Data Pump有以下些优点:

1.PARALLEL 并行

2.START_JOB 可控制job进行import作业

3.ATTACH

4.NETWORK_LINK 可以直接通过网络dblink导入到备库

5.REMAP_DATAFILE 转换数据文件的名字

6.REMAP_TABLESPACE  转换数据所在表空间的名字

7.INCLUDE and EXCLUDE 过滤要导入或不导入的数据

8.可使用交互命令监控expdp和impdp作业过程

9.ESTIMATE_ONLY 空间的估计而不实际导出数据

10.VERSION data pump的版本可兼容的

 

用户需要有EXP_FULL_DATABASE或IMP_FULL_DATABASE权限

 

 

使用expdp进行导出:

5种模式:

全库模式(full export)

用户模式(schema)

表模式(table)

表空间模式(tablespace)

传输表空间模式(transportable tablespace)

 

网络需要考虑的(Network Considerations)

1.通过@tnsnames连接字符串导出远程的数据库,directory使用源数据库创建的,生成的文件存放在服务端。

expdp hr/hr@inst1 DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp TABLES=employees

2.通过database link导出远程的数据库到本地(创建directory及授权,然后expdp)

 

导出操作中的过滤选项:

数据过滤:

QUERY 和SAMPLE

元数据(对象定义等)过滤:

EXCLUDE 和INCLUDE

 

1、创建DIRECTORY

create directory dir_dp as '/oradata/expdp';

2、授权

Grant read,write on directory dir_dp to yeyj;

 

参数:

ATTACH

重新登录到后台进行的job操作。

如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:

Expdp hr/hr ATTACH=hr.export_job

例:

impdp ggs/ggs@oramview network_link=oracl schemas=HZ logfile=imp_tmp1.log

退出界面后可以重新登录进去

SQL> select job_name from DBA_DATAPUMP_JOBS;

JOB_NAME

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

SYS_IMPORT_SCHEMA_01

impdp ggs/ggs attach=SYS_IMPORT_SCHEMA_01

 

COMPRESSION

Default: METADATA_ONLY

可选:METADATA_ONLY /  NONE

导出的时候会对元数据进行压缩

 

CONTENT

Default: ALL

可选:CONTENT={ALL | DATA_ONLY | METADATA_ONLY}

ALL:将导出对象定义及其所有数据

DATA_ONLY:只导出对象数据

METADATA_ONLY:只导出对象定义  (相当于export里的ROWS=N)

 

DIRECTORY

Default: DATA_PUMP_DIR

指定转储文件和日志文件所在的目录,目录对象是使用CREATE DIRECTORY语句建立的对象

建立目录:

CREATE DIRECTORY dump as '/home/oracle/expdp/';

查询创建了那些子目录:

SELECT * FROM dba_directories;

 

DUMPFILE

用于指定转储文件的名称,默认名称为expdat.dmp

DUMPFILE=[directory_object:]file_name [, ...]

Directory_object用于指定目录对象名,file_name用于指定转储文件名。

需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象

如果指定[directory_object:],会以该DIRECTORY位置为准。

expdp hr/hr SCHEMAS=hr DIRECTORY=dpump_dir1 DUMPFILE=dpump_dir2:exp1.dmp,exp2%U.dmp PARALLEL=3(dmp文件会放在dpump_dir2目录下)

 

ENCRYPTION_PASSWORD

Default: none

ENCRYPTION_PASSWORD = password

给导出的dmp文件中的行数据加密

 

ESTIMATE

Default: BLOCKS

ESTIMATE={BLOCKS | STATISTICS}

指定估算被导出表所占用磁盘空间的方法(bytes)

设置为BLOCKS时,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间,

设置为STATISTICS时,根据最近统计值估算对象占用空间

限制:当数据库包含压缩表时,ESTIMATE=BLOCKS得出的结果会不准确,此时建议使用ESTIMATE=STATISTICS

 

ESTIMATE_ONLY

Default: n

ESTIMATE_ONLY={y | n}

指定是否只估算导出作业所占用的磁盘空间

expdp hr/hr ESTIMATE_ONLY=y NOLOGFILE=y

 

EXCLUDE

Default: none

指定执行操作时释放要排除对象类型或相关对象

EXCLUDE=object_type[:name_clause] [, ...]

object_type用于指定要排除的对象类型

name_clause用于指定要排除的具体对象

举例:EXCLUDE=INDEX:"LIKE 'EMP%'"   排除所有的以emp开头的索引

可指定多个EXCLUDE语句,参考include

EXCLUDE和INCLUDE不能同时使用

 

FILESIZE

Default: 0 (unlimited)

FILESIZE=integer[B | K | M | G]

指定导出文件的最大尺寸

限制:指定的最小的size需要是Data Pump block size的10倍,即:4K*10

 

FLASHBACK_SCN

Default: none

指定导出到特定SCN时刻的表数据

FLASHBACK_SCN=scn_value

当使用NETWORK_LINK,SCN来源于源数据库

例:expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=hr_scn.dmp FLASHBACK_SCN=384632

 

FLASHBACK_TIME

Default: none

指定导出到特定时间的表数据

FLASHBACK_TIME="TO_TIMESTAMP(time-value)"

FLASHBACK_TIME和FLASHBACK_SCN不能共用。

例:

expdp hr/hr PARFILE=flashback.par

flashback.par:

DIRECTORY=dpump_dir1

DUMPFILE=hr_time.dmp

FLASHBACK_TIME="TO_TIMESTAMP('25-08-2003 14:35:00', 'DD-MM-YYYY HH24:MI:SS')"

 

FULL

Default: n

指定是否进行全库导出

FULL={y | n}

需要有EXP_FULL_DATABASE权限

 

HELP

Default: N

HELP = {y | n}

显示帮助信息

expdp HELP = y

 

INCLUDE

Default: none

指定导出时要包含的对象类型及相关对象

object_type[:name_clause] [, ...]

参数可查询DATABASE_EXPORT_OBJECTS, SCHEMA_EXPORT_OBJECTS, 和 TABLE_EXPORT_OBJECTS

sys下的对象不会被导出。

例:

hr.par:

SCHEMAS=HR

DUMPFILE=expinclude.dmp

DIRECTORY=dpump_dir1

LOGFILE=expinclude.log

INCLUDE=TABLE:"IN ('EMPLOYEES', 'DEPARTMENTS')"

INCLUDE=PROCEDURE

INCLUDE=INDEX:"LIKE 'EMP%'"

expdp hr/hr INCLUDE=TABLE DUMPFILE=dpump_dir1:exp_inc.dmp NOLOGFILE=y

 

JOB_NAME

Default: system-generated name of the form SYS_EXPORT_<mode>_NN  (SYS_XXX)

指定要导出作用的名称

JOB_NAME=jobname_string

可以通过DBA_DATAPUMP_JOBS视图来查看expdp的job_name,用于expdp的attach参数

 

LOGFILE

Default: export.log

指定导出日志文件文件的名称

LOGFILE=[directory_object:]file_name

只有当指定NOLOGFILE=y时,logfile才不会被创建。

例:expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp LOGFILE=hr_export.log

 

NETWORK_LINK

Default: none

指定数据库链名,如果要将远程数据库对象导出到本地例程的转储文件中,必须设置该选项

NETWORK_LINK=source_database_link

从dblink连接到远程数据库进行操作dba_db_links

create database link test connect to ad1 identified by ad1 using 'yeyj11g';

例:

expdp hr/hr DIRECTORY=dpump_dir1 NETWORK_LINK=source_database_link

  DUMPFILE=network_export.dmp LOGFILE=network_export.log

 

NOLOGFILE

Default: n

指定是否记录日志(禁止生成导出日志文件),默认为记录,即:NOLOGFILE=n

NOLOGFILE={y | n}

 

PARALLEL

Default: 1

指定执行导出操作的并行进程个数,默认值为1,必须小于或等于dump文件个数

例如:

expdp hr/hr DIRECTORY=dpump_dir1 LOGFILE=parallel_export.log

JOB_NAME=par4_job DUMPFILE=par_exp%u.dmp PARALLEL=4

 

PARFILE

Default: none

指定导出参数文件的名称

PARFILE=[directory_path]file_name

例如hr.par内容:

SCHEMAS=HR

DUMPFILE=exp.dmp

DIRECTORY=dpump_dir1

LOGFILE=exp.log

 

QUERY

Default: none

指定过滤导出数据的where条件

QUERY = [schema.][table_name:] query_clause

例:QUERY=employees:'"WHERE department_id > 10 AND salary > 10000"'

不得与以下子句同时使用:

CONTENT=METADATA_ONLY

ESTIMATE_ONLY

TRANSPORT_TABLESPACES

 

SAMPLE

Default: None

SAMPLE=[[schema_name.]table_name:]sample_percent

例:SAMPLE="HR"."EMPLOYEES":50

指50%的表HR.EMPLOYEES会被导出。

expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=sample.dmp SAMPLE=70

 

SCHEMAS

Default: current user's schema

用于指定执行方案模式导出,默认为当前用户方案

SCHEMAS=schema_name [, ...]

例:

expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=expdat.dmp SCHEMAS=hr,sh,oe

 

STATUS

Default: 0

指定显示导出作用进程的详细状态,默认值为0

例:

expdp hr/hr DIRECTORY=dpump_dir1 SCHEMAS=hr,sh STATUS=300

expdp会每隔300秒界面上显示导出的状态。

 

TABLES

Default: none

指定表模式导出

TABLES=[schema_name.]table_name[:partition_name] [, ...]

Schema_name用于指定方案名,table_name用于指定导出的表名,partition_name用于指定要导出的分区名.

限制:

分区表(table partitions)不支持使用NETWORK_LINK进行导出

 

TABLESPACES

Default: none

指定要导出表空间列表

TABLESPACES=tablespace_name [, ...]

例:

expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=tbs.dmp TABLESPACES=tbs_4, tbs_5, tbs_6

 

TRANSPORT_FULL_CHECK

Default: n

该选项用于指定被传输表空间和未传输表空间关联关系的检查方式,默认为N.

当设置为Y时,导出作用会检查表空间直接的完整关联关系,如果表空间所在表空间或其索引所在的表空间只有一个表空间被搬移,将显示错误信息.当设置为N时, 导出作用只检查单端依赖,如果搬移索引所在表空间,但未搬移表所在表空间,将显示出错信息,如果搬移表所在表空间,未搬移索引所在表空间,则不会显示错误信息

TRANSPORT_FULL_CHECK={y | n}

 

TRANSPORT_TABLESPACES

Default: none

指定表空间模式导出元数据

限制:导出job不能停止后再运行;并发(parallelism)只能为1

例:expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=tts.dmp TRANSPORT_TABLESPACES=tbs_1 TRANSPORT_FULL_CHECK=y LOGFILE=tts.log

 

VERSION

Default: COMPATIBLE

被导出对象的数据库版本,默认值为COMPATIBLE

VERSION={COMPATIBLE | LATEST | version_string}

为COMPATIBLE时,会根据初始化参数COMPATIBLE生成对象元数据;为LATEST时,会根据数据库的实际版本生成对象元数据.version_string用于指定数据库版本字符串

 

========================================================================================================

expdp和export工具相比除了速度上有了大幅度的提高外还有个更大的好处是交互式界面,可以更为自由方便

交互式界面

1.从连接界面Ctrl+C

2.使用ATTACH子句连接进入job

交互式命令:

ADD_FILE

ADD_FILE=[directory_object]file_name [,...]

文件名可以包括替代变量%U

根据FILESIZE来自动控制

Export> ADD_FILE=hr2.dmp, dpump_dir2:hr3.dmp

 

CONTINUE_CLIENT

从交互式界面进入到登录模式

Export> CONTINUE_CLIENT

 

EXIT_CLIENT

离开当前交互式界面。对expdp状态可以从log日志或者查询USER_DATAPUMP_JOBS或V$SESSION_LONGOPS视图

 

FILESIZE

FILESIZE=number

参见expdp命令FILESIZE

 

HELP

交互式界面的帮助信息

 

KILL_JOB

会杀死当前的job,同时离开expdp界面。job不能再重新开始,dmp文件会被自动删除,但log日志仍保留

 

PARALLEL

参见expdp命令PARALLEL

 

START_JOB

开始当前attach连接的job,一般在stop_job后使用

 

STOP_JOB

STOP_JOB[=IMMEDIATE]

 

STATUS

STATUS[=integer]

参见expdp命令STATUS

 

expdp导出的流程图解

exp初始(ExpInit)

使用expdp导出数据
exp开始步骤(ExpStart)

使用expdp导出数据
exp导出模式设定(ExpModes)

使用expdp导出数据
exp导出选项(ExpOpts)

使用expdp导出数据
exp导出文件相关的选项(ExpFileOpts)
使用expdp导出数据
exp交互式界面的相关选项(CTRL+C)(ExpDynOpts)
使用expdp导出数据

根据引用\[2\]和引用\[3\]的内容,expdp导出时间数据的方法是通过在expdp命令中使用query参数来指定时间范围。例如,可以使用类似以下的命令来导出某个时间段的数据expdp 用户名/密码 directory=导出目录 dumpfile=导出文件名 tables=表名 query="表名:'where 时间列 > to_date('起始日期','yyyy-mm-dd') and 时间列 < to_date('结束日期','yyyy-mm-dd')'" 其中,用户名/密码是数据库用户的登录凭证,导出目录是导出文件的存放路径,导出文件名是导出数据文件的名称,表名是要导出的表名,起始日期和结束日期是要导出时间段的起始日期和结束日期。 请注意,以上命令中的时间列是指表中的一个日期类型的列,需要根据实际情况进行替换。另外,还可以根据需要导出多个表的数据,只需在tables参数中指定多个表名,并在query参数中为每个表指定相应的时间条件。 希望以上信息对您有所帮助。 #### 引用[.reference_title] - *1* [Oracle-expdp导出时间变长问题分析](https://blog.csdn.net/sinat_36757755/article/details/128355412)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [使用query条件进行expdp导出](https://blog.csdn.net/weixin_35891787/article/details/116911442)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值