【发布时间】:2015-06-02 16:26:01
【问题描述】:
我刚刚在 Windows 7 上安装了 Oracle Database 11g 第 2 版。
我在 Oracle SQL Developer 中,我正在尝试创建一个新连接,但是当我单击 “连接” 时,我收到消息:“状态:失败 -测试失败:网络适配器无法建立连接”。
在连接窗口中,我尝试将角色更改为 SYSDBA、操作系统身份验证、端口和 SID,但即使更改了这些值,我也会收到相同的消息。
tnsnames.ora 内容:
# tnsnames.ora Network Configuration File: F:\Oracle\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.104)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.168.0.104)
)
)
listener.ora:
# listener.ora Network Configuration File: F:\Oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = F:\Oracle\product\11.2.0\dbhome_1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.104)(PORT = 1521))
)
)
ADR_BASE_LISTENER = F:\Oracle
警报日志:
<msg time='2015-06-02T19:28:12.428-05:00' org_id='oracle' comp_id='tnslsnr'
type='UNKNOWN' level='16' host_id='KK-PC'
host_addr='fe80::986b:9a38:5c9f:fc06%10' version='1'>
<txt>02-JUN-2015 19:28:12 * (CONNECT_DATA=(SID=CLRExtProc)(CID=(PROGRAM=SQL Developer)(HOST=__jdbc__)(USER=KK))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.104)(PORT=51332)) * establish * CLRExtProc * 0
</txt>
</msg>
lsnrctl 状态:
Services Summary...
Service "orcl.168.0.104" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB.168.0.104" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
我该如何解决这个问题?
谢谢。
【问题讨论】:
-
您是否设置了主机和端口以匹配您数据库的侦听器?侦听器是否实际运行,并且在您认为的地址/端口上(
lsnrctl status会告诉您)。如果不是同一个盒子,数据库和您的 PC 之间是否有防火墙? -
不确定;这听起来仍然像防火墙问题。但是检查警报日志以查看数据库端是否有问题 - 不太可能,但您永远不知道。您是否正在测试/创建连接,或者它是否已建立并且您现在正在尝试运行语句?
-
为什么在 tnsnames.ora 中 ORCL 别名的 SID 设置为 CLRExtProc?那几乎肯定也应该是 ORCL - 以匹配您的实际数据库 SID。您是否使用 SQL Developer 的 TNS 连接?使用基本连接并直接提供该信息可能更容易;并使用服务名称(如果你知道的话 - tnsnames.ora 中的值看起来也很奇怪)。
-
tnsnames.ora 与基本连接无关,但可能有助于检查您正在使用的连接设置。我不清楚您如何从与 ORCL 的基本连接中获取警报日志条目。不过那是一个非常旧的版本 - 不知道他们为什么仍然发货! - 无论如何升级到当前版本 4.1 可能是值得的。
-
如果使用服务名称成功,为什么使用 SID? SID 必须在 listener.ora 中明确引用才能使用。
标签: oracle11g