目录
一、现象描述
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)
1843

被折叠的 条评论
为什么被折叠?



