Oracle expdp 过滤和并行

写在前面的话:

我们知道调用数据泵的方式可以有
3种,在这里我绝对不会使用命令行而是首推脚本方式
放弃命令行的理由大概有这些:
① 操作系统对
CLI字符数的限制
② 令人痛恨的转义符
③ 无法跨平台重用
④ 官方文档到处鼓吹用脚本方式


㈠ 过滤对象/数据篇

⑴ 过滤对象


INCLUDE

EXCLUDE和INCLUDE
用法相同,这里就谈 INCLUDE

语法
INCLUDE = object_type[:name_clause] [, ...]

object_type:常用有TABLE、INDEX、CONSTRAINT、GRANT,更多的我们可以查阅
database_export_objects,schema_export_objects,table_export_objects

name_clause:sql语句

相关的索引、约束等都会很讲义气地被一起导出

例子

题目:导出所有以
emp 开头的表

参数文件写法如下:

[oracle@bogon ~]$ cat hr.par
SCHEMAS=HR
DUMPFILE=hr.dmp
DIRECTORY=dmpdir
LOGFILE=hr.log
INCLUDE=TABLE:"like 'EMP%'"

这个文件里,INCLUDE也可以这么写

INCLUDE=TABLE:"IN (select table_name from user_tables where table_name like 'EMP%')"


⑵ 过滤数据

QUERY


语法
QUERY = [schema.][table_name:] query_clause

该参数和以下几个为互斥关系
CONTENT=METADATA_ONLY
ESTIMATE_ONLY
TRANSPORT_TABLESPACES

例子

题目:导出部门号为
50,员工号大于128的所有员工资料

参数文件写法如下:

[oracle@bogon ~]$ cat hr.par
SCHEMAS=HR
DUMPFILE=hr02.dmp
DIRECTORY=dmpdir
LOGFILE=hr02.log
INCLUDE=TABLE:"IN ('EMPLOYEES','DEPARTMENTS')"
QUERY=EMPLOYEES:"where employee_id>=128",DEPARTMENTS:"where department_id=20"



㈡ 并行导出篇

并行设置的结果无非3种:变得更好、没有变化、变得更差
效率是否得到提高,并不取决于你设置了多碉堡的参数,参数和参数值是否合适方为根本

并行需要成本,因为并行之前需对服务器资源综合权衡,计算并行,分配任务
并行设置是门艺术,因为
PARALLEL经常是要跟FILESIZE,DUMPFILE一起考虑

下面是官方文档给的一个并行优化实例:

expdp hr/hr FULL=y DUMPFILE=dpump_dir1:full1%U.dmp, dpump_dir2:full2%U.dmp
FILESIZE=2G PARALLEL=3 LOGFILE=dpump_dir1:expfull.log JOB_NAME=expfull

另外,并行度的设置不应该超过 CPU 数量的2倍

sys@ORCL> show parameter cpu

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cpu_count                            integer     1



By DBA_WaterBin

2013-09-05

GOOD Luck

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值