Ошибка соединения jdbc с Oracle

Я не могу подключиться к базе данных Oracle с помощью jdbc.

Ошибка: не удалось подключиться к базе данных по адресу jdbc: oracle: thin: @ localhost.localdomain: 1521: orcl (имя пользователя: system, пароль: tiger)

Однако я могу подключить его с помощью команды sqlplus.

Вот журнал:

java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
Version = Sun GlassFish Enterprise Server v2.1
Testing Database Connection ...
  -- Failure! java.sql.SQLException: Io exception: The Network Adapter could not establish the connection

Вот listener.ora:

 LISTENER =
 (DESCRIPTION_LIST =
 (DESCRIPTION =
   (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
   (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /home/oracle/app/oracle

Вывод lsnrctl:

Listening Endpoints Summary...
 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=::1)(PORT=1521)))
 Services Summary...
 Service "orcl" has 1 instance(s).
 Instance "orcl", status READY, has 1 handler(s) for this service...
 Service "orclXDB" has 1 instance(s).
 Instance "orcl", status READY, has 1 handler(s) for this service...
 The command completed successfully

Содержание tnsnames.ora:

 ORCL =
   (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

Я использую Oracle 11g, glassfish server 2.1, Redhat linux enterprise edition 6.

Любая помощь могла бы быть полезна.

--Сэм


person Sam    schedule 06.12.2013    source источник
comment
вы можете предоставить трассировку стека ??   -  person Prabhakar Manthena    schedule 06.12.2013
comment
Прабхакар: Я пропустил содержимое журнала, отредактировав вопрос.   -  person Sam    schedule 06.12.2013
comment
Здесь похоже ваше имя хоста или номер порта неверны. Вы проверяли, есть ли у пользователя доступ ??? Вы можете разместить образец кода подключения?   -  person Prabhakar Manthena    schedule 06.12.2013
comment
вот он: sqlplus system / tiger @ orcl SQL * Plus: Выпуск 11.2.0.1.0 Производство в пятницу 6 декабря 17:16:44 2013 Copyright (c) 1982, 2009, Oracle. Все права защищены. Подключено к: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64-разрядная производственная среда с опциями разбиения на разделы, OLAP, интеллектуального анализа данных и тестирования реальных приложений SQL ›   -  person Sam    schedule 06.12.2013
comment
Пожалуйста, помещайте новую информацию в вопрос, а не в комментарии, так как ее сложно читать и отслеживать. Как orcl определяется в вашем tnsnames.ora файле? Имя хоста, порта и службы, которые вы используете для JDBC, должны соответствовать им. Вы запускаете Glassfish на том же сервере, на котором работаете SQL * Plus? (Кстати, странно, что вы подключаетесь как system, особенно через JDBC; вам не следует использовать схемы sys или system для ваших собственных таблиц и т. Д., Вам следует создать нового пользователя и использовать его вместо этого).   -  person Alex Poole    schedule 06.12.2013
comment
@alex: в вопрос добавлено необходимое содержимое файлов. Я пробовал созданный мной test_user, но безуспешно.   -  person Sam    schedule 06.12.2013
comment
Я думал, что то, что у вас есть, сработает, но можете ли вы попробовать тонкий синтаксис имени службы, например: jdbc:oracle:thin:@//localhost.localdomain:1521/orcl? Я все еще предполагаю, что Java работает на том же хосте, что и БД.   -  person Alex Poole    schedule 06.12.2013
comment
@alexpoole: такая же ошибка с этим синтаксисом. Да, Java находится на той же машине   -  person Sam    schedule 06.12.2013
comment
Ваш слушатель использует только IPv6 (от HOST=::1); снова из документации, 11g JDBC драйвер поддерживает IPv6, но, возможно, ваша JVM не поддерживает или вместо этого использует адрес IPv4? Не знаю, как это проверить или решить. Я думаю, вы могли бы попробовать указать хост как [::1], но не уверен. В противном случае проверьте версию драйвера JDBC и поддерживает ли Glassfish IPv6; или изменить прослушиватель, чтобы он тоже использовал IPv4?   -  person Alex Poole    schedule 06.12.2013


Ответы (2)


Попробуйте заменить localhost.localdomain на localhost в строке подключения, т.е.

jdbc:oracle:thin:@localhost:1521:orcl

Я тоже получаю The Network Adapter could not establish the connection ошибку, если использую localhost.localdomain в качестве адреса, и исчезает, если я использую только localhost.

person Luke Woodward    schedule 06.12.2013

Тестовое задание :

 telnet localhost 1521

и если это не сработает

Установите iptables:

https://exploringspatial.wordpress.com/2013/06/08/installing-oracle-sql-developer/

person pckmn    schedule 04.12.2015