创建索引的时候出现的错误

<OFMsg>251658517"1"1190570570894"603984231"0"1563268982" col_7451" col_7451.JDBC_62119" zjw-se1" BaseException.java"-1"3 com.microsoft.sqlserver.jdbc.SQLServerException: 系统内存不足。请对大型 ResultSet 使用服务器端游标: 。ResultSet 大小:266,708,558。JVM 总内存大小:1,074,133,504。"3 com.microsoft.sqlserver.jdbc.SQLServerException: 系统内存不足。请对大型 ResultSet 使用服务器端游标: 。ResultSet 大小:266,708,558。JVM 总内存大小:1,074,133,504。

   at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)

   at com.microsoft.sqlserver.jdbc.DBComms.receive(Unknown Source)

   at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)

   at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PreparedStatementExecutionRequest.executeStatement(Unknown Source)

   at com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Unknown Source)

   at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Unknown Source)

   at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(Unknown Source)

   at com.ibm.es.crawler.db2.jdbc.DB2AbstractCursor.open(Unknown Source)

   at com.ibm.es.crawler.db2.DB2AbstractFetcher.connect(Unknown Source)

   at com.ibm.es.crawler.FetcherAdapter.connect(Unknown Source)

   at com.ibm.es.crawler.archive.ArchiveFileFetcher.connect(Unknown Source)

   at com.ibm.es.crawler.DSThread.doJob(Unknown Source)

   at com.ibm.es.crawler.DSActiveThread.doMainTask(Unknown Source)

   at com.ibm.es.crawler.DSActiveThread.analyzeTask(Unknown Source)

   at com.ibm.es.crawler.DSActiveThread.handleRequest(Unknown Source)

   at com.ibm.es.crawler.DSThread.run(Unknown Source)

   at java.lang.Thread.run(Thread.java:570)

""</OFMsg>

<OFMsg>67113083"1"1190570570894"603984231"0"1563268982" col_7451" col_7451.JDBC_62119" zjw-se1" BaseException.java"-1"3 jdbc:sqlserver://192.168.1.225:1433;DatabaseName=testdb"0 0"3 ""</OFMsg>

<OFMsg>251658517"1"1190570570894"603984231"0"1563268982" col_7451" col_7451.JDBC_62119" zjw-se1" BaseException.java"-3"3 com.microsoft.sqlserver.jdbc.SQLServerException: 系统内存不足。请对大型 ResultSet 使用服务器端游标: 。ResultSet 大小:266,708,558。JVM 总内存大小:1,074,133,504。"3 com.microsoft.sqlserver.jdbc.SQLServerException: 系统内存不足。请对大型 ResultSet 使用服务器端游标: 。ResultSet 大小:266,708,558。JVM 总内存大小:1,074,133,504。

   at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)

   at com.microsoft.sqlserver.jdbc.DBComms.receive(Unknown Source)

   at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)

   at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PreparedStatementExecutionRequest.executeStatement(Unknown Source)

   at com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Unknown Source)

   at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Unknown Source)

   at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(Unknown Source)

   at com.ibm.es.crawler.db2.jdbc.DB2AbstractCursor.open(Unknown Source)

   at com.ibm.es.crawler.db2.DB2AbstractFetcher.connect(Unknown Source)

   at com.ibm.es.crawler.FetcherAdapter.connect(Unknown Source)

   at com.ibm.es.crawler.archive.ArchiveFileFetcher.connect(Unknown Source)

   at com.ibm.es.crawler.DSThread.doJob(Unknown Source)

   at com.ibm.es.crawler.DSActiveThread.doMainTask(Unknown Source)

   at com.ibm.es.crawler.DSActiveThread.analyzeTask(Unknown Source)

   at com.ibm.es.crawler.DSActiveThread.handleRequest(Unknown Source)

   at com.ibm.es.crawler.DSThread.run(Unknown Source)

   at java.lang.Thread.run(Thread.java:570)

""</OFMsg>

<OFMsg>67113083"1"1190570570894"603984231"0"1563268982" col_7451" col_7451.JDBC_62119" zjw-se1" BaseException.java"-3"3 jdbc:sqlserver://192.168.1.225:1433;DatabaseName=testdb"0 0"3 ""</OFMsg>

<OFMsg>67111889"1"1190570570894"603981768"0"1563268982" col_7451" col_7451.JDBC_62119" zjw-se1" BaseException.java"-1""</OFMsg>

<OFMsg>67111875"1"1190570570894"603984415"0"1563268982" col_7451" col_7451.JDBC_62119" zjw-se1" com.ibm.es.crawler.DSThread.java"0"3 jdbc:sqlserver://192.168.1.225:1433;DatabaseName=testdb"3 dbo.yanjiushi""</OFMsg>

 

 

 

原因:

造成此错误的原因是由于SQLSERVER 提供的JDBC数据源驱动程序,在默认情况下,将结果集一次性全部取到内存中,所以当大结果集的时候,将会耗费大量JVM内存,导致JVM系统内存不足。

 

解决方法:

为了解决这个问题,我们可以采用服务器端游标的方式打开结果集,那么要如何来设置呢?

 

我们可以通过编辑数据源XML文件来实现

1.    找到数据源的XML文件,从日志里可以知道相应的数据源XML文件如

..\master_config\col_7451.JDBC_62119\jdbccrawler.xml

2.    备份文件后,用文本编辑器打开文件,找到如下字符串

<Server Name="jdbc:sqlserver://192.168.1.225:1433;DatabaseName=testdb" ID="s1190270547112" ><DBURL>jdbc:sqlserver://192.168.1.225:1433;DatabaseName=testdb</DBURL>

 

3.    在找到的数据库URL里添加用服务器端游标的方法选项

;selectMethod=cursor

添加选项后,上述字符串变为

<Server Name="jdbc:sqlserver://192.168.1.225:1433;DatabaseName=testdb;selectMethod=cursor" ID="s1190270547112" ><DBURL>jdbc:sqlserver://192.168.1.225:1433;DatabaseName=testdb;selectMethod=cursor</DBURL>

4.    保存文件,停止Crawler,重新启动后,再次爬寻数据源。FFQD4219E错误就不再出现

 

 

注意:此问题只存在于MS SQLSERVER,其它关系型数据库无此问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值