---
title: Java 程序使用 OceanBase Connector/J 驱动连接 OceanBase 数据库时被远端断开-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 Java 程序使用 OceanBase Connector/J 驱动连接 OceanBase 数据库时被远端断开相关的常见问题和使用技巧，帮助您快速解决 Java 程序使用 OceanBase Connector/J 驱动连接 OceanBase 数据库时被远端断开的难题。
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# Java 程序使用 OceanBase Connector/J 驱动连接 OceanBase 数据库时被远端断开

更新时间：2023-11-14 02:10

内容类型：Troubleshoot  

## 问题现象

Java 程序使用 OceanBase Connector/J 驱动连接 OceanBase 数据库时，发生报错：unexpected end of stream, read 0 bytes from 4 (socket was closed by server).

## 问题原因

当客户端程序执行完 SQL 语句，在等待数据库服务器返回数据的过程中，如果连接突然被远端断开，Java 程序就会抛出该错误。

## 影响的版本

- OceanBase 数据库 V3.2.x
 - OceanBase 数据库 V4.x.x

## 解决方法及规避方式

一般的，出现该异常的原因可能是后端 ODP、OBServer 节点断链，也可能是负载均衡设备断链， 或者是传输链路本身的异常（例如网络故障、机房故障等物理设备异常）。

在访问链路异常出现时，通常的分析方法是，首先分析 ODP 的 `digest` 日志和线程日志，如果对应的线程日志在程序异常时间点出现 `VC_EVENT_INACTIVITY_TIMEOUT`、`handle_server_connection_break`日志，则可以断定该异常是由于 ODP 断开连接所导致；否则需要通过 ODP 日志做进一步的分析，查看执行 SQL 的 OceanBase 数据库的主机状况，即查看 OceanBase 数据库主机的 `observer.log` 日志，确认 OBServer 节点是否执行超时或者出现其他异常状况。

如果该异常问题可以复现，可以考虑在访问链路的 ODP 与 OBServer 节点进行抓包，进一步明确原因，例如查看是否涉及负载均衡设备断链或者是传输链路本身的异常（例如网络故障、机房故障等物理设备异常）等。

上一篇

[Java 客户端 net_write_timeout 值报错](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000106974)

下一篇

[通过 JDBC V1.x 驱动包执行 sum() 结果小数被舍弃](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000038416) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
