ORA-23426: deferred RPC queue has entries for string
Cause: The requested action cannot be performed until the queue is empty for the given site/dblink
Action: Use dbms_defer_sys.push, dbms_defer_sys.purge_queue or dbms_defer_sys.delete_tran to empty the queue.
ORA-23426: deferred RPC queue has entries for string报错表示客户端正在尝试向Oracle Database发送RPC(远程过程调用)请求,其RPC长度恰好大于预定义的最大传输字节数,从而导致重大错误,Oracle把此类RPC队列中的RPC请求存入了暂缓队列中。
1)确保发送RPC的客户端正确配置,发送的RPC长度不超过系统设定的最大长度;
2)检查是否有例如循环绑定OWM_REF的操作,如果有,则请将这处理逻辑修改为不绑定OWM_REF;
3)如果无法调整RPC长度或绑定OWM_REF,则需要在服务器端重启服务器以清除暂缓队列中的RPC请求;
4)开发人员可以通过调用DBMS_DEFER_SYS.GET_DEFERRED_RPCS_QUEUE函数,查询是否有暂缓队列中未处理的RPC请求;
5)可以通过调用DBMS_DEFER_SYS.DROP_DEFERRED_RPCS_QUEUE函数清除暂缓队列中的RPC请求;
6)如果仍需要解决这种错误,可以尝试将服务器端的DB_RPC_CALL_SIZE参数的值设置的更大。