当前位置:网站首页>ORACLE进阶(六)ORACLE expdp/impdp详解
ORACLE进阶(六)ORACLE expdp/impdp详解
2022-07-07 14:23:00 【InfoQ】
一、ORACLE数据泵
ORCALE10G
- 支持并行处理导入、导出任务;
- 支持暂停和重启动导入、导出任务;
- 支持通过
Database Link
的方式导出或导入远端数据库中的对象;
- 支持在导入时通过
Remap_schema、Remap_datafile、Remap_tablespace
几个参数实现导入过程中自动修改对象属主、数据文件或数据所在表空间;
- 导入/导出时提供了非常细粒度的对象控制。通过
Include、Exclude
两个参数,甚至可以详细制定是否包含或不包含某个对象。
二、什么是Directory对象
Directory
Oracle10g
- 除了使用
network_link
参数意外,expdp
生成的文件都是在服务器上(Directory指定的位置)
2.1 如何调用
- 命令行方式最简单的调用,但是写的参数有限,建议使用参数文件的方式。
- 参数文件方式最常用的方式。通常需要先编写一个参数文件。指定导出时需要的各种参数。然后以如下方式调用。
expdp user/pwd parfile=xxx.par
expdp user/pwd parfile=xxx.par logfile=a.log
expdp user/pwd logfile=a.log parfile=xxx.par
- 交互方式
Data Pump
导入导出任务支持停止,重启等状态操作。如用户执行导入或者导出任务,执行了一半时,使用Crtl+C中断了任务(或其他原因导致的中断),此时任务并不是被取消,而是被转移到后台。可以再次使用expdp/impdp命令,附加attach参数的方式重新连接到中断的任务中,并选择后续的操作。 这就是交互方式。
2.2 什么是attach参数
Starting “BAM”.”SYS_EXPORT_SCHEMA_01″:bam/******** parfile=expdp_tbs.par
SYS_EXPORT_SCHEMA_01
三、操作模式
- 全库模式导入或者导出整个数据库,对应
impdp/expdp
命令中的full参数,只有拥有dba或者exp_full_database
和imp_full_database
权限的用户才能执行。
- Schema模式导出或导入Schema下的自有对象,对应
impdp/expdp
命令中的Schema参数,这是默认的操作模式。 如果拥有dba或者exp_full_database
和imp_full_database
权限的用户执行的话,就可以导出或导入多个Schema
中的对象。
- 表模式导出指定的表或者表分区(如果有分区的话)以及依赖该表的对象(如该表的索引,约束等,不过前提是这些对象在同一个
Schema
中,或者执行的用户有相应的权限)。对应impdp/expdp
命令中的Table参数。
- 表空间模式导出指定的表空间中的内容。对应
impdp/expdp
中的Tablespaces
参数,这种模式类似于表模式和 Schema模式的补充。
- 传输表空间模式对应
impdp/expdp
中的Transport_tablespaces
参数。这种模式与前面几种模式最显著的区别是生成的Dump文件中并不包含具体的逻辑数据,而只导出相关对象的元数据(即对象的定义,可以理解成表的创建语句),逻辑数据仍然在表空间的数据文件中,导出时需要将元数据和数据文件同时复制到目标端服务器。这种导出方式效率很高,时间开销主要是花在复制数据文件产生的I/O上。expdp执行传输表空间模式的导出,用户必须 拥有 exp_full_database角色或者DBA角色。而通过传输表空间模式导入时,用户必须拥有imp_full_database角色或者DBA角 色。
- 过滤数据过滤数据主要依赖于Query和Sample两个参数。其中Sample参数主要针对expdp导出功能。
- Query与exp命令中的Query功能类似,不过Expdp中,该参数功能得到了增强,控制的粒度更细。Expdp中的Query也是指定类似where语句来限定记录。语法如下:
Query = [Schema.][Table_name:] Query_clause
Schema.table_name
Query_clause
Query_clause
Query=A:”Where id<5″,B:”Where name=’a’”
Where
Schema
Query=Where id <5
- Sample该参数用来指定导出数据的百分比,可指定的值的范围从0.000001到99.999999,语法如下:
Sample=[[Schema_name.]Table_name:]sample_percent
四、过滤对象
- Exclude 反规则
- Include 正规则
Exclude
exclude/include
EXCLUDE=[object_type]:[name_clause],[object_type]:[name_clause] --排出特定对象
INCLUDE=[object_type]:[name_clause],[object_type]:[name_clause] --包含特定对象
object_type
table,sequence,view,procedure,package
name_clause
name_clause
object_type
expdp <other_parameters> SCHEMAS=scott EXCLUDE=SEQUENCE,TABLE:"IN ('EMP','DEPT')"
impdp <other_parameters> SCHEMAS=scott INCLUDE=PACKAGE,FUNCTION,PROCEDURE,TABLE:"='EMP'"
EXCLUDE=SEQUENCE,VIEW --过滤所有的SEQUENCE,VIEW
EXCLUDE=TABLE:"IN ('EMP','DEPT')" --过滤表对象EMP,DEPT
EXCLUDE=SEQUENCE,VIEW,TABLE:"IN ('EMP','DEPT')" --过滤所有的SEQUENCE,VIEW以及表对象EMP,DEPT
EXCLUDE=INDEX:"= 'INDX_NAME'" --过滤指定的索引对象INDX_NAME
INCLUDE=PROCEDURE:"LIKE 'PROC_U%'" --包含以PROC_U开头的所有存储过程(_ 符号代表任意单个字符)
INCLUDE=TABLE:"> 'E' " --包含大于字符E的所有表对象`
Parameter file:exp_scott.par
DIRECTORY = dump_scott
DUMPFILE = exp_scott_%U.dmp
LOGFILE = exp_scott.log
SCHEMAS = scott
PARALLEL= 2
EXCLUDE = TABLE:"IN ('EMP', 'DEPT')"
D:\> expdp system/manager DIRECTORY=my_dir DUMPFILE=exp_tab.dmp LOGFILE=exp_tab.log SCHEMAS=scott
INCLUDE=TABLE:\"IN ('EMP', 'DEPT')\"
\
expdp system/manager DIRECTORY=my_dir DUMPFILE=exp_tab.dmp LOGFILE=exp_tab.log SCHEMAS=scott
INCLUDE=TABLE:\"IN \(\'EMP\', \'DEP\'\)\"
- ORA-39001: invalid argument value
- ORA-39071: Value for INCLUDE is badly formed.
- ORA-00936: missing expression
- ORA-39071: Value for EXCLUDE is badly formed.
- ORA-00904: “DEPT”: invalid identifier
- ORA-39041: Filter “INCLUDE” either identifies all object types or no object types.
- ORA-39041: Filter “EXCLUDE” either identifies all object types or no object types
- ORA-39038: Object path “USER” is not supported for TABLE jobs.
五、高级过滤
ALL
: 导出/导入对象定义和数据,该参数的默认值就是ALL
DATA_ONLY
: 只导出/导入数据。
METADATA_ONLY
: 只导出/导入对象定义。
5.1 过滤已经存在的数据
Table_exists_action
SKIP
: 跳过该表,继续处理下一个对象。该参数默认就是SKIP
。值得注意的是,如果你同时指定了CONTENT
参数为Data_only
的话,SKIP
参数无效,默认为APPEND
。
APPEND
: 向现有的表中添加数据。
TRUNCATE
:TRUNCATE
当前表,然后再添加记录。使用这个参数需要谨慎,除非确认当前表中的数据确实无用。否则可能造成数据丢失。
REPLACE
: 删除并重建表对象,然后再向其中添加数据。值得注意的是,如果同时指定了CONTENT
参数为Data_only
的话,REPLACE
参数无效。
5.2 重定义表的Schema或表空间
Remap_Schema
Remap_tablespace
REMAP_SCHEMA
: 重定义对象所属Schema该参数的作用类似IMP中的Fromuser+Touser,支持多个Schema的转换,语法如下:
REMAP_SCHEMA=Source_schema:Target_schema[,Source_schema:Target_schema]
Remap_schema=a:b,c:d
remap_schema=a:b,a:c.
REMAP_TABLESPACE
: 重定义对象所在的表空间。该参数用来重映射导入对象存储的表空间,支持同时对多个表空间进行转换,相互间用逗号分割。语法如下:
REMAP_TABLESPACE=Source_tablespace:Target_tablespace[,Source_tablespace:Target_tablespace]
Remap_tablespace
5.3 优化导入/导出效率
Oracle Data Pump technology enables Very High-Speed movement of data and metadata from one database to another.
Parallel
- 对于导出的
parallel
dump
DUMP
DUMP
EXPDP
FILESIZE
DUMP
parallel
filesize
expdp user/pwd directory=dump_file dumpfile=expdp_20100820_%U.dmp logfile=expdp_20100820.log filesize=500M parallel=4
- 对于导入的
parallel
parallel
parallel
impdp user/pwd directory=dump_file dumpfile=expdp_20100820_%U.dmp logfile=impdp_20100820.log parallel=10
边栏推荐
- asyncio 概念和用法
- 23. 合并K个升序链表-c语言
- 偶然升职的内心独白
- AutoLISP series (1): function function 1
- 网关Gateway的介绍与使用
- MySQL数据库基本操作-DQL-基本查询
- laravel post提交数据时显示异常
- As an Android Developer programmer, Android advanced interview
- [flower carving experience] 15 try to build the Arduino development environment of beetle esp32 C3
- Horizontal and vertical centering method and compatibility
猜你喜欢
Logback日志框架第三方jar包 免费获取
Good news! Kelan sundb database and Hongshu technology privacy data protection management software complete compatibility adaptation
Performance comparison of tidb for PostgreSQL and yugabytedb on sysbench
torch. Numel action
Xcode Revoke certificate
【DesignMode】外观模式 (facade patterns)
【MySql进阶】索引详解(一):索引数据页结构
Record the migration process of a project
Odoo集成Plausible埋码监控平台
Talk about the cloud deployment of local projects created by SAP IRPA studio
随机推荐
23. 合并K个升序链表-c语言
SqlServer2014+: 创建表的同时创建索引
JS modularization
JS 模块化
Asyncio concept and usage
Tidb cannot start after modifying the configuration file
Imitate the choice of enterprise wechat conference room
Leetcode-136-只出现一次的数(用异或来解答)
【HCSD大咖直播】亲授大厂面试秘诀-简要笔记
Laravel5.1 路由 -路由分组
Usage of config in laravel
Performance comparison of tidb for PostgreSQL and yugabytedb on sysbench
两类更新丢失及解决办法
Markdown formula editing tutorial
PyTorch 中的乘法:mul()、multiply()、matmul()、mm()、mv()、dot()
Iptables only allows the specified IP address to access the specified port
【DesignMode】外观模式 (facade patterns)
分类模型评价标准(performance measure)
Horizontal and vertical centering method and compatibility
Common training data set formats for target tracking