全量或增量阶段失败报错,关键词“Got minus one from a read call”
场景描述
Oracle为源全量或增量同步期间DRS任务报错,同步日志界面提示:service LOGMANAGER failed, cause by: Unable to connect to DBMS: url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=*.*.*.*)(PORT=1521))(CONNECT_DATA=*)) user=*, Caused by: IO Error: Got minus one from a read call.
可能原因
- 源数据库服务器拒绝了DRS任务IP的访问。
- 源数据库连接信息发生改变。
- 源数据库连接数已经达到上限。
解决方案
- 修改位于$ORACLE_HOME/network/admin目录的sqlnet.ora文件,允许DRS任务IP访问。
- 如果使用白名单,则TCP.INVITED_NODES配置项中需要包含DRS的任务IP。
- 如果使用黑名单,则TCP.EXCLUDED_NODES中不能包含DRS的任务IP。
- 查看源数据库信息(例如IP,端口,或者service name/sid)是否发生修改,如果源库信息发生改变,可选择以下操作:
- 恢复修改的源数据库信息,DRS任务会自动重试继续同步任务。
- 重新创建任务进行同步。
- 执行以下命令查看源数据库连接数,连接数已经达到上限。
- 查看当前连接数:
select count(*) from v$process;
- 查看最大连接数:
select value from v$parameter where name ='processes';
如果源数据库连接已达到上限,执行以下命令修改数据库允许的最大连接数:
alter system set processes = 300 scope = spfile;
然后重启数据库生效。
- 查看当前连接数: