java连oracle数据库事务重置连接时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java连oracle数据库事务重置连接时间相关的知识,希望对你有一定的参考价值。

参考技术A 1、右键开始菜单,选择控制面板。
2、找到日期和时间,点击进入。
3、点击更改日期和时间。
4、进入后,修改日期时间,保存即可。
5、以上就是java连oracle数据库事务重置连接时间的方法。

Oracle 11g 连接重置错误

【中文标题】Oracle 11g 连接重置错误【英文标题】:Oracle 11g connection reset error 【发布时间】:2013-03-06 02:08:39 【问题描述】:

尝试使用瘦 jdbc 驱动程序在 64 位 Red Hat Linux 上连接到 Oracle 11g 时看到以下错误。如果有人能更多地了解如何解决这个问题,我们将不胜感激。

 Caused by: java.net.SocketException: Connection reset
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
    at oracle.net.ns.DataPacket.send(DataPacket.java:199)
    at oracle.net.ns.NetOutputStream.flush(NetOutputStream.java:211)
    at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:227)
    at oracle.net.ns.NetInputStream.read(NetInputStream.java:175)
    at oracle.net.ns.NetInputStream.read(NetInputStream.java:100)
    at oracle.net.ns.NetInputStream.read(NetInputStream.java:85)
    at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:123)
    at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:79)
    at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1122)
    at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1099)
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:288)
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191)
    at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:366)
    at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:752)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:366)

【问题讨论】:

【参考方案1】:

我们有一些非常相似的东西,将程序从 32 位操作系统移到 64 位操作系统,并且许多并发进程会抛出 IO 错误:连接重置。

偶然发现了这个问题:

https://community.oracle.com/message/3701989

基本加上 -Djava.security.egd=file:/dev/./urandom 参数就好了:)

【讨论】:

【参考方案2】:

您没有提供问题的任何细节,比如发生了什么变化?这是您的新配置还是突然停止工作?你知道你是否有足够的可用连接吗?每次连接都会发生这种情况还是间歇性的?

考虑到错误是在登录过程中发生的,有几种可能:

    网络故障 您已用尽最大连接数,因此 Oracle 挂断了您。 防火墙限制 数据库服务器或侦听器出现问题。为您的会话提供服务的处理在打开后可能会崩溃。

查看以下 *** 线程,了解如何检查活动连接数和最大连接数。如果这是问题所在,我预计会出现“ORA-00018:超出最大会话数”错误,所以它可能不是。但值得一试。

How to check the maximum number of allowed connections to an Oracle database?

【讨论】:

改变的是 oracle ojdbc jars。它有点间歇性,就像我手动运行批处理作业一样,大多数时候它工作正常,但是当它通过 cron 调度程序执行时,我看到了上述错误。 连接池化了吗?尝试查看所有连接是否相同。 无论如何,这个问题只发生在 Red hat linux 上,在 Windows 上可以正常工作。 好的,检查Linux机器上的网络配置。如果它是现有连接,我会怀疑空闲套接字超时。但是由于它是在连接启动时发生的,所以它必须是别的东西。如果机器不是面向公众的,您可以暂时禁用 iptables 以查看问题是否消失? 我可以通过将此参数添加到 Hotspot JVM 来解决它:-Djava.security.egd=file:/dev/./urandom【参考方案3】:

我在使用 Sqoop Oracle 导入时遇到了类似的问题,我已经实施了 link 建议的修复程序

此设置有助于解决问题:

-Dmapred.child.java.opts="-Djava.security.egd=file:///dev/urandom"

并且我已将 mapred-site.xml 配置属性名称值更改为:

mapreduce.admin.map.child.java.opts -Djava.security.egd=file:///dev/urandom

这有点特定于 sqoop,但我认为设置 JVM 选项 -Djava.security.egd=file:///dev/urandom" 将帮助您解决问题。

【讨论】:

这是对我来说就像魅力一样的正确答案;虽然我使用了这个:-Djava.security.egd=file:/dev/./urandom【参考方案4】:

由于堆栈未指示任何 ORA,因此您存在潜在的网络问题。

【讨论】:

可能与没有适当的平台特定 ojdbc jar 有关。我在哪里可以找到适合 Oracle 11g 的 ojdbc jar?另外,有什么方法可以开始解决网络问题? 不,Net8 协议总是一样的。从 Oracle 网站获取 11.2.0.3.0 驱动程序。 如果没有 ORA 是网络问题,总是这样吗? ORA 是否可以由于某种原因被省略并且可能看不到? @Navigatron,我不知道,但这是我的观察。您应该能够在 Oracle 跟踪文件中看到相同的内容。【参考方案5】:

导致我出现此问题的其他原因是 HOSTNAME 设置错误。我的连接尝试挂在:

"main" prio=10 tid=0x00007f7cc8009000 nid=0x2f3a runnable [0x00007f7cce69e000]
   java.lang.Thread.State: RUNNABLE
        at java.net.Inet4AddressImpl.getLocalHostName(Native Method)
        at java.net.InetAddress.getLocalHost(InetAddress.java:1444)
        at sun.security.provider.SeedGenerator$1.run(SeedGenerator.java:176)
        at sun.security.provider.SeedGenerator$1.run(SeedGenerator.java:162)
        at java.security.AccessController.doPrivileged(Native Method)

所以请确保您在 /etc/hosts/ 中有一个主机名条目。

如果您发出这样的hostname 命令:

$ hostname
my.server.com

您需要在/etc/hosts 中添加一行:

127.0.0.1 my my.server.com

【讨论】:

【参考方案6】:

在我的应用程序中,我创建了两次 BasicDataSource,但使用 java 1.8 32 位失败。当我迁移到 java 1.8 64 位时,问题得到了解决

【讨论】:

以上是关于java连oracle数据库事务重置连接时间的主要内容,如果未能解决你的问题,请参考以下文章

从客户端java读取数据时连接重置错误[重复]

plsql能远程连上oracle数据库,java程序连不上

事务处理

您好,您提问过的问题:plsql能远程连上oracle数据库,java程序连不上,是怎么解决的?

java连oracle中连不上,错误是“无法从套接字读取更多的数据”,是啥问题?

PLSQL可以连接上本地的ORACLE,但是JAVA连不上。