解决方案:检查并重启远程数据库的Data Pump主进程。执行以下步骤:1. 登录远程数据库服务器,查询并kill掉残留的expdp/mstr进程:select * from v$session where program like '%expdp%'; 然后使用ALTER SYSTEM KILL SESSION 'sid,serial#'; 2. 确保远程数据库的dbms_scheduler服务正常:GRANT EXECUTE ON dbms_scheduler TO PUBLIC; 3. 在本地执行expdp时添加参数:DIRECTORY=dir_name JOB_NAME=job1 PARALLEL=1 cluster=nocluster 4. 如果是dblink方式,验证dblink有效:SELECT * FROM dual@dblink_name; 重建dblink如果必要。
Oracle社区修复案例
ORA-31621: error creating MASTER PROCESS. 原因通常是远程端Data Pump master进程冲突或权限不足。修复方法:停止所有expdp进程,清理gv$session中的相关会话,重启监听器和服务。测试命令:expdp user/pass@remote_db tables=table directory=dpump_dir dumpfile=test.dmp logfile=test.log
CSDN博客经验分享
遇到ORA-31621时,先检查远程数据库的作业历史:SELECT * FROM dba_datapump_jobs; 如果有失败作业,执行DBMS_DATAPUMP.detach(status)来分离。接着设置job参数cluster=no,避免rac环境下的进程创建问题。成功案例中,重启了远程实例后立即解决。
Oracle官方文档片段
The ORA-31621 error occurs when the master process cannot be created on the remote instance. Ensure that the Data Pump master process is not already running. Use the SQL*Plus command to kill any hanging sessions: ALTER SYSTEM KILL SESSION 'sid,serial#'; Verify the SCHEDULER privilege is granted to the user performing the operation.
IT论坛用户帖子
我的情况是跨库expdp,远程是11g,本地12c。报ORA-31621创建主进程失败。解决:远程执行grant datapump_master_role to user; 然后本地加参数cluster=nocluster。完美!
技术博客故障排除
步骤详解:1. 查询远程v$process和v$session,kill expdp相关进程。2. 检查alert.log是否有相关错误。3. 确保remote_jobs服务开启:show parameter remote_jobs。设置为TRUE。4. 测试简单dblink连接。
Stack Overflow类似问题
ORA-31621: error creating MASTER PROCESS. Common fix: The remote database might have a stuck Data Pump job. Run as sysdba on remote: SELECT owner_name, job_name, state FROM dba_datapump_jobs; Then DBMS_DATAPUMP.STOP_JOB(job_handle); Retry the export.
FAQ
Q: ORA-31621是什么原因最常见?
A: 远程数据库有残留的Data Pump进程或作业冲突。
Q: 如何快速kill进程?
A: 查询v$session where program like '%dp%',用ALTER SYSTEM KILL SESSION。
Q: RAC环境怎么处理?
A: 添加cluster=nocluster参数,避免多节点进程问题。
Q: 权限不足怎么解决?
A: 授予datapump_master_role和EXECUTE ON dbms_scheduler。