【oracle】使用数据泵导出某用户每张表部分数据

oracle使用数据泵导用户每张表部分数据

(每张表5000行数据,少于5000的导入全部下每张表5000行数据,少于5000的导入全部)

数据库版本:11.2.0.4;系统版本:Oracle Linux 6.4

场景:
开发提出一个需求,需要把tods用户下的数据全部导入到UAT环境,便于他们测试使用;
但经查询该用户下的数据量过大,达到了300GB以上,但目标数据库目前只剩下5000GB左右的空间;
而且这个数据库不单单该部分开发使用还有别的部门也在使用,故建议他们考虑只导入部分数据测试即可。

解决:
因11g数据库如果导用户的数据使用expdp/impdp来操作的话会比较得心应手,并且速度还能接受;
并且习惯使用数据泵来导用户的数据,并且不需要考虑写sql,一条语句就能搞定;
但这次的需求是只需要导出一部分的数据库,跟以往不同,所幸数据泵也提供了这种功能:parfile和query

--查询该用户下的表名(大写表名)
select t.owner || '.' || t.TABLE_NAME from dba_tables t where t.owner in ('TODS');

--创建parfile参数文件(文件名可随意定义,建议跟用户时间相关,这样好区分)
 

$ vi test.par
dumpfile=d_otest_1116.dmp
directory=UTL_DATA
logfile=d_otest_1116_exp.log
job_name=job08
parallel=4
cluster=no
tables=(
TOST.TEST_1
)
query=(
TOST.TEST_1:"where rownum<=100"
)
exit;

注意:如果是rac环境需要加上cluster=no参数,否则会报错,因导出的文件不在共享存储上。

expdp \"/ as sysdba \" parfile=test.par

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值