1.介绍
Oracle数据泵(Oracle Data Pump) 可以实现数据的高速移动,数据泵是基于数据库服务端的,它运行在数据库内部,而不是一个独立运行的客户端应用程序。
在导出和导入数据和元数据时,expdp 和 impdp 实用程序会使用内置的DBMS_DATAPUMP和DBMS_METADATA 软件包。DBMS_DATAPUMP软件包可以在不同的数据库环境之间移动整个数据库或数据子集。DBMS_MATEDATA软件包可以导出和导入数据库对象的信息。 当启动数据泵导出和导入作业时,数据库服务器上就会初始化一个OS主进程。这个主进程的名称格式为 oradmNN。同时可查看视图dba_datapump_jobs。
2.使用
基础导出
create directory dp_dir as '/u02/dumpfile';
grant read,write on directory dp_dir to scott;
expdp scott/tiger directory=dp_dir tables=inv dumpfile=exp.dmp logfile=exp.log
exp system/manager file=E:/sampleDB.dmp log=dible_db.log full=y
基础导入
create directory dp_dir as '/u02/dumpfile';
grant read,write on directory dp_dir to scott;
impdp scott/tiger directory=dp_dir dumpfile=exp.dmp logfile=imp.log
imp system/manager file=bible_db log=dible_db.log full=y ignore=y
directory查看
select owner,directory_name,directory_path from dba_directories;
2.1.expdp/impdp命令常用参数
2.1.1.DIRECTORY 指定转储文件和日志文件所在的目录
DIRECTORY=directory_object
注意:目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS目录
2.1.2.DUMPFILE 指定转储文件的名称,默认名称为expdat.dmp
DUMPFILE=[directory_object:]file_name [,….]
注意:如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象
Expdp scott/tiger DIRECTORY=dump1 DUMPFILE=dump2:a.dmp
2.1.3.LOGFILE 指定导出日志文件文件的名称,默认名称为export.log
LOGFILE=[directory_object:]file_name
Directory_object用于指定目录对象名称,file_name用于指定导出日志文件名.如果不指定directory_object.导出作用会自动使用DIRECTORY的相应选项值.
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp logfile=a.log
2.1.4.FULL 指定数据库模式导出,默认为N
FULL={Y | N} 为Y时,标识执行数据库导出.
2.1.5.SCHEMAS该方案用于指定执行方案模式导出,默认为当前用户方案
expdp orcldev/oracle directory=abs dumpfile=exp_abs.dmp logfile=exp_abs.log schemas=abs
2.1.6.TABLES指定表模式导出
tables=justin:P110401,justin:P110402,justin:P110403,justin:P110404,justin:P110405,justin:P110406,justin:P110407,justin:P110408,justin:P110409
2.1.7.REMAP_SCHEMA一个用户的的数据迁移到另外一个用户
REMAP_SCHEMA=source_schema:target_schema
impdp orcldev/oracle DIRECTORY=dp_dir DUMPFILE=oracldev.dmp REMAP_SCHEMA=orcldev:orcltwo
imp userid=system/manager fromuser=username1 touser=username2 ignore=y file=expfile.dmp
2.1.8.REMAP_TABLESPACE 将源表空间的所有对象导入目标表空间
impdp system/orcl directory=dp_dir dumpfile=test_user.dmp remap_tablespace=JCMS24:JCMS
2.1.9.REMAP_TABLE 参数将源表数据映射到不同的目标表中
impdp system/oracle directory=IMP dumpfile=tb_2013.dbf
remap_table=user01.src_tb01:dest_tb01,user01.src_tb02:dest_tb02,user01.src_tb03:dest_tb03
注意:索引信息需要手工手工初始化
2.1.10.ESTIMATE_ONLY 估算导出作业所占用的磁盘空间,默认值为N
设置为Y时,导出作用只估算对象所占用的磁盘空间,而不会执行导出作业,为N时,不仅估算对象所占用的磁盘空间,还会执行导出操作.
2.1.11.ESTIMATE 指定估算被导出表所占用磁盘空间分方法.默认值是BLOCKS
ESTIMATE={BLOCKS | STATISTICS}
设置为BLOCKS时,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间,设置为STATISTICS时,根据最近统计值估算对象占用空间
Expdp scott/tiger TABLES=emp ESTIMATE=STATISTICS DIRECTORY=dump DUMPFILE=a.dump
2.1.12.FLASHBACK_SCN 指定导出特定SCN时刻的表数据
FLASHBACK_SCN=scn_value
Scn_value用于标识SCN值.FLASHBACK_SCN和FLASHBACK_TIME不能同时使用
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_SCN=358523
2.1.13.FLASHBACK_TIME 指定导出特定时间点的表数据
FLASHBACK_TIME=”TO_TIMESTAMP(time_value)”
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_TIME=“TO_TIMESTAMP(’25-08-2004 14:35:00’,’DD-MM-YYYY HH24:MI:SS’)”
建议使用parfile,否则需要转义
2.1.14.NETWORK_LINK
指定数据库链名,如果要将远程数据库对象导出到本地例程的转储文件中,必须设置该选项.
expdp gwm/gwm directory=dir_dp NETWORK_LINK=igisdb tables=p_street_area dumpfile=p_street_area.dmp logfile=p_street_area.log job_name=my_job
igisdb是目的数据库与源数据的链接名,
dir_dp是目的数据库上的目录
而如果直接用使用连接字符串(@fgisdb),expdp属于服务端工具,expdp生成的文件默认是存放在服务端的
2.1.15.PARALLEL 指定执行导出操作的并行进程个数,默认值为1
注:并行度设置不应该超过CPU数的2倍,如果cpu为2个,可将PARALLEL设为2,在导入时速度比PARALLEL为要快。而对于导出的文件,如果PARALLEL设为2,导出文件只有一个,导出速度提高不多,因为导出都是到同一个文件,会争抢资源。所以可以设置导出文件为两个,如下所示:
expdp gwm/gwm directory=dtest dumpfile=gwmfile1%U.dp,gwmfile2.dp parallel=4
2.1.16.PARFILE指定导出参数文件的名称
PARFILE=[directory_path] file_name
2.1.17.STATUS指定显示导出作用进程的详细状态,默认值为0
2.1.18.TABLESPACES/TABLESPACE
指定要导出表空间或表空间列表,需加参数transport_full_check=y进行自包含检查
导入时目标表空间需已存在,可以和TRANSPORT_datafileS组合使用
2.1.19.VERSION指定被导出对象的数据库版本,默认值为COMPATIBLE
VERSION={COMPATIBLE | LATEST | version_string}
为COMPATIBLE时,会根据初始化参数COMPATIBLE生成对象元数据;为LATEST时,会根据数据库的实际版本生成对象元数据.version_string用于指定数据库版本字符串.调用EXPDP
特别注意:如果后续要导入的数据库版本低,所有导出命令就需要在后面加一个version=指定版本。例如11g -> 10g,假设10g具体版本为10.2.0.1,那么就加一个版本的参数version=10.2.0.1
2.1.20.TABLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | FRPLACE }
当设置该选项为SKIP时,导入作业会跳过已存在表处理下一个对象;当设置为APPEND时,会追加数据,为TRUNCATE时,导入作业会截断表,然后为其追加新数据;当设置为REPLACE时,导入作业会删除已存在表,重建表病追加数据,注意,TRUNCATE选项不适用与簇表和NETWORK_LINK选项;
2.1.21.REMAP_DATAFILE
该选项用于将源数据文件名转变为目标数据文件名,在不同平台之间搬移表空间时可能需要该选项.
REMAP_DATAFIEL=source_datafie:target_datafile
2.1.22.CONTENT 该选项用于指定要导出的内容.默认值为ALL
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
当设置CONTENT为ALL 时,将导出对象定义及其所有数据.为DATA_ONLY时,只导出对象数据,为METADATA_ONLY时,只导出对象定义
2.1.23.EXCLUDE 选项用于指定执行操作时释放要排除对象类型或相关对象
EXCLUDE=object_type[:name_clause] [,….]
Object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象.EXCLUDE和INCLUDE不能同时使用
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dup EXCLUDE=VIEW
2.1.24.REUSE_DATAFILES【impdp】
该选项指定建立表空间时是否覆盖已存在的数据文件.默认为N REUSE_DATAFIELS={Y | N}
2.1.25.SKIP_UNUSABLE_INDEXES 【impdp】
指定导入是是否跳过不可使用的索引,默认为N
2.1.26.TRANSPORT_DATAFILES【impdp】
该选项用于指定搬移空间时要被导入到目标数据库的数据文件
TRANSPORT_DATAFILE=datafile_name
Datafile_name用于指定被复制到目标数据库的数据文件
Impdp system/manager DIRECTORY=dump DUMPFILE=tts.dmp TRANSPORT_DATAFILES=’/user01/data/tbs1.dbf