java无法获取套接字_Caused by: java.sql.SQLException: 无法从套接字读取更多的数据

最近一个月从两个不同的地方碰到了相同的报错,更加巧合的是相关人员都执行了相同的参数修改,并且其中一个客户因随意修改参数导致数据库的大量sql执行计划抖动,应用受到极大影响。。

报错如下:Caused by: java.sql.SQLException: 无法从套接字读取更多的数据

这个报错为前端应用报错,因为报错太明确了,所以猜测他们都直接搜索,然后就直接用了,修改的参数为

_optimizer_connect_by_cost_based

这边一定要注意,修改oracle的隐含参数一定要谨慎,尤其是_optimizer开头的和优化器相关的参数,稍有不慎,就会出现开头出现的情况。

并且实际上修改完这个参数后,并没有用处。

这个报错一直在前台持续,对应的时间点alert日志中显示如下:

Dump continued from file: /u01/app/oracle/diag/rdbms/XX/XX/XXX_ora_1466.trc

ORA-07445: 出现异常错误: 核心转储 [evaopn3()+135] [SIGSEGV] [ADDR:0x4] [PC:0x98244A7] [Address not mapped to object] []

查看这个trc文件,可以找到引发这个报错的sql。

ORA-7445这种建议在官方文档中搜索资料,大部分情况都有收录,找到对应的

Doc ID 22611354.8

AND

Doc ID 1943615.1

可以确认这是一个bug,官方建议修改参数为

不过在确认sql的情况下,我们基本上不会在数据库级别去该参数。我们会通过hint的方式,在sql级别去应用,如下所示:

如果是create table ,那么加上

/*+ OPT_PARAM('_pred_move_around','FALSE') */

如果是select查询,那么加上

/*+OPT_PARAM('_optimizer_join_elimination_enabled' 'false')*/

然后通知开发修改应用的sql,达成目的。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值