Oracle传统exp/imp报错ORA-25179:PCTTHRESHOLD值无效问题排查
问题:Oracle exp/imp迁移Schema时触发ORA-25179错误
我使用exp命令导出了Oracle Schema,随后尝试将导出的dump文件导入同一数据库的新用户user2中,执行的命令如下:
exp userid=user1/pass1@dbname owner=user1 statistics=none file=user1_exp.dmp log=user1_exp.log imp userid=user2/pass2@dbname FROMUSER=user1 TOUSER=user2 file=user1_exp.dmp log=user2_imp.log
但遇到ORA-25179错误,提示PCTTHRESHOLD 0无效,该值应为正整数。然而原表定义中PCTTHRESHOLD设置为50,想请教是否在exp命令中遗漏了某些参数?
解决方法
- 核心问题出在
exp命令的默认参数COMPRESS=Y上:当启用该参数时,导出过程会压缩表的存储参数,可能导致带LOB列的表的PCTTHRESHOLD值被错误重置为0,进而在导入时触发ORA-25179错误。 - 修改
exp命令,添加COMPRESS=N参数,避免存储参数被压缩:
exp userid=user1/pass1@dbname owner=user1 statistics=none COMPRESS=N file=user1_exp.dmp log=user1_exp.log
- 重新导出后再执行原
imp命令,即可正常导入,PCTTHRESHOLD会保留原表的50设置。 - 补充说明:如果你的表包含LOB类型字段,这个参数的影响会更明显——
PCTTHRESHOLD是控制LOB数据存储的关键参数,压缩存储参数会破坏其原有配置。
内容的提问来源于stack exchange,提问作者ValeryC
相关产品推荐
相关产品推荐

