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

本文介绍在Oracle 11.2.0.4环境下,如何使用数据泵(expdp/impdp)导出特定用户下每张表的部分数据(如每张表前5000行),适用于目标数据库空间有限的情况。文章详细解释了如何通过parfile参数文件和query子句实现这一需求,同时提到了rac环境下的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值