|
|
expdp 数据库全库或用户导出脚本时,突然收到以下报错,导致备份脚本直接中断:
[oracle@esb01 scripts]$ ./expdp.sh
Export: Release 11.2.0.4.0 - Production on 星期三 6月 3 17:18:05 2026
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
ORA-31634: 作业已存在
ORA-31664: 如果采用默认值, 将无法构造唯一的作业名
原因分析
Oracle Data Pump(数据泵)在运行时,会在数据库内部创建一个临时的主表(Master Table)来追踪进度。如果我们没有显式指定 JOB_NAME 参数,Oracle 会默认自动命名为 SYS_EXPORT_FULL_01、SYS_EXPORT_FULL_02 这种格式。
如果之前的导出任务经常被异常终止(如手动 Ctrl+C、被系统 Kill、或者内存不足崩溃),这些临时表就不会被自动清理。Oracle 每次重试都会把数字往上加,当数字累加到 99 达到上限后(_99),系统无法再递增生成唯一的作业名,就会彻底罢工并抛出 ORA-31664 错误
解决办法(手动清理僵尸作业)
1. 查询当前残留的作业
以 DBA 身份登录数据库,查询当前的状态:
SELECT owner_name, job_name, operation, state FROM dba_datapump_jobs;
|
|