频繁有现场反馈,应用偶发性报网络通信异常、连接已断开,或服务器模式不匹配,无法稳定复现。
DBA一般会先检查磁盘空间是否充足、检查用户是否添加超时限制、检查驱动和数据库版本是否匹配、检查数据库状态、检查历史日志中是否存在异常,比如server日志中有io超时相关告警。检查服务名配置是否准确,比如主备集群一般推荐配置login_mode=1。以上对DBA而言是基本操作,不再赘述。如果以上均无异常,则需排查是否应用服务器和数据库服务器网络通信存在波动,或sql执行超时导致的报错。
create table dm1(id int,name varchar);
create table dm2(id int,name varchar);
begin
for i in 1..1000000 loop
insert into dm1 values(i,DBMS_RANDOM.RANDOM());
if (i%10000 = 0)
then commit;
end if;
end loop;
end;
begin
for i in 1..1000 loop
insert into dm2 values(i,DBMS_RANDOM.RANDOM());
end loop;
commit;
end;
package test;
import java.sql.*;
import java.text.SimpleDateFormat;
public class SynchronizedFetch {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
String url = "jdbc:dm://192.168.59.128:5236?schema=ODS_DC&logLevel=all&logDir=C:\\dmdbms\\log&socketTimeout=60000";
String driverName = "dm.jdbc.driver.DmDriver";
String username = "ODS_DC";
String password = "Dameng123";
String sql = "select count(*) from (select a.id,b.name from dm1 a left join dm2 b on b.id>1)c left join dm1 d on c.id>1;";
//也可以通过sleep方式模拟,更方便控制sql执行时间
//String sql="sleep(80)";
Class.forName(driverName);
Connection connection = DriverManager.getConnection(url, username, password);
PreparedStatement preparedStatement = connection.prepareStatement(sql);
System.out.println("执行开始时间: " +
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new java.util.Date()));
ResultSet resultSet = preparedStatement.executeQuery();
System.out.println("执行结束时间: " +
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new java.util.Date()));
while (resultSet.next()) {
resultSet.getObject(1);
}
System.out.println("获取数据结束时间: " +
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new java.util.Date()));
resultSet.close();
preparedStatement.close();
connection.close();
}
}
socketTimeout=60000,sql执行超过1分钟触发报错。
Exception in thread "main" dm.jdbc.driver.DMException: Communication error
at dm.jdbc.driver.DBError.throwException(SourceFile:864)
at dm.jdbc.a.a.a(SourceFile:283)
at dm.jdbc.a.a.a(SourceFile:1250)
at dm.jdbc.a.a.b(SourceFile:1077)
at dm.jdbc.a.a.a(SourceFile:861)
at dm.jdbc.driver.DmdbPreparedStatement.executeInner(SourceFile:443)
at dm.jdbc.driver.DmdbPreparedStatement.do_executeQuery(SourceFile:531)
at dm.jdbc.filter.BaseFilter.PreparedStatement_executeQuery(SourceFile:4681)
at dm.jdbc.filter.log.LogFilter.PreparedStatement_executeQuery(SourceFile:8119)
at dm.jdbc.driver.DmdbPreparedStatement$2.run(SourceFile:1397)
at dm.jdbc.driver.DmdbPreparedStatement$2.run(SourceFile:1)
at dm.jdbc.driver.DmdbPreparedStatement.executeQuery(SourceFile:1405)
at test.SynchronizedFetch.main(SynchronizedFetch.java:26)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:170)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at dm.jdbc.util.buffer.ByteArrayNode.load(SourceFile:129)
at dm.jdbc.util.buffer.Buffer.load(SourceFile:365)
at dm.jdbc.a.c.a(SourceFile:208)
at dm.jdbc.a.a.e(SourceFile:399)
at dm.jdbc.a.a.a(SourceFile:273)
... 11 more
[DEBUG - 2025-11-06 20:02:04.303] tid:1 - [main] conn-1 try connect loop 0
[DEBUG - 2025-11-06 20:02:05.526] tid:1 - [main] { conn-1 } access(); CMD_STARTUP
[DEBUG - 2025-11-06 20:02:06.388] tid:1 - [main] { conn-1 } access(); CMD_LOGIN
[DEBUG - 2025-11-06 20:02:06.411] tid:1 - [main] try connect success [192.168.59.128:5236 (NORMAL, OPEN, DSC CONTROL), sessions: 0]
[INFO - 2025-11-06 20:02:06.418] tid:1 - [main] { DmDriver@5a10411 } connect(DmProperties): conn-1, sessionID-0x7fee6c09b798(140661991520152); [PARAMS]: {schema=ODS_DC, lastloginip=, svrstat=4, language=CN, globalserverseries=7, lastlogintime=, svrmode=0, dsccontrol=true, clientuser=ODS_DC, localtimezone=480, host=192.168.59.128, driverversion=8.1.4.169, logdir=C:\dmdbms\log, loginwarningid=0, epgroup=192.168.59.128:5236=([192.168.59.128:5236 (NORMAL, OPEN, DSC CONTROL), sessions: 0]), lifetimeremainder=-1, gracetimeremainder=0, failedattempts=0, serverversion=8.1.4.116, clienthostname=192.168.59.128, url=jdbc:dm://192.168.59.128:5236?schema=ODS_DC&logLevel=all&logDir=C:\dmdbms\log&socketTimeout=60000, applicationname=, sockettimeout=60000, instancename=DMCSDB, dbname=DAMENG, port=5236, loglevel=all, guid=080E82C9080E82C94853CDDE7841ABD7, user=ODS_DC}; [USED TIME]: 0.0134ms;
[DEBUG - 2025-11-06 20:02:06.428] tid:1 - [main] { conn-1 } access(); CMD_STMT_ALLOCATE
[DEBUG - 2025-11-06 20:02:06.430] tid:1 - [main] { conn-1 } access(); CMD_PREPARE
[SQL - 2025-11-06 20:02:06.432] tid:1 - [main] { conn-1 } prepareStatement(String): pstmt-1, handle-0, sessionID-0x7fee6c09b798(140661991520152); [PARAMS]: "select count(*) from (select a.id,b.name from dm1 a left join dm2 b on b.id>1)c left join dm1 d on c.id>1;"; [USED TIME]: 13.8301ms;
[DEBUG - 2025-11-06 20:02:06.432] tid:1 - [main] { conn-1 } access(); CMD_EXECUTE2
[ERROR - 2025-11-06 20:03:06.448] tid:1 - [main] { conn-1, pstmt-1 } executeQuery(); [USED TIME]: 60014.9384ms; [EXEC_ID]: 0;
dm.jdbc.driver.DMException: Communication error
at dm.jdbc.driver.DBError.throwException(SourceFile:864)
at dm.jdbc.a.a.a(SourceFile:283)
at dm.jdbc.a.a.a(SourceFile:1250)
at dm.jdbc.a.a.b(SourceFile:1077)
at dm.jdbc.a.a.a(SourceFile:861)
at dm.jdbc.driver.DmdbPreparedStatement.executeInner(SourceFile:443)
at dm.jdbc.driver.DmdbPreparedStatement.do_executeQuery(SourceFile:531)
at dm.jdbc.filter.BaseFilter.PreparedStatement_executeQuery(SourceFile:4681)
at dm.jdbc.filter.log.LogFilter.PreparedStatement_executeQuery(SourceFile:8119)
at dm.jdbc.driver.DmdbPreparedStatement$2.run(SourceFile:1397)
at dm.jdbc.driver.DmdbPreparedStatement$2.run(SourceFile:1)
at dm.jdbc.driver.DmdbPreparedStatement.executeQuery(SourceFile:1405)
at test.SynchronizedFetch.main(SynchronizedFetch.java:26)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:170)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at dm.jdbc.util.buffer.ByteArrayNode.load(SourceFile:129)
at dm.jdbc.util.buffer.Buffer.load(SourceFile:365)
at dm.jdbc.a.c.a(SourceFile:208)
at dm.jdbc.a.a.e(SourceFile:399)
at dm.jdbc.a.a.a(SourceFile:273)
... 11 more
2025-11-06 20:02:07.928 (EP[0] sess:0x7fee6c09b798 thrd:2983 user:ODS_DC trxid:0 stmt:0x7fee6c0bc5c0 appname: ip:::ffff:192.168.59.1) GET SQL ALL PLN: select count(*) from (select a.id,b.name from dm1 a left join dm2 b on b.id>1)c left join dm1 d on c.id>1;
1 #NSET2: [9223372036854775808, 1, 56]
2 #PRJT2: [9223372036854775808, 1, 56]; exp_num(1), is_atom(FALSE)
3 #AAGR2: [9223372036854775808, 1, 56]; grp_num(0), sfun_num(1), distinct_flag[0]; slave_empty(0)
4 #NEST LOOP LEFT JOIN2: [9223372036854775808, 2500000000000, 56]; join condition(C.ID > 1) partition_keys_num(0) ret_null(0)
5 #PRJT2: [26860853974, 50000000, 56]; exp_num(1), is_atom(FALSE)
6 #NEST LOOP LEFT JOIN2: [26860853974, 50000000, 56]; partition_keys_num(0) ret_null(0)
7 #CSCN2: [105, 1000000, 4]; INDEX33557560(DM1 as A); btr_scan(1)
8 #SLCT2: [1, 50, 52]; B.ID > 1
9 #CSCN2: [1, 1000, 52]; INDEX33557561(DM2 as B); btr_scan(1)
10 #CSCN2: [104, 1000000, 0]; INDEX33557560(DM1 as D); btr_scan(1)^M
2025-11-06 20:02:07.928 (EP[0] sess:0x7fee6c09b798 thrd:2983 user:ODS_DC trxid:264563 stmt:NULL appname: ip:::ffff:192.168.59.1) TRX: START^M
2025-11-06 20:02:07.935 (EP[0] sess:0x7fee6c09b798 thrd:2983 user:ODS_DC trxid:264563 stmt:0x7fee6c0bc5c0 appname: ip:::ffff:192.168.59.1) DLCK used time:18(us)^M
2025-11-06 20:03:08.022 (EP[0] sess:0x7fee6c09b798 thrd:2983 user:ODS_DC trxid:264563 stmt:NULL appname: ip:::ffff:192.168.59.1) TRX: ROLLBACK^M
2025-11-06 20:03:08.022 (EP[0] sess:0x7fee6c09b798 thrd:2983 user:ODS_DC trxid:0 stmt:0x7fee6c0bc5c0 appname: ip:::ffff:192.168.59.1) [ERR(-6007)]: select count(*) from (select a.id,b.name from dm1 a left join dm2 b on b.id>1)c left join dm1 d on c.id>1; EXECTIME: 60091(ms) ROWCOUNT: 0(rows) EXEC_ID: 2200.^M
2025-11-06 20:03:08.022 (EP[0] sess:0x7fee6c09b798 thrd:2983 user:ODS_DC trxid:0 stmt:NULL appname: ip:::ffff:192.168.59.1) [LGN] FREE SESSION^M
2025-11-06 20:03:12.229 (EP[0] sess:0x7fee701ab608 thrd:2959 user:SYSDBA trxid:264562 stmt:0x7fee701cc760 appname:manager.exe ip:::ffff:192.168.59.1) [ORA]: sp_set_para_value(1,'SVR_LOG',0);^M
2025-11-06 20:03:12.231 (EP[0] sess:0x7fee701ab608 thrd:2959 user:SYSDBA trxid:264562 stmt:0x7fee701cc760 appname:manager.exe ip:::ffff:192.168.59.1) [CAL] sp_set_para_value(1,'SVR_LOG',0);^M
2025-11-06 20:03:12.232 (EP[0] sess:0x7fee701ab608 thrd:2959 user:SYSDBA trxid:264562 stmt:0x7fee701cc760 appname:manager.exe ip:::ffff:192.168.59.1) [ORA]: sp_set_para_value(1,'SVR_LOG',0);^M
连接串:
String url = “jdbc:dm://192.168.59.128:5236?schema=ODS_DC&logLevel=all&logDir=C:\dmdbms\log&socketTimeout=600000&connectTimeout=20000&sessionTimeout=12000”;
断开本地应用和本地虚拟机的网络:
Exception in thread "main" dm.jdbc.driver.DMException: Communication error
at dm.jdbc.driver.DBError.throwException(SourceFile:864)
at dm.jdbc.a.a.a(SourceFile:283)
at dm.jdbc.a.a.a(SourceFile:1250)
at dm.jdbc.a.a.b(SourceFile:1077)
at dm.jdbc.a.a.a(SourceFile:861)
at dm.jdbc.driver.DmdbPreparedStatement.executeInner(SourceFile:443)
at dm.jdbc.driver.DmdbPreparedStatement.do_executeQuery(SourceFile:531)
at dm.jdbc.filter.BaseFilter.PreparedStatement_executeQuery(SourceFile:4681)
at dm.jdbc.filter.log.LogFilter.PreparedStatement_executeQuery(SourceFile:8119)
at dm.jdbc.driver.DmdbPreparedStatement$2.run(SourceFile:1397)
at dm.jdbc.driver.DmdbPreparedStatement$2.run(SourceFile:1)
at dm.jdbc.driver.DmdbPreparedStatement.executeQuery(SourceFile:1405)
at test.SynchronizedFetch.main(SynchronizedFetch.java:26)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:170)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at dm.jdbc.util.buffer.ByteArrayNode.load(SourceFile:129)
at dm.jdbc.util.buffer.Buffer.load(SourceFile:365)
at dm.jdbc.a.c.a(SourceFile:208)
at dm.jdbc.a.a.e(SourceFile:399)
at dm.jdbc.a.a.a(SourceFile:273)
... 11 more
[DEBUG - 2025-11-06 20:26:44.488] tid:1 - [main] conn-1 try connect loop 0
[DEBUG - 2025-11-06 20:26:45.771] tid:1 - [main] { conn-1 } access(); CMD_STARTUP
[DEBUG - 2025-11-06 20:26:46.664] tid:1 - [main] { conn-1 } access(); CMD_LOGIN
[DEBUG - 2025-11-06 20:26:46.693] tid:1 - [main] try connect success [192.168.59.128:5236 (NORMAL, OPEN, DSC CONTROL), sessions: 0]
[INFO - 2025-11-06 20:26:46.705] tid:1 - [main] { DmDriver@5a10411 } connect(DmProperties): conn-1, sessionID-0x7fee7c0889a8(140662259878312); [PARAMS]: {schema=ODS_DC, lastloginip=, svrstat=4, language=CN, globalserverseries=7, lastlogintime=, svrmode=0, dsccontrol=true, sessiontimeout=12000, clientuser=ODS_DC, localtimezone=480, host=192.168.59.128, driverversion=8.1.4.169, logdir=C:\dmdbms\log, loginwarningid=0, connecttimeout=20000, epgroup=192.168.59.128:5236=([192.168.59.128:5236 (NORMAL, OPEN, DSC CONTROL), sessions: 0]), lifetimeremainder=-1, gracetimeremainder=0, failedattempts=0, serverversion=8.1.4.116, clienthostname=192.168.59.128, url=jdbc:dm://192.168.59.128:5236?schema=ODS_DC&logLevel=all&logDir=C:\dmdbms\log&socketTimeout=600000&connectTimeout=20000&sessionTimeout=12000, applicationname=, sockettimeout=600000, instancename=DMCSDB, dbname=DAMENG, port=5236, loglevel=all, guid=080E82C9080E82C94853CDDE7841ABD7, user=ODS_DC}; [USED TIME]: 0.0319ms;
[DEBUG - 2025-11-06 20:26:46.718] tid:1 - [main] { conn-1 } access(); CMD_STMT_ALLOCATE
[DEBUG - 2025-11-06 20:26:46.720] tid:1 - [main] { conn-1 } access(); CMD_PREPARE
[SQL - 2025-11-06 20:26:46.722] tid:1 - [main] { conn-1 } prepareStatement(String): pstmt-1, handle-0, sessionID-0x7fee7c0889a8(140662259878312); [PARAMS]: "select count(*) from (select a.id,b.name from dm1 a left join dm2 b on b.id>1)c left join dm1 d on c.id>1;"; [USED TIME]: 16.7114ms;
[DEBUG - 2025-11-06 20:26:46.723] tid:1 - [main] { conn-1 } access(); CMD_EXECUTE2
[ERROR - 2025-11-06 20:36:46.732] tid:1 - [main] { conn-1, pstmt-1 } executeQuery(); [USED TIME]: 600008.9727ms; [EXEC_ID]: 0;
dm.jdbc.driver.DMException: Communication error
at dm.jdbc.driver.DBError.throwException(SourceFile:864)
at dm.jdbc.a.a.a(SourceFile:283)
at dm.jdbc.a.a.a(SourceFile:1250)
at dm.jdbc.a.a.b(SourceFile:1077)
at dm.jdbc.a.a.a(SourceFile:861)
at dm.jdbc.driver.DmdbPreparedStatement.executeInner(SourceFile:443)
at dm.jdbc.driver.DmdbPreparedStatement.do_executeQuery(SourceFile:531)
at dm.jdbc.filter.BaseFilter.PreparedStatement_executeQuery(SourceFile:4681)
at dm.jdbc.filter.log.LogFilter.PreparedStatement_executeQuery(SourceFile:8119)
at dm.jdbc.driver.DmdbPreparedStatement$2.run(SourceFile:1397)
at dm.jdbc.driver.DmdbPreparedStatement$2.run(SourceFile:1)
at dm.jdbc.driver.DmdbPreparedStatement.executeQuery(SourceFile:1405)
at test.SynchronizedFetch.main(SynchronizedFetch.java:26)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:170)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at dm.jdbc.util.buffer.ByteArrayNode.load(SourceFile:129)
at dm.jdbc.util.buffer.Buffer.load(SourceFile:365)
at dm.jdbc.a.c.a(SourceFile:208)
at dm.jdbc.a.a.e(SourceFile:399)
at dm.jdbc.a.a.a(SourceFile:273)
... 11 more
2025-11-06 20:26:48.178 (EP[0] sess:0x7fee7c0889a8 thrd:3444 user:ODS_DC trxid:0 stmt:NULL appname: ip:::ffff:192.168.59.1) [LGN] LOGIN^M
2025-11-06 20:26:48.230 (EP[0] sess:0x7fee7c0889a8 thrd:3444 user:ODS_DC trxid:0 stmt:NULL appname: ip:::ffff:192.168.59.1) ALLOC STMT^M
2025-11-06 20:26:48.232 (EP[0] sess:0x7fee7c0889a8 thrd:3444 user:ODS_DC trxid:0 stmt:0x7fee7c0a97d0 appname: ip:::ffff:192.168.59.1) [ORA]: select count(*) from (select a.id,b.name from dm1 a left join dm2 b on b.id>1)c left join dm1 d on c.id>1;^M
2025-11-06 20:26:48.232 (EP[0] sess:0x7fee7c0889a8 thrd:3444 user:ODS_DC trxid:0 stmt:0x7fee7c0a97d0 appname: ip:::ffff:192.168.59.1) GET SQL ALL PLN: select count(*) from (select a.id,b.name from dm1 a left join dm2 b on b.id>1)c left join dm1 d on c.id>1;
1 #NSET2: [9223372036854775808, 1, 56]
2 #PRJT2: [9223372036854775808, 1, 56]; exp_num(1), is_atom(FALSE)
3 #AAGR2: [9223372036854775808, 1, 56]; grp_num(0), sfun_num(1), distinct_flag[0]; slave_empty(0)
4 #NEST LOOP LEFT JOIN2: [9223372036854775808, 2500000000000, 56]; join condition(C.ID > 1) partition_keys_num(0) ret_null(0)
5 #PRJT2: [26860853974, 50000000, 56]; exp_num(1), is_atom(FALSE)
6 #NEST LOOP LEFT JOIN2: [26860853974, 50000000, 56]; partition_keys_num(0) ret_null(0)
7 #CSCN2: [105, 1000000, 4]; INDEX33557560(DM1 as A); btr_scan(1)
8 #SLCT2: [1, 50, 52]; B.ID > 1
9 #CSCN2: [1, 1000, 52]; INDEX33557561(DM2 as B); btr_scan(1)
10 #CSCN2: [104, 1000000, 0]; INDEX33557560(DM1 as D); btr_scan(1)^M
2025-11-06 20:26:48.232 (EP[0] sess:0x7fee7c0889a8 thrd:3444 user:ODS_DC trxid:264728 stmt:NULL appname: ip:::ffff:192.168.59.1) TRX: START^M
2025-11-06 20:26:48.235 (EP[0] sess:0x7fee7c0889a8 thrd:3444 user:ODS_DC trxid:264728 stmt:0x7fee7c0a97d0 appname: ip:::ffff:192.168.59.1) DLCK used time:2(us)^M
2025-11-06 20:27:08.578 (EP[0] sess:0x7fee7c0889a8 thrd:3444 user:ODS_DC trxid:264728 stmt:NULL appname: ip:::ffff:192.168.59.1) TRX: ROLLBACK^M
2025-11-06 20:27:08.578 (EP[0] sess:0x7fee7c0889a8 thrd:3444 user:ODS_DC trxid:0 stmt:0x7fee7c0a97d0 appname: ip:::ffff:192.168.59.1) [ERR(-6007)]: select count(*) from (select a.id,b.name from dm1 a left join dm2 b on b.id>1)c left join dm1 d on c.id>1; EXECTIME: 20342(ms) ROWCOUNT: 0(rows) EXEC_ID: 2900.^M
2025-11-06 20:27:08.578 (EP[0] sess:0x7fee7c0889a8 thrd:3444 user:ODS_DC trxid:0 stmt:NULL appname: ip:::ffff:192.168.59.1) [LGN] FREE SESSION^M
连接串:
String url = “jdbc:dm://192.168.59.128:5236?schema=ODS_DC&logLevel=all&logDir=C:\dmdbms\log&socketTimeout=600000&connectTimeout=20000&sessionTimeout=12000”;
demo中sql调整为:
select count(*) from (select top 699000000 a.id,b.name from dm1 a left join dm2 b on b.id>1)c left join dm1 d on c.id=d.id;–执行耗时45秒 495毫秒
断开本地应用和本地虚拟机的网络:
Exception in thread "main" dm.jdbc.driver.DMException: Communication error
at dm.jdbc.driver.DBError.throwException(SourceFile:864)
at dm.jdbc.a.a.a(SourceFile:283)
at dm.jdbc.a.a.e(SourceFile:630)
at dm.jdbc.driver.DmdbConnection.openConnection(SourceFile:862)
at dm.jdbc.internal.conf.EP.connect(SourceFile:153)
at dm.jdbc.internal.conf.EPGroup$EPSelector.select(SourceFile:574)
at dm.jdbc.internal.conf.EPGroup.connect(SourceFile:380)
at dm.jdbc.driver.DmDriver.do_connect(SourceFile:198)
at dm.jdbc.filter.BaseFilter.Driver_connect(SourceFile:4571)
at dm.jdbc.filter.log.LogFilter.Driver_connect(SourceFile:15438)
at dm.jdbc.driver.DmDriver.connect(SourceFile:541)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at test.SynchronizedFetch.main(SynchronizedFetch.java:19)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:209)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at dm.jdbc.util.buffer.ByteArrayNode.load(SourceFile:129)
at dm.jdbc.util.buffer.Buffer.load(SourceFile:365)
at dm.jdbc.a.c.a(SourceFile:208)
at dm.jdbc.a.a.e(SourceFile:399)
at dm.jdbc.a.a.a(SourceFile:273)
... 12 more
[DEBUG - 2025-11-07 10:58:22.623] tid:1 - [main] conn-1 try connect loop 0
[DEBUG - 2025-11-07 10:58:24.178] tid:1 - [main] { conn-1 } access(); CMD_STARTUP
[ASSERT - 2025-11-07 10:58:44.317] tid:1 - [main] try connect fail [192.168.59.128:5236 (UNKNOW, UNKNOW), sessions: 0]
dm.jdbc.driver.DMException: Communication error
at dm.jdbc.driver.DBError.throwException(SourceFile:864)
at dm.jdbc.a.a.a(SourceFile:283)
at dm.jdbc.a.a.e(SourceFile:630)
at dm.jdbc.driver.DmdbConnection.openConnection(SourceFile:862)
at dm.jdbc.internal.conf.EP.connect(SourceFile:153)
at dm.jdbc.internal.conf.EPGroup$EPSelector.select(SourceFile:574)
at dm.jdbc.internal.conf.EPGroup.connect(SourceFile:380)
at dm.jdbc.driver.DmDriver.do_connect(SourceFile:198)
at dm.jdbc.filter.BaseFilter.Driver_connect(SourceFile:4571)
at dm.jdbc.filter.log.LogFilter.Driver_connect(SourceFile:15438)
at dm.jdbc.driver.DmDriver.connect(SourceFile:541)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at test.SynchronizedFetch.main(SynchronizedFetch.java:19)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:209)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at dm.jdbc.util.buffer.ByteArrayNode.load(SourceFile:129)
at dm.jdbc.util.buffer.Buffer.load(SourceFile:365)
at dm.jdbc.a.c.a(SourceFile:208)
at dm.jdbc.a.a.e(SourceFile:399)
at dm.jdbc.a.a.a(SourceFile:273)
... 12 more
[ERROR - 2025-11-07 10:58:45.333] tid:1 - [main] { DmDriver@5a10411 } connect(DmProperties): null; [PARAMS]: {schema=ODS_DC, connecttimeout=20000, epgroup=192.168.59.128:5236=([192.168.59.128:5236 (UNKNOW, UNKNOW), sessions: 0]), language=CN, url=jdbc:dm://192.168.59.128:5236?schema=ODS_DC&logLevel=all&logDir=C:\dmdbms\log&socketTimeout=600000&connectTimeout=20000&sessionTimeout=12000, sockettimeout=600000, sessiontimeout=12000, localtimezone=480, port=5236, loglevel=all, host=192.168.59.128, driverversion=8.1.4.169, user=ODS_DC, logdir=C:\dmdbms\log}; [USED TIME]: 0.0109ms;
dm.jdbc.driver.DMException: Communication error
at dm.jdbc.driver.DBError.throwException(SourceFile:864)
at dm.jdbc.a.a.a(SourceFile:283)
at dm.jdbc.a.a.e(SourceFile:630)
at dm.jdbc.driver.DmdbConnection.openConnection(SourceFile:862)
at dm.jdbc.internal.conf.EP.connect(SourceFile:153)
at dm.jdbc.internal.conf.EPGroup$EPSelector.select(SourceFile:574)
at dm.jdbc.internal.conf.EPGroup.connect(SourceFile:380)
at dm.jdbc.driver.DmDriver.do_connect(SourceFile:198)
at dm.jdbc.filter.BaseFilter.Driver_connect(SourceFile:4571)
at dm.jdbc.filter.log.LogFilter.Driver_connect(SourceFile:15438)
at dm.jdbc.driver.DmDriver.connect(SourceFile:541)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at test.SynchronizedFetch.main(SynchronizedFetch.java:19)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:209)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at dm.jdbc.util.buffer.ByteArrayNode.load(SourceFile:129)
at dm.jdbc.util.buffer.Buffer.load(SourceFile:365)
at dm.jdbc.a.c.a(SourceFile:208)
at dm.jdbc.a.a.e(SourceFile:399)
at dm.jdbc.a.a.a(SourceFile:273)
... 12 more
2025-11-07 10:57:45.410 (EP[0] sess:0x7f6b84245b88 thrd:1516 user:SYSDBA trxid:0 stmt:0x7f6b8426c308 appname:manager.exe ip:::ffff:192.168.59.1) [ORA]: /***Manager***/ SELECT count(*),max(trxid) from SYS.SYSOBJECTS;^M
2025-11-07 10:57:45.410 (EP[0] sess:0x7f6b84245b88 thrd:1516 user:SYSDBA trxid:0 stmt:0x7f6b8426c308 appname:manager.exe ip:::ffff:192.168.59.1) GET SQL ALL PLN: /***Manager***/ SELECT count(*),max(trxid) from SYS.SYSOBJECTS;
1 #NSET2: [1, 1, 8]
2 #PRJT2: [1, 1, 8]; exp_num(2), is_atom(FALSE)
3 #AAGR2: [1, 1, 8]; grp_num(0), sfun_num(2), distinct_flag[0,0]; slave_empty(0)
4 #SSCN: [1, 2167, 8]; SYSINDEXIDSYSOBJECTS(SYSOBJECTS); btr_scan(1); is_global(0)^M
2025-11-07 10:57:45.410 (EP[0] sess:0x7f6b84245b88 thrd:1516 user:SYSDBA trxid:274204 stmt:NULL appname:manager.exe ip:::ffff:192.168.59.1) TRX: START^M
2025-11-07 10:57:45.411 (EP[0] sess:0x7f6b84245b88 thrd:1516 user:SYSDBA trxid:274204 stmt:NULL appname:manager.exe ip:::ffff:192.168.59.1) TRX: COMMIT^M
2025-11-07 10:57:45.411 (EP[0] sess:0x7f6b84245b88 thrd:1516 user:SYSDBA trxid:0 stmt:0x7f6b8426c308 appname:manager.exe ip:::ffff:192.168.59.1) [SEL] /***Manager***/ SELECT count(*),max(trxid) from SYS.SYSOBJECTS; EXECTIME: 0(ms) ROWCOUNT: 1(rows) EXEC_ID: 916.^M
2025-11-07 10:58:26.119 (EP[0] sess:0xc111138 thrd:-1 user:NULL trxid:NULL stmt:NULL appname:) ALLOC SESSION^M
2025-11-07 10:58:44.441 (EP[0] sess:0x7f6b5c133bc8 thrd:1514 user:SYSDBA trxid:0 stmt:NULL appname:manager.exe ip:::ffff:192.168.59.1) [LGN] FREE SESSION^M
2025-11-07 10:58:44.746 (EP[0] sess:0x7f6b84124f68 thrd:1579 user:SYSDBA trxid:274191 stmt:NULL appname:manager.exe ip:::ffff:192.168.59.1) [LGN] FREE SESSION^M
2025-11-07 10:58:44.746 (EP[0] sess:0x7f6b84124f68 thrd:1579 user:SYSDBA trxid:274191 stmt:NULL appname:manager.exe ip:::ffff:192.168.59.1) TRX: ROLLBACK^M
2025-11-07 10:58:45.537 (EP[0] sess:0x7f6b84245b88 thrd:1516 user:SYSDBA trxid:0 stmt:NULL appname:manager.exe ip:::ffff:192.168.59.1) [LGN] FREE SESSION^M
Exception in thread "main" dm.jdbc.driver.DMException: Communication error
at dm.jdbc.driver.DBError.throwException(SourceFile:864)
at dm.jdbc.a.a.init(SourceFile:218)
at dm.jdbc.a.a.<init>(SourceFile:185)
at dm.jdbc.driver.DmdbConnection.openConnection(SourceFile:860)
at dm.jdbc.internal.conf.EP.connect(SourceFile:153)
at dm.jdbc.internal.conf.EPGroup$EPSelector.select(SourceFile:574)
at dm.jdbc.internal.conf.EPGroup.connect(SourceFile:380)
at dm.jdbc.driver.DmDriver.do_connect(SourceFile:198)
at dm.jdbc.filter.BaseFilter.Driver_connect(SourceFile:4571)
at dm.jdbc.filter.log.LogFilter.Driver_connect(SourceFile:15438)
at dm.jdbc.driver.DmDriver.connect(SourceFile:541)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at test.SynchronizedFetch.main(SynchronizedFetch.java:19)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at dm.jdbc.a.c.d(SourceFile:110)
at dm.jdbc.a.c.b(SourceFile:68)
at dm.jdbc.a.c.g(SourceFile:1)
at dm.jdbc.a.a.init(SourceFile:212)
... 12 more
[DEBUG - 2025-11-06 21:31:51.069] tid:1 - [main] conn-1 try connect loop 0
[ASSERT - 2025-11-06 21:31:53.225] tid:1 - [main] try connect fail [192.168.59.128:5236 (UNKNOW, UNKNOW), sessions: 0]
dm.jdbc.driver.DMException: Communication error
at dm.jdbc.driver.DBError.throwException(SourceFile:864)
at dm.jdbc.a.a.init(SourceFile:218)
at dm.jdbc.a.a.<init>(SourceFile:185)
at dm.jdbc.driver.DmdbConnection.openConnection(SourceFile:860)
at dm.jdbc.internal.conf.EP.connect(SourceFile:153)
at dm.jdbc.internal.conf.EPGroup$EPSelector.select(SourceFile:574)
at dm.jdbc.internal.conf.EPGroup.connect(SourceFile:380)
at dm.jdbc.driver.DmDriver.do_connect(SourceFile:198)
at dm.jdbc.filter.BaseFilter.Driver_connect(SourceFile:4571)
at dm.jdbc.filter.log.LogFilter.Driver_connect(SourceFile:15438)
at dm.jdbc.driver.DmDriver.connect(SourceFile:541)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at test.SynchronizedFetch.main(SynchronizedFetch.java:19)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at dm.jdbc.a.c.d(SourceFile:110)
at dm.jdbc.a.c.b(SourceFile:68)
at dm.jdbc.a.c.g(SourceFile:1)
at dm.jdbc.a.a.init(SourceFile:212)
... 12 more
[ERROR - 2025-11-06 21:31:54.242] tid:1 - [main] { DmDriver@5a10411 } connect(DmProperties): null; [PARAMS]: {schema=ODS_DC, connecttimeout=20000, epgroup=192.168.59.128:5236=([192.168.59.128:5236 (UNKNOW, UNKNOW), sessions: 0]), language=CN, url=jdbc:dm://192.168.59.128:5236?schema=ODS_DC&logLevel=all&logDir=C:\dmdbms\log&socketTimeout=600000&connectTimeout=20000&sessionTimeout=12000, sockettimeout=600000, sessiontimeout=12000, localtimezone=480, port=5236, loglevel=all, host=192.168.59.128, driverversion=8.1.4.169, user=ODS_DC, logdir=C:\dmdbms\log}; [USED TIME]: 0.0101ms;
dm.jdbc.driver.DMException: Communication error
at dm.jdbc.driver.DBError.throwException(SourceFile:864)
at dm.jdbc.a.a.init(SourceFile:218)
at dm.jdbc.a.a.<init>(SourceFile:185)
at dm.jdbc.driver.DmdbConnection.openConnection(SourceFile:860)
at dm.jdbc.internal.conf.EP.connect(SourceFile:153)
at dm.jdbc.internal.conf.EPGroup$EPSelector.select(SourceFile:574)
at dm.jdbc.internal.conf.EPGroup.connect(SourceFile:380)
at dm.jdbc.driver.DmDriver.do_connect(SourceFile:198)
at dm.jdbc.filter.BaseFilter.Driver_connect(SourceFile:4571)
at dm.jdbc.filter.log.LogFilter.Driver_connect(SourceFile:15438)
at dm.jdbc.driver.DmDriver.connect(SourceFile:541)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at test.SynchronizedFetch.main(SynchronizedFetch.java:19)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at dm.jdbc.a.c.d(SourceFile:110)
at dm.jdbc.a.c.b(SourceFile:68)
at dm.jdbc.a.c.g(SourceFile:1)
at dm.jdbc.a.a.init(SourceFile:212)
... 12 more
未生成sqllog日志。
Exception in thread "main" dm.jdbc.driver.DMException: Communication error
at dm.jdbc.driver.DBError.throwException(SourceFile:864)
at dm.jdbc.a.a.a(SourceFile:283)
at dm.jdbc.a.a.a(SourceFile:1250)
at dm.jdbc.a.a.b(SourceFile:1077)
at dm.jdbc.a.a.a(SourceFile:861)
at dm.jdbc.driver.DmdbPreparedStatement.executeInner(SourceFile:443)
at dm.jdbc.driver.DmdbPreparedStatement.do_executeQuery(SourceFile:531)
at dm.jdbc.filter.BaseFilter.PreparedStatement_executeQuery(SourceFile:4681)
at dm.jdbc.filter.log.LogFilter.PreparedStatement_executeQuery(SourceFile:8119)
at dm.jdbc.driver.DmdbPreparedStatement$2.run(SourceFile:1397)
at dm.jdbc.driver.DmdbPreparedStatement$2.run(SourceFile:1)
at dm.jdbc.driver.DmdbPreparedStatement.executeQuery(SourceFile:1405)
at test.SynchronizedFetch.main(SynchronizedFetch.java:26)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:209)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at dm.jdbc.util.buffer.ByteArrayNode.load(SourceFile:129)
at dm.jdbc.util.buffer.Buffer.load(SourceFile:365)
at dm.jdbc.a.c.a(SourceFile:208)
at dm.jdbc.a.a.e(SourceFile:399)
at dm.jdbc.a.a.a(SourceFile:273)
... 11 more
[DEBUG - 2025-11-06 21:39:22.918] tid:1 - [main] conn-1 try connect loop 0
[DEBUG - 2025-11-06 21:39:24.133] tid:1 - [main] { conn-1 } access(); CMD_STARTUP
[DEBUG - 2025-11-06 21:39:25.018] tid:1 - [main] { conn-1 } access(); CMD_LOGIN
[DEBUG - 2025-11-06 21:39:25.047] tid:1 - [main] try connect success [192.168.59.128:5236 (NORMAL, OPEN, DSC CONTROL), sessions: 0]
[INFO - 2025-11-06 21:39:25.056] tid:1 - [main] { DmDriver@5a10411 } connect(DmProperties): conn-1, sessionID-0x7f4d0808a0e8(139968823992552); [PARAMS]: {schema=ODS_DC, lastloginip=, svrstat=4, language=CN, globalserverseries=7, lastlogintime=, svrmode=0, dsccontrol=true, sessiontimeout=12000, clientuser=ODS_DC, localtimezone=480, host=192.168.59.128, driverversion=8.1.4.169, logdir=C:\dmdbms\log, loginwarningid=0, connecttimeout=20000, epgroup=192.168.59.128:5236=([192.168.59.128:5236 (NORMAL, OPEN, DSC CONTROL), sessions: 0]), lifetimeremainder=-1, gracetimeremainder=0, failedattempts=0, serverversion=8.1.4.116, clienthostname=192.168.59.128, url=jdbc:dm://192.168.59.128:5236?schema=ODS_DC&logLevel=all&logDir=C:\dmdbms\log&socketTimeout=600000&connectTimeout=20000&sessionTimeout=12000, applicationname=, sockettimeout=600000, instancename=DMCSDB, dbname=DAMENG, port=5236, loglevel=all, guid=91D4302991D43029FF8142C47841ABD7, user=ODS_DC}; [USED TIME]: 0.0118ms;
[DEBUG - 2025-11-06 21:39:25.066] tid:1 - [main] { conn-1 } access(); CMD_STMT_ALLOCATE
[DEBUG - 2025-11-06 21:39:25.067] tid:1 - [main] { conn-1 } access(); CMD_PREPARE
[SQL - 2025-11-06 21:39:25.082] tid:1 - [main] { conn-1 } prepareStatement(String): pstmt-1, handle-0, sessionID-0x7f4d0808a0e8(139968823992552); [PARAMS]: "select count(*) from (select a.id,b.name from dm1 a left join dm2 b on b.id>1)c left join dm1 d on c.id>1;"; [USED TIME]: 24.7899ms;
[DEBUG - 2025-11-06 21:39:25.082] tid:1 - [main] { conn-1 } access(); CMD_EXECUTE2
[ERROR - 2025-11-06 21:39:34.061] tid:1 - [main] { conn-1, pstmt-1 } executeQuery(); [USED TIME]: 8979.1502ms; [EXEC_ID]: 0;
dm.jdbc.driver.DMException: Communication error
at dm.jdbc.driver.DBError.throwException(SourceFile:864)
at dm.jdbc.a.a.a(SourceFile:283)
at dm.jdbc.a.a.a(SourceFile:1250)
at dm.jdbc.a.a.b(SourceFile:1077)
at dm.jdbc.a.a.a(SourceFile:861)
at dm.jdbc.driver.DmdbPreparedStatement.executeInner(SourceFile:443)
at dm.jdbc.driver.DmdbPreparedStatement.do_executeQuery(SourceFile:531)
at dm.jdbc.filter.BaseFilter.PreparedStatement_executeQuery(SourceFile:4681)
at dm.jdbc.filter.log.LogFilter.PreparedStatement_executeQuery(SourceFile:8119)
at dm.jdbc.driver.DmdbPreparedStatement$2.run(SourceFile:1397)
at dm.jdbc.driver.DmdbPreparedStatement$2.run(SourceFile:1)
at dm.jdbc.driver.DmdbPreparedStatement.executeQuery(SourceFile:1405)
at test.SynchronizedFetch.main(SynchronizedFetch.java:26)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:209)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at dm.jdbc.util.buffer.ByteArrayNode.load(SourceFile:129)
at dm.jdbc.util.buffer.Buffer.load(SourceFile:365)
at dm.jdbc.a.c.a(SourceFile:208)
at dm.jdbc.a.a.e(SourceFile:399)
at dm.jdbc.a.a.a(SourceFile:273)
... 11 more
2025-11-06 21:39:24.547 (EP[0] sess:0x7f4d0808a0e8 thrd:-1 user:NULL trxid:NULL stmt:NULL appname:) ALLOC SESSION^M
2025-11-06 21:39:26.561 (EP[0] sess:0x7f4d0808a0e8 thrd:3961 user:NULL trxid:0 stmt:NULL appname:) STARTUP^M
2025-11-06 21:39:26.577 (EP[0] sess:0x7f4d0808a0e8 thrd:3961 user:ODS_DC trxid:0 stmt:NULL appname: ip:::ffff:192.168.59.1) [LGN] LOGIN^M
2025-11-06 21:39:26.621 (EP[0] sess:0x7f4d0808a0e8 thrd:3961 user:ODS_DC trxid:0 stmt:NULL appname: ip:::ffff:192.168.59.1) ALLOC STMT^M
2025-11-06 21:39:26.623 (EP[0] sess:0x7f4d0808a0e8 thrd:3961 user:ODS_DC trxid:0 stmt:0x7f4d080ab5a0 appname: ip:::ffff:192.168.59.1) [ORA]: select count(*) from (select a.id,b.name from dm1 a left join dm2 b on b.id>1)c left join dm1 d on c.id>1;^M
2025-11-06 21:39:26.626 (EP[0] sess:0x7f4d0808a0e8 thrd:3961 user:ODS_DC trxid:270016 stmt:NULL appname: ip:::ffff:192.168.59.1) TRX: START^M
2025-11-06 21:39:26.634 (EP[0] sess:0x7f4d0808a0e8 thrd:3961 user:ODS_DC trxid:270016 stmt:0x7f4d080ab5a0 appname: ip:::ffff:192.168.59.1) GET SQL NEW PLN: select count(*) from (select a.id,b.name from dm1 a left join dm2 b on b.id>1)c left join dm1 d on c.id>1;
1 #NSET2: [9223372036854775808, 1, 56]
2 #PRJT2: [9223372036854775808, 1, 56]; exp_num(1), is_atom(FALSE)
3 #AAGR2: [9223372036854775808, 1, 56]; grp_num(0), sfun_num(1), distinct_flag[0]; slave_empty(0)
4 #NEST LOOP LEFT JOIN2: [9223372036854775808, 2500000000000, 56]; join condition(C.ID > 1) partition_keys_num(0) ret_null(0)
5 #PRJT2: [26860853974, 50000000, 56]; exp_num(1), is_atom(FALSE)
6 #NEST LOOP LEFT JOIN2: [26860853974, 50000000, 56]; partition_keys_num(0) ret_null(0)
7 #CSCN2: [105, 1000000, 4]; INDEX33557560(DM1 as A); btr_scan(1)
8 #SLCT2: [1, 50, 52]; B.ID > 1
9 #CSCN2: [1, 1000, 52]; INDEX33557561(DM2 as B); btr_scan(1)
10 #CSCN2: [104, 1000000, 0]; INDEX33557560(DM1 as D); btr_scan(1)^M
2025-11-06 21:39:26.635 (EP[0] sess:0x7f4d0808a0e8 thrd:3961 user:ODS_DC trxid:270016 stmt:0x7f4d080ab5a0 appname: ip:::ffff:192.168.59.1) [SEL] select count(*) from (select a.id,b.name from dm1 a left join dm2 b on b.id>1)c left join dm1 d on c.id>1;^M
2025-11-06 21:39:26.639 (EP[0] sess:0x7f4d0808a0e8 thrd:3961 user:ODS_DC trxid:270016 stmt:0x7f4d080ab5a0 appname: ip:::ffff:192.168.59.1) DLCK used time:6(us)^M
~
不同场景应用、驱动和sqllog日志表现不同。
场景1:
sql执行超时。超时时间受socketTimeout控制,应用日志:Caused by: java.net.SocketTimeoutException: Read timed out,驱动日志:[ERROR - 2025-11-06 20:03:06.448] tid:1 - [main] { conn-1, pstmt-1 } executeQuery(); [USED TIME]: 60014.9384ms; [EXEC_ID]: 0;达梦sqllog日志中sql执行失败,报错:[ERR(-6007)]。
场景2:
Sql执行过程中和数据库通信断开(sql执行耗时超过socketTimeout),sql执行过程中,断开应用和数据库服务器的通信,sql会继续执行,直到超过socketTimeout才报错。应用日志:Caused by: java.net.SocketTimeoutException: Read timed out,驱动日志:[ERROR - 2025-11-06 20:36:46.732] tid:1 - [main] { conn-1, pstmt-1 } executeQuery(); [USED TIME]: 600008.9727ms; [EXEC_ID]: 0;达梦sqllog日志中sql执行失败,报错:[ERR(-6007)]。
场景3:
Sql执行过程中和数据库通信断开(sql执行耗时未超过socketTimeout),sql会继续执行,执行结束后先不报错,超过socketTimeout后才报错。应用日志:Caused by: java.net.SocketException: Connection reset,驱动日志:[ASSERT - 2025-11-07 10:58:44.317] tid:1 - [main] try connect fail [192.168.59.128:5236 (UNKNOW, UNKNOW), sessions: 0] 。达梦sqllog中sql执行完成,无报错。
场景4:
数据库关闭时应用访问数据库,立即报错。应用日志:Caused by: java.net.ConnectException: Connection refused: connect,驱动日志:[ASSERT - 2025-11-06 21:31:53.225] tid:1 - [main] try connect fail [192.168.59.128:5236 (UNKNOW, UNKNOW), sessions: 0] 。达梦sqllog无日志生成。
场景5:
应用访问过程中关闭数据库,立即报错。应用日志:Caused by: java.net.SocketException: Connection reset,驱动日志:[DEBUG - 2025-11-06 21:39:25.047] tid:1 - [main] try connect success [192.168.59.128:5236 (NORMAL, OPEN, DSC CONTROL), sessions: 0]。kill数据库后不再生成新的sqllog日志。
场景1和场景2,一定和sql性能差,sql执行超时有关,场景2不排除应用服务器和数据库服务器通信存在波动可能。注:有些监控平台会定时访问数据库,确认数据库状态正常,不做任何操作,创建连接完成后立刻销毁连接,也会偶发性报网络通信异常,应用报错信息和场景1、场景2相同,数据库实际未发生故障(SQL未超时),驱动和数据库版本差距不大,一般为网络响应延迟应用等待数据库响应超时引起,可适当调大socketTimeout参数。
场景3一定是应用服务器和数据库服务器通信存在波动。
还有一种不方便模拟的场景,sql执行未超时但应用报Caused by: java.net.SocketTimeoutException: Read timed out。这种一般是因为结果集传输过程阻塞,SQL返回大量数据(如百万行),网络带宽不足或延迟高,可以添加重试机制SWITCH_TIMES=3&SWITCH_INTERVAL=1000绕过。
也可以通过在数据库服务器配置定时job,每秒连接一次数据库,直接排除数据库存在异常可能。
vi /home/dmdba/test_conn.sh
#!/bin/bash
/home/dmdba/dmdbms/bin/disql SYSDBA/Dameng123@localhost:5236 -e 'select 1'
--crontab 每秒执行 确认数据库连接正常 用>> 追加日志,一个>会被覆盖
crontab -e
*/1 * * * * /home/dmdba/test_conn.sh >> /home/dmdba/test_conn.log
--查看配置信息
crontab -l
文章
阅读量
获赞
