Size Data Unit (SDU) mismatch错误及java.sql.SQLExcept

本文探讨了业务系统中出现的SDU不匹配与Io异常问题,特别是在使用JDBC连接ORACLE数据库时发生的InvalidPacketLength错误。通过更换数据库驱动从class12.jar到ojdbc14.jar,有效避免了此问题,确保了系统的稳定运行。
部署运行你感兴趣的模型镜像
这几天业务系统已经出现两次当机了,查找后台报错: io 异常: Size Data Unit (SDU) mismatch。

另外还存在
Caused by: java.sql.SQLException: Io 异常: Invalid Packet Lenght

环境配置:JDK1.4+WAS6.0+ORACLE9.2.0.1.0

网上查找有的网友也出过这个错误,他说程序刷新多次后就出现这个问题,用的是hibernate3.0,其中有读取clob字段的代码。虽然我这用的是JDBC,我也不知道这个错到底是怎么产生的。这类偶然性发生的错误很令人头痛,而且一出现就导致WAS中应用程序停掉。

但后有网友认为“这是由于数据库驱动版本造成的,如果是ORACLE的话,一般项目用class12.jar数据库驱动包,在那种连接池多线程并发的情况下,会出现这种错误,而且往往造成web服务器死机,解决办法是更新你的驱动用ojdbc14.jar数据库驱动包来替换class12.jar,也许会解决你的问题”

于是下了ORACLE9.2.0.1.0 对应的ojdbc驱动试试,希望有用:

驱动包classes12.jar用于JDK 1.2和JDK 1.3,而ojdbc14.jar用于JDK 1.4及以上,所以尽量不要使用classes12.jar;

针对不同的数据库版本选择相应版本的驱动包;

将驱动包置入应用启动的classpath中(jboss的lib或者项目lib)

可通过如下链接下载到对应的驱动包:http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html

您可能感兴趣的与本文相关的镜像

Yolo-v8.3

Yolo-v8.3

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

<think>好的,我现在需要处理用户关于PDU中SDU指针的问题。首先,我得明确用户提到的PDU和SDU是什么。在通信协议中,PDU(协议数据单元)和SDU(服务数据单元)是常见的术语,通常用于描述不同协议层之间的数据传递。 用户问的是SDU的指针概念,我需要先回忆相关知识。记得在协议栈中,上层的数据单元作为下层SDU,下层将其封装成自己的PDU。但指针在这里可能指的是什么呢?可能是指向SDU起始位置或某个字段的指针,方便处理数据时快速定位。 接下来,我需要确认PDU结构中SDU指针的作用。比如,当PDU包含多个SDU或分段时,指针可能用来标识SDU的位置。例如,在分段重组时,指针帮助确定每个分段在原始SDU中的偏移量。这在IP分片或者TCP分段中可能用到类似的概念。 然后,我应该考虑具体的例子,比如IPv4分片中的Fragment Offset字段,这可能是一个指针的应用。这个字段指示了当前分片在原始数据报中的位置,类似于指针的作用。另外,在协议设计中,指针可能用于动态定位可变长度的字段,比如在TLV(类型-长度-值)结构中,指针帮助快速跳转到值部分。 还需要确保解释清楚指针如何帮助处理数据。例如,当接收端收到多个PDU时,通过指针可以正确重组SDU,确保数据的完整性和顺序。此外,指针的使用可能影响协议的处理效率,因为它减少了数据解析时的时间复杂度。 用户可能需要了解指针的具体应用场景,比如在不同协议层中的实现差异。例如,数据链路层和传输层的处理方式不同,指针的使用也会有所变化。此外,错误处理机制中指针的作用,比如在数据损坏时如何利用指针进行恢复或重传请求。 最后,生成相关问题时,要考虑用户可能进一步想知道指针的实现方式、在不同协议中的具体例子,或者指针带来的优势与挑战。这有助于用户深入理解该概念的实际应用和设计考虑。</think>在通信协议栈中,PDU(协议数据单元)和SDU(服务数据单元)是核心概念。**SDU指针**主要用于标识PDU中有效载荷数据的起始位置或结构关系,具体作用可分为以下层次: 1. **协议封装关系** 上层协议的SDU会成为下层协议的PDU有效载荷。例如,在TCP/IP协议栈中,传输层的TCP段作为网络层IP数据包的SDU,而IP数据包又作为数据链路层帧的SDUSDU指针在此过程中可能指向: - 分片重组偏移量(如IPv4头部中的$Fragment\ Offset$字段) - 协议嵌套起始位置(如以太网帧中标识IP数据包起始的指针) - 载荷长度标识(如UDP头部的$Length$字段间接定义SDU边界) 2. **分片与重组场景** 当PDU需要分割为多个子单元时,指针记录分片位置。例如IPv4分片包含: $$Fragment\ Offset = \frac{原始数据报中的字节位置}{8}$$ 接收端通过此值重组数据[^1]。 3. **动态结构处理** 在TLV(Type-Length-Value)编码中,指针用于快速跳转到值字段: ```plaintext | Type (1B) | Length (2B) | Value (可变长度) | ↑ 指针指向此处 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值