expdp和impdp是oracle数据库之间移动数据的工具。expdp和impdp只能在数据库服务端使用,不能在客户端使用。本文简单总结了expdp和impdp常用的命令,详细信息参考oracle官方文档Utilities。
导出导入(EXPDP和IMPDP)的作用
https://www.cnblogs.com/Jingkunliu/p/13705626.html
10g开始引入了最新的数据泵(Data Dump)技术,使DBA或开发人员可以将数据库元数据(对象定义)和数据快速移动到另一个oracle数据库中.
数据泵导出导入(EXPDP和IMPDP)的作用
1,实现逻辑备份和逻辑恢复.
2,在数据库用户之间移动对象.
3,在数据库之间移动对象
4,实现表空间搬移.
数据泵导出导入与传统导出导入的区别
相对于exp/imp方式,数据泵(expdp/impdp)更快,且能导出空表;相对于rman、dg等方式,数据泵操作更加简单。此外,在数据量不大、可停库的情况下,数据泵方式是可以保证数据的完整性的。
EXP和IMP是客户段工具程序,它们既可以在可以客户端使用,也可以在服务端使用.
EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用
IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件.
对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出
数据泵导出包括导出表,导出方案,导出表空间,导出数据库4种方式.
impdp
impdp参数详解
--查看impdp帮助命令
[oracle@top132:/home/oracle]$ impdp help=y
Import: Release 11.2.0.4.0 - Production on Mon Mar 11 09:19:10 2024
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
The Data Pump Import utility provides a mechanism for transferring data objects
between Oracle databases. The utility is invoked with the following command:
Example: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
You can control how Import runs by entering the 'impdp' command followed
by various parameters. To specify parameters, you use keywords:
Format: impdp KEYWORD=value or KEYWORD=(value1,value2,...,valueN)
Example: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
USERID must be the first parameter on the command line.
------------------------------------------------------------------------------
The available keywords and their descriptions follow. Default values are listed within square brackets.
ATTACH 附加
Attach to an existing job.
For example, ATTACH=job_name.
CLUSTER
Utilize cluster resources and distribute workers across the Oracle RAC.
Valid keyword values are: [Y] and N.
CONTENT
Specifies data to load.
Valid keywords are: [ALL], DATA_ONLY and METADATA_ONLY.
DATA_OPTIONS
Data layer option flags.
Valid keywords are: SKIP_CONSTRAINT_ERRORS.
DIRECTORY
Directory object to be used for dump, log and SQL files.
DUMPFILE
List of dump files to import from [expdat.dmp].
For example, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.
ENCRYPTION_PASSWORD
Password key for accessing encrypted data within a dump file.用于访问转储文件中加密数据的密码密钥。
Not valid for network import jobs.
ESTIMATE
Calculate job estimates. 计算作业估计值
Valid keywords are: [BLOCKS] and STATISTICS.
EXCLUDE
Exclude specific object types.
For example, EXCLUDE=SCHEMA:"='HR'".
FLASHBACK_SCN
SCN used to reset session snapshot.
FLASHBACK_TIME
Time used to find the closest corresponding SCN value.用于查找最接近的相应 SCN 值的时间。
FULL
Import everything from source [Y].
HELP
Display help messages [N].
INCLUDE
Include specific object types.
For example, INCLUDE=TABLE_DATA.
JOB_NAME
Name of import job to create.
LOGFILE
Log file name [import.log].
NETWORK_LINK
Name of remote database link to the source system.指向源系统的远程数据库链接的名称。
NOLOGFILE
Do not write log file [N].
PARALLEL
Change the number of active workers for current job.
PARFILE
Specify parameter file.
PARTITION_OPTIONS
Specify how partitions should be transformed. 转化
Valid keywords are: DEPARTITION, MERGE and [NONE].
QUERY
Predicate clause used to import a subset of a table.
For example, QUERY=employees:"WHERE department_id > 10".
REMAP_DATA
Specify a data conversion function.
For example, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO.
REMAP_DATAFILE
Redefine data file references in all DDL statements.
REMAP_SCHEMA
Objects from one schema are loaded into another schema.
REMAP_TABLE
Table names are remapped to another table.
For example, REMAP_TABLE=HR.EMPLOYEES:EMPS.
REMAP_TABLESPACE
Tablespace objects are remapped to another tablespace.
REUSE_DATAFILES
Tablespace will be initialized if it already exists [N].
SCHEMAS
List of schemas to import.
SERVICE_NAME 关联
Name of an active Service and associated resource group to constrain Oracle RAC resources.
SKIP_UNUSABLE_INDEXES
Skip indexes that were set to the Index Unusable state.
SOURCE_EDITION
Edition to be used for extracting metadata.
SQLFILE
Write all the SQL DDL to a specified file.
STATUS
Frequency (secs) job status is to be monitored where
the default [0] will show new status when available.
STREAMS_CONFIGURATION
Enable the loading of Streams metadata
TABLE_EXISTS_ACTION
Action to take if imported object already exists.
Valid keywords are: APPEND, REPLACE, [SKIP] and TRUNCATE.
TABLES
Identifies a list of tables to import.
For example, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995.
TABLESPACES
Identifies a list of tablespaces to import.
TARGET_EDITION
Edition to be used for loading metadata.
TRANSFORM
Metadata transform to apply to applicable objects.
Valid keywords are: OID, PCTSPACE, SEGMENT_ATTRIBUTES and STORAGE.
TRANSPORTABLE
Options for choosing transportable data movement.
Valid keywords are: ALWAYS and [NEVER].
Only valid in NETWORK_LINK mode import operations.
TRANSPORT_DATAFILES
List of data files to be imported by transportable mode.
TRANSPORT_FULL_CHECK
Verify storage segments of all tables [N].
TRANSPORT_TABLESPACES
List of tablespaces from which metadata will be loaded.
Only valid in NETWORK_LINK mode import operations.
VERSION
Version of objects to import.
Valid keywords are: [COMPATIBLE], LATEST or any valid database version.
Only valid for NETWORK_LINK and SQLFILE.
------------------------------------------------------------------------------
The following commands are valid while in interactive mode.
Note: abbreviations are allowed.
CONTINUE_CLIENT
Return to logging mode. Job will be restarted if idle.
EXIT_CLIENT
Quit client session and leave job running.
HELP
Summarize interactive commands.汇总交互式命令。
KILL_JOB
Detach and delete job.
PARALLEL
Change the number of active workers for current job.
START_JOB
Start or resume current job. 恢复
Valid keywords are: SKIP_CURRENT.
STATUS
Frequency (secs) job status is to be monitored where
the default [0] will show new status when available.
STOP_JOB
Orderly shutdown of job execution and exits the client.
Valid keywords are: IMMEDIATE.table_exists_action
使用imp进行数据导入时,若表已经存在,要先drop掉表,再进行导入。
而使用impdp完成数据库导入时,若表已经存在,有四种的处理方式:
1) skip:默认操作
2) replace:先drop表,然后创建表,最后插入数据
3) append:在原来数据的基础上增加数据
4) truncate:先truncate,然后再插入数据
实验预备
构建测试数据
--创建用户
create user tuser identified by oracle;
grant connect,resource to tuser;
--构建测试数据
creata table tab1(id int);
insert into tab1 values(10);
insert into tab1 values(11);
insert into tab1 values(12);
insert into tab1 values(13);
insert into tab1 values(14);
commit;
select * from tab1;
SQL> select * from tab1;
ID
----------
10
11
12
13
14
sys用户创建目录对象,并授权
sqlplus / as sysdba
create directory dir_dump as '/home/oracle';
grant read, write on directory dir_dump to tuser;导出数据
expdp tuser/tuser directory=dir_dump dumpfile=expdp.dmp schemas=tuser;插入数据
sqlplus tuser/tuser
insert into tab1 values(15);
commit;
select * from tab1;
SQL> select * from tab1;
ID
----------
10
11
12
13
14
15导入数据
table_exists_action=replace
--导入
impdp tuser/tuser directory=dir_dump dumpfile=expdp.dmp schemas=tuser table_exists_action=replace;
--查看数据
SQL> select * from tab1;
ID
----------
10
11
12
13
14
无id=15的数据table_exists_action=skip
--导入数据
[oracle@11g-db ~]$ impdp tuser/tuser directory=dir_dump dumpfile=expdp.dmp schemas=tuser
Import: Release 11.2.0.4.0 - Production on Sun Jan 14 11:45:37 2024
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Master table "TUSER"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
Starting "TUSER"."SYS_IMPORT_SCHEMA_01": tuser/******** directory=dir_dump dumpfile=expdp.dmp schemas=tuser
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
ORA-39151: Table "TUSER"."TAB1" exists. All dependent metadata and data will be skipped due to table_exists_action of skip
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Job "TUSER"."SYS_IMPORT_SCHEMA_01" completed with 1 error(s) at Sun Jan 14 11:45:38 2024 elapsed 0 00:00:01注意:即使表结构发生了变化,只要表名不发生变化。导入这个表时,就会被跳过。
参考链接:https://www.cnblogs.com/hllnj2008/p/5105718.html
impdp功能
impdp示例
确保数据库软件安装正确,字符集、数据库版本等与源库一致,尽量此类因素引起的失败
和导出一样,先要建立DIRECTORY对象.并且需要为数据库用户授予使用DIRECTORY对象权限.
--创建导入目录
CREATE DIRECTORY dump_dir AS '/home/oracle/dump_dir';
GRANT READ, WIRTE ON DIRECTORY dump_dir TO public;
注意:这个目录赋权限给oracle用户
--将dmp文件copy到对应的目录
--导入的4个场景
1, “full=y”,全量导入数据库
Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp
Impdp system/manage DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=scott.dept,scott.emp REMAP_SCHEMA=SCOTT:SYSTEM
第一种方法表示将DEPT和EMP表导入到SCOTT方案中,第二种方法表示将DEPT和EMP表导入的SYSTEM方案中.
注意,如果要将表导入到其他方案中,必须指定REMAP SCHEMA选项.用dba账户导出的dmp文件必须要用dba账户导入。
2.同名用户导入,从用户A导入到用户A
impdp A/passwd schemas=A directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
3.从A用户中把表table1和table2导入到B用户中
impdp B/passwd tables=A.table1,A.table2 remap_schema=A:B directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
4.将表空间TBS01、TBS02、TBS03导入到表空间A_TBS,将用户B的数据导入到A,并生成新的oid防止冲突
impdp A/passwdremap_tablespace=TBS01:A_TBS,TBS02:A_TBS,TBS03:A_TBS remap_schema=B:A FULL=Y transform=oid:n
directory=data_dir dumpfile=expdp.dmp logfile=impdp.log
5,导入方案
Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=scott
Impdp system/manager DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=scott REMAP_SCHEMA=scott:system
6,导入表空间
Impdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=user01
7.追加数据
impdp sys/passwd directory=data_dir dumpfile=expdp.dmp schemas=system table_exists_action=replace logfile=impdp.log;
--table_exists_action:导入对象已存在时执行的操作。有效关键字:SKIP,APPEND,REPLACE和TRUNCATE导入时指定不导入某张表
expdp oracle/oracle directory=testexpdp dumpfile=zzw_temp3.dmp exclude=TABLE
:"IN('TEST2')"
这是可以的
expdp oracle/oracle directory=testexpdp dumpfile=zzw_temp3.dmp exclude=TABLE
:"IN ('TEST2','ZZW_TEMP2')"
但这是不行的,当排除多个表的时候不行,报ORA-39071: EXCLUDE 值的格式错误
需要增加转义字符,应该这样
expdp oracle/oracle directory=testexpdp dumpfile=zzw_temp3.dmp exclude=TAB
LE:"IN ('TEST2','ZZW_TEMP2')"
虽然expdp -help指明了exclude的语法:exclude=table:emp
但实际上会出错。
正确的语法是exclude=table:"in ('EMP')"
或者
INCLUDE=TABLE:"LIKE 'TAB%'"来仅导出那些名称以 TAB 开头的表。类似地,也可以使用结构INCLUDE=TABLE:"NOT LIKE 'TAB%'"来排除所有名称以 TAB 开头的表。
归纳总结:
1.表名要大写
2.排除多表的时候要注意使用转义字符
3.排除表的时候,使用了exclude参数,就不要再使用schemas参数,如果有了schemas参数将对应的用户方案的全部对象导出导入时将指定表更名
remap_table、remap_tablespace多组对象转换的话,每组对象之间用逗号隔开
tables多张表时,每张表之间用逗号隔开
- Remap_tablespace如果需要转换多个表空间,如A1转换成B1,A2转换成B1,有如下两种方式
remap_tablespace=A1:B1 remap_tablespace=A2:B1
remap_tablespace= A1:B1, A2:B1
- Remap_table如果需要转换多个表名
同一个schema的情况下,如A1转换成B1,A2转换成B1,有如下两种方式
remap_table=A1:B1 remap_table=A2:B1
remap_table= A1:B1, A2:B1
impdp关于tables和remap_tables的一些注意事项
1. expdp时写上tables=(表)表示导出某些表;impdp时不写tables条件表示导入dumpfile中的所有表,impdp时写tables=(表)条件表示只导入指定的表,当然如果tables=(dumpfile中的所有表)也就是导入dumpfile中的所有表;且如果用system执行impdp时则tables=(表)时必须加上schema.表名,否则会默认是为system下面的表,会导致报错
remap_table如果在同一个schema下进行,虽然不要加remap_schema,但是remap_table冒号前面的表名一定要带schema信息,冒号后面的表名一定不能带schema信息
remap_table如果在不同schema的情况下进行,如user1.A1转换成user2.B1,user1.A2转换成user2.B1,必须加remap_schema,且remap_table冒号前面的表名一定要带schema信息,冒号后面的表名一定不能带schema信息
有如下两种方式
remap_table= user1.A1:B1 remap_table= user1.A2:B1 remap_schema= user1: user2
remap_table= user1. A1:B1, user1.A2:B1 remap_schema= user1: user2跨schema只导出导入表并重命名的标准方式如下
expdp时tables写上schema.表名并用逗号隔开
impdp时需要remap_schema, tables可写可不写,remap_table冒号前面的表名加上schema,冒号后面的表名不加schema
--导出
expdp system/123456 tables=t01.test101,t01.test102,t01.test103 directory=DATA_PUMP_DIR dumpfile=t011.dbf
--导入
impdp system/123456 remap_schema=t01:t_101 tables=t01.test101,t01.test102,t01.test103 remap_table=t01.test101:test10101,t01.test102:test102,t01.test103:test103 directory=DATA_PUMP_DIR dumpfile=t011.dbf案例
A服务器导出用户 ESB 的一张分区表 ESB_LOG
expdp system/123456 directory=DATA_PUMP_DIR dumpfile=ESB_LOG.dmp logfile=ESB_LOG.log tables=ESB.ESB_LOG
导入到B服务器的part用户,变成 ESB_LOG (没有加 tables=ESB .ESB_LOG ,其实加不加无所谓,反正 ESB_LOG.dm就是只有一张表 ESB .ESB_LOG )
impdp system/123456 directory=DATA_PUMP_DIR dumpfile=ESB_LOG.dmp logfile=ESB_LOG.log remap_schema=ESB:part remap_tablespace=ESB07:part,ESB08:part,ESB09:part,ESB10:part,ESB11:part,ESB12:part,ESB:part
导入到B服务器的part用户,表名改为 ESB_LOG2 (加了 tables=ESB .ESB_LOG,其实加不加无所谓,反正ESB_LOG.dm就是只有一张表ESB.ESB_LOG )
impdp system/123456 directory=DATA_PUMP_DIR dumpfile=ESB_LOG.dmp logfile=ESB_LOG2.log tables=ESB .ESB_LOG remap_schema=ESB:part remap_tablespace=ESB07:part,ESB08:part,ESB09:part,ESB10:part,ESB11:part,ESB12:part,ESB:part remap_table=ESB .ESB _LOG:ESB _LOG2rac上impdp
rac上impdp泵入原则
1、temp表空间,ASM足够的话,不够就扩
2、undo表空间,ASM足够的话,不够就扩(别同时大表泵入太多,表和索引都会用到undo)
3、外键约束提前删除,随后生效
4、归档能关就关,随后开启(1不用担心满的问题2加速一点)
5、网速太慢的两个网段,低于1M/S的话,用腿替代网络拷贝
6、cluster=n默认加上吧,无论data_only还是metadata方式,避免出现文件找不到的情况
7、大表泵入,首先会进度1%----99%;temp会不断增加,然后temp不变,99%进度不变,undo会不断变大,直到不变,泵入基本就尾声了
8、时刻监控undo,temp,tablespace的剩余情况,不够立即调整
9、泵出是注意是否有rman全库备份,尽量避开,本来100G,20分钟的事情,遇到rman,可能会3小时不止
10、泵出最好借用asm空间,速度快10倍;3小时变18分钟,往出cp文件,rm文件可以使用asmcmd cp 的方式,cp,rm,gzip一条龙,py可以试试
11、先metadata,再data是比较好的方式,索引删比较大的即可,不用全范围封杀,太费神了,大表、大索引排序,找>5G的即可
12、文件太大,注意使用filesize分块,linux里的split分块方式和aix之间互不支持,合并起来解压失败
13、单大表导入,即使写了 parallel=4参数,oracle可能也会无视,只启用worker一个,个人猜测,direct 方式,单线程
14、泵入多文件多表, parallel=4是默认值,2,8估计都没这个快,不信的试试,我验证过很多系统,多次大型数据切换,结果回帖贴上
15,索引个人观点,unique的最好保留
16、附送金牌监控代码
select t.status, sum(t.blocks) * 8 / 1024 || 'M'
from dba_undo_extents t
group by t.status;问题处理
导入卡住不动
expdp
导出注意事项
- 检查数据库版本(用于决定导出时生成为哪个版本的dmp头文件) select version from v$instance; 也可以用sqlplus -v 查看。
- 检查字符集是否一致(字符集不一致,不能导入) select userenv('language') from dual;
- 检查数据量及磁盘空间(决定采取什么样的方式导出及导入)
expdp和exp的区别
在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP:
1、EXP和IMP是客户端工具程序,它们既可以在可以客户端使用,也可以在服务端使用。
2、EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用,客户端只能用来连接服务器启动导入导出操作,导出文件只存储在服务端。
3、IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。
4、EXPDP/IMPDP在备份和恢复时间上要比EXP/IMP有着优势,而且文件要小的多。
5、使用EXPDP/IMPDP管理更加灵活。支持并行;可中断;可以修改元数据文件名字、表空间名;支持元数据导入导出;估算导出数据所需空间;指定导入数据库版本等。
6、使用EXPDP工具时,其转储文件只能被存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录。因此,使用EXPDP工具时,必须首先建立DIRECTORY对象.并且需要为数据库用户授予使用DIRECTORY对象权限。
expdp使用方法
--操作系统上创建目录
su - root
mkdir -p /oradata/restore
chown -R oracle:oinstall /oradata/restore
--数据库创建目录
create directory dir_restore as '/oradata/restore';
grant read,write on directory dir_restore to ENTSERVICE;
--查看
col DIRECTORY_PATH for a50
set lin 1000
select OWNER,DIRECTORY_NAME,DIRECTORY_PATH from dba_directories;
--导出
expdp 用户名/密码@数据库实例名 directory=导出目录 dumpfile=导出的文件名.dmp logfile=导出的日志名.log注意:
1、导数的数据库用户需要拥有对directory_object的读写权限。
2、操作系统中需要已经存在directory_object指定的路径。
3、oracle用户拥有对directory_object指定路径的读写权限。
4、system用户导出用户,会将创建用户和授予系统权限的元数据也导出,普通用户不能导出这些元数据。
5、@sjtbk 监听需启动
6、export ORACLE_SID=sjtbk 无@sjtbk 监听不需启动
目录路径必须是已经存在的目录,如果目录不存在,也会显示目录常见成功(语句不会自动去常见目录),在执行expdp时候会报以下错误:
ORA-39002: 操作无效
ORA-39070: 无法打开日志文件。
expdp常用命令
1、按用户导
#单用户
expdp GISDATA/GISDATA@localhost/orcl directory=dmp dumpfile=expdp.dmp logfile=expdlog.log schemas=GISDATA;
#多用户
expdp GISDATA/GISDATA@localhost/orcl directory=dmp dumpfile=expdp.dmp logfile=expdlog.log schemas=(SYXK,BSWW,ICPSPNET,TOPICIS);
2、并行进程parallel
expdp GISDATA/GISDATA@localhost/orcl directory=dmp dumpfile=expdp.dmp logfile=expdlog.log parallel=40 job_name=expdpjob
3、按表名导
导出1张表
expdp system/oracle directory=my_dir dumpfile=expdp.dmp logfile=expdp.log tables=scott.emp
导出多张表
expdp GISDATA/GISDATA@localhost/orcl directory=dmp dumpfile=expdp.dmp logfile=expdlog.log TABLES=test1,test2;
expdp system/oracle directory=my_dir dumpfile=expdp.dmp logfile=expdp.log tables=\(scott.emp,scott.dept\)
4、按查询条件导
expdp GISDATA/GISDATA@localhost/orcl directory=dmp dumpfile=expdp.dmp logfile=expdlog.log tables=test query='WHERE id<20';
5、按表空间导
expdp GISDATA/GISDATA directory=dmp dumpfile=expdp.dmp logfile=expdlog.log TABLESPACES=GIDDATA,YWDATA;
6、导整个数据库
expdp GISDATA/GISDATA directory=dmp dumpfile=expdp.dmp logfile=expdlog.log FULL=y ;
7.通过parfile导出
--编写cat exp_mes_new0525.par
userid="/ as sysdba"
DIRECTORY=DATA_PUMP_DIR
dumpfile=expdp_tab_20210525_all_%U.dmp
logfile=expdp_tab_20210525_all.log
tables=userA.tabA
,userA.tabB
,userA.tabC
,userA.tabD
CONTENT=all
query=
userA.tabC:"where mdate>to_number(to_char(SYSDATE - 90, 'yyyymmdd'))",
userA.tabD:"where mdate >= to_number(to_char(SYSDATE - 90, 'yyyymmdd'))",
COMPRESSION=ALL
exclude=STATISTICS
PARALLEL=10
--导出
nohup expdp parfile=exp_tab_0525.par &expdp参数详解
--查看帮助信息
expdp help=y
--各个参数解释
Format: expdp KEYWORD=value or KEYWORD=(value1,value2,...,valueN)
Example: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
or TABLES=(T1:P1,T1:P2), if T1 is partitioned tableATTACH 附加
Attach to an existing job.
For example, ATTACH=job_name.
作用
当使用ctrl+C 退出交互式命令时,可使用attach参数重新进入到交互模式
语法
ATTACH=[schema_name.]job_name
Schema_name用户名,job_name任务名
示例
Expdp scott/tiger ATTACH=scott.export_jobCLUSTER
Utilize cluster resources and distribute workers across the Oracle RAC.
翻译:利用群集资源并在 Oracle RAC 中分配工作线程。
Valid keyword values are: [Y] and N.
COMPRESSION
Reduce the size of a dump file.
Valid keyword values are: ALL, DATA_ONLY, [METADATA_ONLY] and NONE.
CONTENT
Specifies data to unload.
Valid keyword values are: [ALL], DATA_ONLY and METADATA_ONLY.
作用
限制了导出的内容,包括三个级别:全部/数据/元数据(结构)
语法
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
ALL -- 导出所有数据,包括元数据及数据
DATA_ONLY -- 只导出数据
METADATA_ONLY -- 只包含元数据,就是创建语句
示例
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump CONTENT=METADATA_ONLYDATA_OPTIONS
Data layer option flags.
Valid keyword values are: XML_CLOBS.
DIRECTORY
Directory object to be used for dump and log files.
作用
此路径可以理解为实际绝对路径在oracle数据库里的别名,是导出文件的存储位置
路径的创建: create directory &DIRECTORY_NAME AS '&PATH';
查看已存在路径: select * from dba_directories;
语法
directory=[directory_name]
示例
Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=lhb.dumpDUMPFILE
Specify list of destination dump file names [expdat.dmp].
For example, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.
作用
此参数用户命名导出文件,默认是 expdat.dmp. 文件的存储位置如果在文件名前没有指定directory,则会默认存储到directory参数指定的路径下。
语法
DUMPFILE=[dump_dir:]file_name
示例
Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=dump_dir1:a.dmpENCRYPTION
Encrypt part or all of a dump file.
Valid keyword values are: ALL, DATA_ONLY, ENCRYPTED_COLUMNS_ONLY, METADATA_ONLY and NONE.
ENCRYPTION_ALGORITHM
Specify how encryption should be done.
Valid keyword values are: [AES128], AES192 and AES256.
ENCRYPTION_MODE
Method of generating encryption key.
Valid keyword values are: DUAL, PASSWORD and [TRANSPARENT].
ENCRYPTION_PASSWORD
Password key for creating encrypted data within a dump file.
ESTIMATE估计
Calculate job estimates.计算作业估算
Valid keyword values are: [BLOCKS] and STATISTICS.
在使用Expdp进行导出时,Expdp需要计算导出数据大小容量,Oracle可以通过两种方式进行容量估算,一种是通过数据块(blocks)数量、一种是通过统计信息中记录的内容(statistics)估算.
语法结构:
EXTIMATE={BLOCKS | STATISTICS}
示例:
Expdp scott/tiger TABLES=emp ESTIMATE=STATISTICS DIRECTORY=dump_dir DUMPFILE=halberd.dump
Expdp scott/tiger TABLES=emp ESTIMATE=BLOCKS DIRECTORY=dump_dir DUMPFILE=halberd.dumpESTIMATE_ONLY
Calculate job estimates without performing the export.
作用
此参数用于统计导出的数据量大小及统计过程耗时长短。
语法
EXTIMATE_ONLY={Y | N}
示例
Expdp scott/tiger directory=dump_dir schemas=halberd ESTIMATE_ONLY=y NOLOGFILE=yEXCLUDE
Exclude specific object types.
For example, EXCLUDE=SCHEMA:"='HR'".
作用
此参数用于排除不需要导出的内容,如进行全库导出,但是不需要导出用户scott,此时需要在exlude后先指定排除类型为schema,再指定具体的schema。具体使用方法见include参数. EXCLUDE与include的使用方法是一样的
语法
EXCLUDE=object_type[:name_clause] [,object_type[:name_clause] ]
name_clause
"='object_name'"
"in ('object_name'[,'object_name',....])"
"in (select_clause) "
Object_type对象类型,如:table,view,procedure,schema等
name_clause指定名称的语句,如果不具体指定是哪个对象,则此类所有对象都不导出, select 语句中表名不要加用户名。用户名,通过schemas 指定。
示例
expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=halberd.dup EXCLUDE=VIEW
expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=halberd.dup EXCLUDE=TABLE:\" IN\(\'TEMP\',\'GRADE\'\)\"
EXCLUDE=TABLE:"='APPLICATION_AUDIT'"FILESIZE
Specify the size of each dump file in units of bytes.
作用
用于指定单个导出的数据文件的最大值,与%U一起使用。比如,需要导出100G的数据,文件全部存储到一个文件内,在文件传输时,会耗费大量的时间,此时就可以使用这个参数,限制每个文件的大小,在传输导出文件时,就可以多个文件同时传送,大大的节省了文件传输时间。提高了工作的效率。
语法
FILESIZE=integer[B | K | M | G]
示例
Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=halberd%U.dup FILESIZE=20gFLASHBACK_SCN
SCN used to reset session snapshot.
作用
基于undo 及scn号(时间点)进行的数据导出。使用此参数设置会进行flashback query的功能,查询到对应指定的SCN时的数据,然后进行导出。只要UNDO不被覆盖,无论数据库是否重启,都可以进行导出. flashback_time参数与flashback_scn的原理是一样的。在导出的数据里保持数据的一致性是很有必要的。你两个参数不可以同时使用。
语法
FLASHBACK_SCN=scn_value
FLASHBACK_TIME 有多种设定值的格式:
flashback_time=to_timestamp (localtimestamp)
flashback_time=to_timestamp_tz (systimestamp)
flashback_time="TO_TIMESTAMP (""25-08-2003 14:35:00"", ""DD-MM-YYYY HH24:MI:SS"")" 使用此格式可能会遇到ORA-39150错误。
示例
Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=halberd.dmp FLASHBACK_SCN= 12345567789
Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=halberd.dmp FLASHBACK_TIME= to_timestamp (localtimestamp)FLASHBACK_TIME
Time used to find the closest corresponding SCN value.
和FLASHBACK_SCN用法一样
FULL
Export entire database [N].
作用
指定导出内容为全库导出。这里需要特别注意的是,expdp 不能导出sys用户对象。即使是全库导出也不包含sys用户。
语法
FULL={Y | N}
示例
expdp \'\/ as sysdba\' directory=dump_dir full=yHELP
Display Help messages [N].
作用
当我们对参数的意义不了解时,或者忘记参数怎么写时,就可以用这个参数,来寻求帮助,实际上和操作系统里的man命令是一样的。
示例
impdp -help
expdp help=yINCLUDE
Include specific object types.
For example, INCLUDE=TABLE_DATA.
作用
限制范围,指定自己想要的内容,比如要导出某个用户的某张表。
语法
INCLUDE = object_type[:name_clause],object_type[:name_clause]
示例
impdp dbmon/dbmon_123 directory=dump_dir network_link=zjzwb2 SCHEMAS=AICBS remap_schema=aicbs:aicbsb include=table:\"IN\(SELECT TABLE_NAME FROM dbmon.TABLES_TOBE_MASKED\)\" LOGFILE=zjzwb.log transform=segment_attributes:n
PARFILE中设置:
INCLUDE=table:"in(select table_name from dba_tables where owner='AA')"
INCLUDE=TABLE:"IN('TEST1','TEST2')"
SHELL环境设置:
INCLUDE=TABLE:\"IN\(SELECT TABLE_NAME FROM DBA_TABLES WHERE OWNER=\'AA\'\)\"
INCLUDE=TABLE:\"IN\(\'TEST1\',\'TEST2\'\)\"
说明
当导入命令在目标端发起时,select 子句所涉及的表要在源端,并且dblink 所使用的用户有访问的权限。JOB_NAME
Name of export job to create.
作用
指定任务名,如果不指定的话,系统会默认自动命名:SYS_EXPORT_mode_nn
语法
JOB_NAME=&JOB_NAME
其他
查看有哪些expdp/impdp job,可以通过dba_datapump_jobs查看,其实你通过v$session.action也可以查看到
大多与attach参数一起使用,重新进行expdp交互命令时使用。LOGFILE
Specify log file name [export.log].
作用: 指定导出日志名称。默认是:expdp.log
语法
LOGFILE=[DIRECTORY:]file_name , 如果参数值里没有指定路径,会默认使用directory参数值所指向的路径。
directory : 存储路径,
file_name :日志文件名
示例
expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=halberd.dmp logfile=halberd.log
impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=halberd.dmp logfile=halberd.logNETWORK_LINK
Name of remote database link to the source system.
作用: 指定导出日志名称。默认是:expdp.log
语法
LOGFILE=[DIRECTORY:]file_name , 如果参数值里没有指定路径,会默认使用directory参数值所指向的路径。
directory : 存储路径,
file_name :日志文件名
示例
expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=halberd.dmp logfile=halberd.log
impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=halberd.dmp logfile=halberd.logNOLOGFILE
Do not write log file [N].
作用
不写导入导出日志,这个笔者是灰常灰常滴不建议设置为“Y”滴。
语法
nologfile=[y|n]PARALLEL
Change the number of active workers for current job.
作用
指定导出/导入时使用多少个并发,默认是1.
语法
parallel=[digit]
示例
expdp \'\/ as sysdba\' directory=dump_dir schemas=halberd dumpfile=halberd%U.dmp parallel=8 logfile=halberd.logPARFILE
Specify parameter file name.
作用
参数文件,这个参数文件里,存储着一些参数的设置。比如上面说过的,parallel,network_link,等。导出时,可以使用此参数,expdp/impdp会自动读取文件中的参数设置,进行操作。
语法
PARFILE=[directory_path] file_name
示例
expdp \'\/ as sysdba\' parfile=halberd.par
cat halberd.par
directory=dump_dir
logfile=test.log
schemas=test
query="where create_date > last_day(add_months(sysdate,-1)) and create_date <= last_day(sysdate)"
transform=segment_attributes:n
network_link=to_aibcrm
table_exists_action=append
impdp \'\/ as sysdba\' parfile=test.parQUERY
Predicate clause used to export a subset of a table.
For example, QUERY=employees:"WHERE department_id > 10".
作用
此参数指定在导入导出时的限制条件,和SQL语句中的 "where" 语句是一样儿一样儿滴
语法
QUERY=([schema.] [table_name:] query_clause, [schema.] [table_name:] query_clause,……)
CONTENT=METADATA_ONLY, EXTIMATE_ONLY=Y,TRANSPORT_TABLESPACES.
示例
Expdp scott/tiger directory=dump dumpfiel=a.dmp Tables=emp query="WHERE deptno<>20"REMAP_DATA
Specify a data conversion function.
For example, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO.
REUSE_DUMPFILES
Overwrite destination dump file if it exists [N].
SAMPLE
Percentage of data to be exported.
SCHEMAS
List of schemas to export [login schema].
作用
指定导出/导入哪个用户
语法
schemas=schema_name[,schemaname,....]
示例
expdp \'\/ as sysdba\' directory=dump_dir schemas=halberdREMAP_SCHEMA
只在导入时使用
作用
当把用户A的对象导入到用户(其实应该叫schema)B时,使用此参数,可实现要求
格式
remap_schema=schema1: schema2
示例
impdp \'\/ as sysdba\' directory=dump_dir dumpfile=halberd.dmp logfile=halberd.log remap_schema=scott:halberdSERVICE_NAME
Name of an active Service and associated resource group to constrain Oracle RAC resources.
SOURCE_EDITION
Edition to be used for extracting metadata.
STATUS
Frequency (secs) job status is to be monitored where
the default [0] will show new status when available.
TABLES
Identifies a list of tables to export.
For example, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995.
作用
指定导出哪些表。
格式
TABLES=[schema.]table_name[:partition_name][,[schema.]table_name[:partition_name]]
说明
Schema 表的所有者;table_name表名;partition_name分区名.可以同时导出不同用户的不同的表
示例
expdp \'\/ as sysdba\' directory=dump_dir tables=emp.emp_no,emp.deptTABLESPACES
Identifies a list of tablespaces to export.
作用
指定导出/导入哪个表空间。
语法
tablespaces=tablespace_name[,tablespace_name,....]
示例
expdp \'\/ as sysdba\' directory=dump_dir tablespace=userREMAP_TABLESPACE
作用
只有在导入时使用,用于进行数据的表空间迁移。 把前一个表空间中的对象导入到冒号后面的表空间
用法
remap_tablespace=a:b
说明
a: 数据所在的原表空间; b: 目标表空间
示例
impdp \'\/ as sysdba\' directory=dump_dir tables=emp.dept remap_tablespace=user:user1TRANSPORTABLE
Specify whether transportable method can be used.
Valid keyword values are: ALWAYS and [NEVER].
TRANSPORT_FULL_CHECK
Verify storage segments of all tables [N].
检查需要进行传输的表空间与其他不需要传输的表空间之间的信赖关系,默认为N。当设置为“Y”时,会对表空间之间的信赖关系进行检查,如A(索引表空间)信赖于B(表数据表空间),那么传输A而不传输B,则会出错,相反则不会报错。
TRANSPORT_TABLESPACES
List of tablespaces from which metadata will be unloaded.
VERSION
Version of objects to export.
Valid keyword values are: [COMPATIBLE], LATEST or any valid database version.
------------------------------------------------------------------------------
The following commands are valid while in interactive mode.
Note: abbreviations are allowed.
ADD_FILE
Add dumpfile to dumpfile set.
CONTINUE_CLIENT
Return to logging mode. Job will be restarted if idle.
EXIT_CLIENT
Quit client session and leave job running.
FILESIZE
Default filesize (bytes) for subsequent ADD_FILE commands.
HELP
Summarize interactive commands.
KILL_JOB
Detach and delete job.
PARALLEL
Change the number of active workers for current job.
REUSE_DUMPFILES
Overwrite destination dump file if it exists [N].
START_JOB
Start or resume current job.
Valid keyword values are: SKIP_CURRENT.
STATUS
Frequency (secs) job status is to be monitored where
the default [0] will show new status when available.
STOP_JOB
Orderly shutdown of job execution and exits the client.
Valid keyword values are: IMMEDIATE.
导入用户密码含特殊字符
用sys用户来做expdp、impdp的工作
sys的密码无特殊符号
--语法
expdp \'sys/manager1 AS SYSDBA\'
--示例
expdp \'sys/oracle AS SYSDBA\' schemas=system directory=DATA_PUMP_DIR dumpfile=system_%U.dmp parallel=2 job_name=jobexpdpimpdp consistent=ysys的密码有特殊符号
--语法
expdp \'sys/"manager.1" AS SYSDBA\'
--示例
expdp \'sys/"oracle.1" AS SYSDBA\' schemas=system directory=DATA_PUMP_DIR dumpfile=system_%U.dmp parallel=2 job_name=jobexpdpimpdp consistent=y



