Я не могу подключиться к базе данных 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.
Любая помощь могла бы быть полезна.
--Сэм
orcl
определяется в вашемtnsnames.ora
файле? Имя хоста, порта и службы, которые вы используете для JDBC, должны соответствовать им. Вы запускаете Glassfish на том же сервере, на котором работаете SQL * Plus? (Кстати, странно, что вы подключаетесь какsystem
, особенно через JDBC; вам не следует использовать схемыsys
илиsystem
для ваших собственных таблиц и т. Д., Вам следует создать нового пользователя и использовать его вместо этого). - person Alex Poole   schedule 06.12.2013jdbc:oracle:thin:@//localhost.localdomain:1521/orcl
? Я все еще предполагаю, что Java работает на том же хосте, что и БД. - person Alex Poole   schedule 06.12.2013HOST=::1
); снова из документации, 11g JDBC драйвер поддерживает IPv6, но, возможно, ваша JVM не поддерживает или вместо этого использует адрес IPv4? Не знаю, как это проверить или решить. Я думаю, вы могли бы попробовать указать хост как[::1]
, но не уверен. В противном случае проверьте версию драйвера JDBC и поддерживает ли Glassfish IPv6; или изменить прослушиватель, чтобы он тоже использовал IPv4? - person Alex Poole   schedule 06.12.2013