jdbc查询oracle模式下内存溢出

【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】OB
【问题描述】相同的jdbc代码,查询相同的表,数据量1亿作用,直连oracle数据库查询没有问题,用oceanbase oracle模式查询内存溢出(已设置相关参数)
【复现路径】
public void run(SourceContext sourceContext) throws Exception {
try (Connection conn = DriverManager.getConnection(“jdbc:oceanbase:loadbalance://xxx:xx/xx?characterEncoding=UTF-8”, “xxx”, “xxx”)) {
try (Statement stmt = conn.prepareStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)) {
stmt.setFetchSize(5000);
try (ResultSet rs = stmt.executeQuery("select * from hdp.test01 ")) {
ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount();
while (rs.next()) {
HashMap rowMap = new HashMap();
for (int i = 1; i <= columnCount; i++) {
String value = rs.getObject(i) != null ? rs.getObject(i).toString() : null;
rowMap.put(md.getColumnName(i), value);
}
sourceContext.collect(rowMap.toString());
}
} catch (SQLException e) {
e.printStackTrace();
throw new Exception(e);
}
}
} catch (SQLException e) {
e.printStackTrace();
throw new Exception(e);
}
}

        @Override
        public void cancel() {
        }
    };

【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(系统巡检和诊断信息收集)

这里使用的OceanBase是什么版本?是用的企业版的OceanBase吗?

如果能发一下报错日志 会更好一些。

oracle模式属于企业版模式。建议你通过以下方式寻求帮助:
1.如你所在的企业客户已签署OceanBase企业版销售合同,请你联系客户经理;
2.如你所在的企业客户尚未签署OceanBase企业版销售合同,你可通过OceanBase官网商务咨询页面留下你的联系方式,OceanBase企业版的业务顾问会在一个工作日内与你联系。
OceanBase官网商务咨询

另外 代码调整为类似下面这种写法试试:

stmt = conn.prepareStatement("select * from bigTable", ResultSet.TYPE_FORWARD_ONLY,  ResultSet.CONCUR_READ_ONLY);

stmt.setFetchSize(Integer.MIN_VALUE);
stmt.setFetchDirection(ResultSet.FETCH_REVERSE);