一、背景

软件程序调用数据库服务出现如题错误:Cause: java.sql.SQLRecoverableException: 无法从套接字读取更多的数据。

软件版本:Oracle 11g

二、解决

用DBA用户登录数据库,进行如下配置:

--修改数据库配置alter system set "_optim_peek_user_binds"=FALSEalter system set optimizer_features_enable='10.2.0.4';
--1. 设置rman从SGA取内存alter system set dbwr_io_slaves=2 scope=spfile;alter system set backup_tape_io_slaves=true scope=spfile;--2. 调整SGA大小alter system set sga_target=1200m;--上面面语句如果执行出错,暂不理会,等下面语句全部执行完后,重新启动 oracle service,再次执行这条语句。alter system set sga_max_size=1200m scope=spfile;--3. 设置使用内存最大大小alter system set large_pool_size=80m;--4. 重启oracle service。shutdown immediatestartup--再次执行步骤 2 报错的那句指令--5. 查看sga,pga,pool的大小。show parameter pool;

三、总结

重启服务后程序访问JDBC正常,至此“套接字无法获取更多数据”问题解决