EXPDP导出报错job already exists

在执行Oracle的EXPDP导出时遇到'job already exists'错误。问题源于视图DBA_DATAPUMP_JOBS中存在非运行状态的作业记录。解决方案是删除相关job_name表,或使用expdp的attach选项终止运行中的作业,然后清理DBA_DATAPUMP_JOBS视图中的记录,确保无残留作业。
摘要由CSDN通过智能技术生成

问题现象

Expdp导出sys_yz schema时报错如下,并且无法导出

ORA-31634: job already exists

ORA-31664: unable to construct unique jobname when defaulted

问题原因

使用sys用户检查视图DBA_DATAPUMP_JOBS,这个视图中保存的是expdp的一些出错信息,

是基于 gv$datapump_job, obj$, com$, and user$ 的一个视图。 这个视图显示仍在运行的数据泵作业,或者作业的 master 表仍然保留在数据库中,或者不正常结束的作业(异常作业)。如果一个新的数据泵作业启动, 会创建一条新的记录,与旧的数据泵作业无关

正常情况下,这个视图中not running状态的内容应该为空,但本次检查出现了127条数据

 

当用系统自动生成的作业名启动一个新的数据泵作业时,我们会检查 dba_datapump_job 中现有的名称以保持惟一性。当然,启动这个作业的用户下需要有足够的空间来创建一个新的 master 表

数据泵作业与用 DBMS_JOBS 包定义的作业不同, DBMS_JOBS 创建的作业使用它自己的进程。 数据泵作业使用一个 master 进程和一些 worker 进程。如果一个数据泵作业被暂停,数据泵作业会一直存在在数据库中(status: NOT RUNNING),这时,master 和 worker 进程会被停止,或者不再存在。客户端之后可以再次挂载到这个作业,并且继续作业的执行(START_JOB)

如果活动的数据泵作业相关联的 master 表被删除,可能会导致不一致删除 master 表本身

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值