【案例64】无法从套接字读取更多的数据

2024-08-29 20:36

本文主要是介绍【案例64】无法从套接字读取更多的数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题现象

系统突然间登录报如下错误:SELECT * FROM sm_user WHERE user_code_q=? 无法从套接字读取更多的数据

问题分析 

查看nc-log.log发现大量相关报错

$$callid=1723104097968-1063 $$thread=[http-bio-xxx-xxx-exec-xxx] $$host=xxx$$userid=#UAP# $$ts=xxx-08-08 16:01:37 $$remotecall=[nc.login.bs.INCLoginService] $$debuglevel=ERROR  $$msg=<SELECT * FROM sm_user WHERE user_code_q = null>throws 无法从套接字读取更多的数据 
$$callid=1723104097968-1063 $$thread=[http-bio-xxx-xxx-exec-xxx] $$host=xxx $$userid=#UAP# $$ts=xxx-08-08 16:01:37 $$remotecall=[nc.login.bs.INCLoginService] $$debuglevel=ERROR  $$msg=sql original exception
java.sql.SQLException: 无法从套接字读取更多的数据at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1142)at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1099)at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:288)at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191)at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523)at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:863)at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1153)at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1275)at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576)at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3620)at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1203)at uap.mw.ds.UAPPreparedStatement.executeQuery(UAPPreparedStatement.java:73)at nc.jdbc.framework.crossdb.CrossDBPreparedStatement.executeQuery(CrossDBPreparedStatement.java:103)at nc.jdbc.framework.JdbcSession.executeQuery(JdbcSession.java:297)at nc.jdbc.framework.JdbcPersistenceManager.retrieveByClause(JdbcPersistenceManager.java:955)at nc.bs.dao.BaseDAO.retrieveByClause(BaseDAO.java:280)at nc.bs.dao.BaseDAO.retrieveByClause(BaseDAO.java:230)at nc.vo.uap.rbac.util.RbacUserPwdUtil.getUserActualCodecPwd(RbacUserPwdUtil.java:140)at nc.vo.uap.rbac.util.RbacUserPwdUtil.checkUserPassword(RbacUserPwdUtil.java:87)at nc.identityverify.pub.StaticPWDVerifier.verify(StaticPWDVerifier.java:14)at nc.identityverify.bs.impl.IdentityVerifyEngine.identityVerify(IdentityVerifyEngine.java:97)at nc.identityverify.bs.impl.IdentityVerifyImpl.identityVerify(IdentityVerifyImpl.java:63)at nc.login.bs.LoginVerifyBean.identityVerify(LoginVerifyBean.java:167)at nc.login.bs.impl.LoginEngine.verify(LoginEngine.java:148)at nc.login.bs.impl.LoginEngine.login(LoginEngine.java:173)at nc.login.bs.impl.NCLoginImplement.login(NCLoginImplement.java:71)at sun.reflect.GeneratedMethodAccessor4275.invoke(Unknown Source)... ...

于是排除数据库alert日志

发现数据库有ORA-07445报错

ORA-07445传说中是因为Oracle的bug所导致的。而当oracle服务器进程从操作系统收到一个致命的错误信息时会抛出ora-07445错误,这个错误可以被oracle后台进程或者用户进程激发。当错误被抛出时,系统会首先写一个错误日志到alert.log文件中,然后会写跟踪文件到user_dump_dest或background_dump_dest中;最后会将主存信息转储到core_dump_dest中。

解决方案 

1、修改相关_optimizer_connect_by_cost_based参数

--- 需要重启数据库
alter system set “_optimizer_connect_by_cost_based” = false scope=both;---对当前session生效
alter session set “_optimizer_connect_by_cost_based” = false scope=both;

 2、修改相关query_rewrite_enabled参数

--- 需要重启数据库
alter system set query_rewrite_enabled=false scope=both;---对当前session生效
alter session set query_rewrite_enabled=false scope=both ;

这篇关于【案例64】无法从套接字读取更多的数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1118825

相关文章

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

Java 中的 equals 和 hashCode 方法关系与正确重写实践案例

《Java中的equals和hashCode方法关系与正确重写实践案例》在Java中,equals和hashCode方法是Object类的核心方法,广泛用于对象比较和哈希集合(如HashMa... 目录一、背景与需求分析1.1 equals 和 hashCode 的背景1.2 需求分析1.3 技术挑战1.4

java读取excel文件为base64实现方式

《java读取excel文件为base64实现方式》文章介绍使用ApachePOI和EasyExcel处理Excel文件并转换为Base64的方法,强调EasyExcel适合大文件且内存占用低,需注意... 目录使用 Apache POI 读取 Excel 并转换为 Base64使用 EasyExcel 处

Java中实现对象的拷贝案例讲解

《Java中实现对象的拷贝案例讲解》Java对象拷贝分为浅拷贝(复制值及引用地址)和深拷贝(递归复制所有引用对象),常用方法包括Object.clone()、序列化及JSON转换,需处理循环引用问题,... 目录对象的拷贝简介浅拷贝和深拷贝浅拷贝深拷贝深拷贝和循环引用总结对象的拷贝简介对象的拷贝,把一个

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl