expdp导出报错:ORA-31634 job already exists 和 ORA-31664 unable to attach to job or job does not exist

目录

一、现象描述

二、原因分析

三、解决方案

四、预防措施


一、现象描述

oracle expdp时,报错ORA-31634  job already exists ORA-31664  unable to attach to job or job does not exist.此时导出自动退出

二、原因分析

此问题本质是作业名冲突,可能是此前备份expdp时,有作业残留。一般正常作业成功完成或通过 KILL_JOB 命令正常终止 时,Oracle 会自动清理作业记录,如果作业因进程崩溃、强制终止(如 Ctrl+C)、数据库故障或网络中断 异常结束,作业记录会残留在数据字典中。

三、解决方案

删除dba_datapump_jobs表中的作业记录

输入以下语句:

SELECT 'DROP TABLE ' ||‘owner_name'||'.'|| job_name || ';' FROM dba_datapump_jobs WHERE state = 'NOT RUNNING';

生成类似语句:

DROP TABLE user1.sys_export_schema_01;

DROP TABLE user1.sys_export_schema_02;

DROP TABLE user1.sys_export_schema_17;

DROP TABLE user1.sys_export_schema_99;

复制语句后在SQLPLUS中执行,清理掉作业

四、预防措施

在导出时,显式指定作业名:expdp scott/tiger schemas=scott directory=data_pump dumpfile=scott.dmp logfile=scott.log job_name=scott_$(date +%Y%m%d%H%M%S)

虽然参考引用中未提及ORA - 01426错误的解决办法,但一般来说,ORA - 01426错误是“numeric overflow”,即数值溢出错误,通常在将一个值插入到一个精度或范围不足以容纳该值的列中时发生。在使用`expdp`导出时出现此错误,可能是由于表中的某些数值列的数据超出了定义的范围。以下是可能的解决办法: ### 检查数据类型精度 检查出现问题的表中数值列的数据类型精度定义,确保其能够容纳实际的数据。例如,如果有一个`NUMBER(3, 2)`类型的列,它最多只能存储三位数字,其中两位是小数位。如果实际数据超出了这个范围,就会导致数值溢出错误。可以通过以下SQL语句查看表结构: ```sql DESC table_name; ``` 如果发现数据类型或精度定义不合理,可以考虑修改表结构,扩大其范围。修改表结构的示例SQL如下: ```sql ALTER TABLE table_name MODIFY column_name NUMBER(5, 2); ``` ### 数据清理 检查表中的数据,找出超出范围的异常值并进行清理或修正。可以通过以下SQL语句找出可能导致溢出的记录: ```sql SELECT * FROM table_name WHERE column_name > some_max_value; ``` 根据实际情况,对这些异常记录进行修正或删除。 ### 分批次导出 如果数据量较大,可能是某些批次的数据导致了数值溢出错误。可以尝试分批次导出数据,避免一次性导出所有数据。例如,可以按照日期、ID范围等条件进行分批次导出。以下是一个按ID范围分批次导出的示例: ```bash expdp user/password directory=dir_name dumpfile=part1.dmp tables=table_name query='WHERE id BETWEEN 1 AND 1000' expdp user/password directory=dir_name dumpfile=part2.dmp tables=table_name query='WHERE id BETWEEN 1001 AND 2000' ``` ### 联系数据库管理员 如果以上方法都无法解决问题,建议联系数据库管理员,对数据库进行更深入的检查分析,可能需要调整数据库的配置参数或进行其他操作。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值