Ошибка сброса соединения Oracle 11g
Я вижу приведенную ниже ошибку при попытке подключиться к Oracle 11g на Red Hat Linux, 64-бит, используя тонкие драйверы jdbc. Был бы очень признателен, если кто-нибудь может пролить больше света на то, как решить эту проблему.
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)
6 ответов
вы не включили какие-либо детали проблемы, например, что изменилось? Это новая конфигурация для вас или она внезапно перестала работать? Вы знаете, есть ли у вас достаточно доступных соединений? Это происходит с каждым соединением или оно прерывистое?
учитывая, что ошибка возникает во время процесса входа в систему, несколько возможностей:
- сеть вина
- вы исчерпали максимальное количество соединений, поэтому Oracle вешает трубку вы.
- ограничения брандмауэра
- проблема с сервером базы данных или слушателя. Обработка, обслуживающая ваш сеанс, может завершиться сбоем после его открытия.
Проверьте следующий поток stackoverflow о том, как проверить количество активных соединений и макс. Я ожидал бы ошибки "ORA-00018: максимальное количество сеансов превышено", если бы это было проблемой, поэтому это может быть не так. Но это стоит проверить.
как проверьте максимальное количество разрешенных подключений к базе данных Oracle?
У нас было что-то очень похожее, переместил программу с 32-битной на 64-битную ОС, и ряд параллельных процессов вызвал бы ошибку ввода-вывода: сброс соединения.
наткнулся на это, который исправил его:
https://community.oracle.com/message/3701989
в основном добавьте-Djava.безопасность.egd=файл: / dev/.параметр / urandom и хорошо идти:)
я столкнулся с аналогичной проблемой с импортом Sqoop Oracle, и я реализовал исправление, предложенное этим ссылке
этот параметр помог решить проблему:
-Dmapred.child.java.opts="-Djava.security.egd=file:///dev/urandom"
и я изменил mapred-сайт.значение имени свойства конфигурации xml как:
mapreduce.admin.map.child.java.opts -Djava.security.egd=file:///dev/urandom
Это немного специфично для sqoop, но я думаю, что настройка опции JVM
-Djava.security.egd=file:///dev/urandom"
поможет вам решить проблему.
была такая же проблема-не удалось в Linux (иногда), работал на Windows (всегда).
читайте о причине (и решении) на этих сайтах:
другая вещь, которая вызывала у меня эту проблему, былахоста настройки неправильно. Моя попытка подключения была повешена на:
"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.run(SeedGenerator.java:176)
at sun.security.provider.SeedGenerator.run(SeedGenerator.java:162)
at java.security.AccessController.doPrivileged(Native Method)
поэтому убедитесь, что у вас есть запись для вашего хоста в /etc/hosts/
.
если вы такой:
$ hostname
my.server.com
вам нужна строка в вашем /etc/hosts
:
127.0.0.1 my my.server.com