【发布时间】:2013-12-06 10:31:49
【问题描述】:
我无法使用 jdbc 连接到 oracle 数据库。
错误: 无法连接到 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 企业版 6。
任何帮助将不胜感激。
--山姆
【问题讨论】:
-
你能提供stacktrace吗??
-
Prabhakar:我已经通过编辑问题过去了日志内容。
-
这里好像是你的主机名或端口号有误。你检查过用户是否有权限吗???你可以发布示例连接代码吗??
-
这里是:sqlplus system/tiger@orcl SQL*Plus:2013 年 12 月 6 日星期五 17:16:44 发布 11.2.0.1.0 生产 版权所有 (c) 1982, 2009, Oracle。版权所有。连接到:Oracle 数据库 11g 企业版 11.2.0.1.0 - 64 位生产,带有分区、OLAP、数据挖掘和真正的应用程序测试选项 SQL>
-
请在问题中输入新信息,而不是在 cmets 中,因为它很难阅读和跟踪。
orcl在您的tnsnames.ora文件中是如何定义的?您用于 JDBC 的主机、端口和服务名称需要与它们匹配。您是否在运行 SQL*Plus 的同一台服务器上运行 Glassfish? (顺便说一句,您以system的身份连接很奇怪,尤其是通过 JDBC;您不应该为自己的表等使用sys或system模式,您应该创建一个新用户并改用它) .