请注意,我出于安全目的更改了详细信息。但问题仍然存在。
我在位置上的服务器上安装了Oracle 11g数据库,例如herp-devDV.derp.edu。 现在我在位置的服务器上有另一个Oracle 11g数据库,比如derp-db.derp.edu。
我在Oracle SQL开发人员中为herp-devDV.derp.edu和derp-db.derp.edu输入了连接名称,用户名,密码,主机名和服务名称。我可以连接到derp-db.derp.edu中的模式,但不能连接到herp-devDV.derp.edu。它给了我这样的信息:
Failure - Test failed: The Network Adapter could not establish the connection
我有以下信息:
lsnrctl status
我收到了以下输出
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
Start Date 03-JUN-2014 13:37:22
Uptime 6 days 0 hr. 53 min. 4 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File D:\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
Listener Log File d:\oracle\diag\tnslsnr\HERP-DEVDB\listener\alert\log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=HERP-DEVDB.derp.edu)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "HERPDEVDBXDB" has 1 instance(s).
Instance "herpdevdb", status READY, has 1 handler(s) for this service...
Service "herpdevdb" has 1 instance(s).
Instance "herpdevdb", status READY, has 1 handler(s) for this service...
The command completed successfully
然后我查看我的listener.ora并找到
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = HERP-DEVDB.derp.edu)(PORT = 1521))
)
)
在这一点上,我承认我正在挠头,因为我没有看到任何突出的东西,并告诉我为什么这不应该起作用。
唯一的线索就是当我检查derp-db.derp.edu并运行命令lsnrctl status
时。请
见下面的摘录:
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DERP-DB.edu)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 64-bit Windows: Version 11.2.0.3.0 - Production
Start Date 18-MAY-2014 02:19:01
Uptime 22 days 12 hr. 23 min. 18 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
---etc----
所以我仍在挠头。为什么derp-db会连接到DERP-DB.edu但是herp-devDB连接到EXTPROC1521?我该如何解决?除了实例的名称之外,这两个服务器之间的listener.ora和其他文件几乎相同。 嗯。
EDIT1:我在herp中更改了listener.ora。这没有解决它。
EDIT2:我无法在端口1521上telnet到derp-db.derp.edu但是我仍然可以使用SQL Developer连接到它?相机连
无论如何,非常感谢协助。感谢
此致 令人讨厌
答案 0 :(得分:13)
为了未来的社区用户的利益,我正在回答这个问题。有很多问题。如果您遇到此问题,我建议您查找以下内容:
一旦我做了这三件事,我解决了我的问题。
答案 1 :(得分:9)
我有一个类似的问题,我也不断得到同样的错误。我尝试了很多东西,如更改侦听器端口号,关闭防火墙等。最后我通过更改listener.ora文件来解决问题。我更改了以下行:
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
到
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))
我还在/etc/hosts
文件中添加了一个条目。
您可以使用Oracle网络管理器更改listener.ora文件中的上述行。有关如何使用网络管理器执行此操作的详细信息,请参阅“Oracle网络服务管理员指南”。
此外,您可以在连接时使用服务名称(database_name.domain_name
)而不是SID。
我希望它有所帮助。
答案 2 :(得分:3)
当我安装oracle 11g然后创建数据库时,我遇到了同样的问题。
我甚至不知道听众必须手动创建。 因此,我打开Net Configuration Assistant并手动创建监听器。
我可以通过sql developer连接我在本地创建的数据库。
答案 3 :(得分:2)
我解决了:给出正确的主机和端口 这样:
然后将主机复制到Oracle Developer
最后连接到oracle
答案 4 :(得分:1)
奇怪的是,通过对svc进行完全相反的举动,我能够解决同样的问题!我必须:
1)用 localhost 替换tnsnames.ora / listener.ora文件中的FQDN主机名,然后重新启动监听器服务,
2)两个,我不得不使用" SYS作为SYSDBA"作为SQL Developer输入文本框中的用户名
最终能够让SQL Developer挂钩到我的本地实例。
答案 5 :(得分:1)
只启动列表器然后你可以连接数据库。 命令在编辑器上运行:
lsnrctl start
工作正常。
答案 6 :(得分:1)
您可以在安装文件夹listener.ora
下找到名为oraclexe\app\oracle\product\11.2.0\server\network\ADMIN
的文件
它包含以下条目
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = Codemaker-PC)(PORT = 1521))
)
)
DEFAULT_SERVICE_LISTENER = (XE)
您应验证主机(此处为Codemaker-PC)应为计算机名称。如果不正确,请将其更改为计算机名称。
然后在以管理员身份运行的命令提示符下尝试以下命令,
lsnrctl start
答案 7 :(得分:0)
我遇到了同样的问题。 我不得不关掉我的防火墙,然后就可以了。
你也可以打开端口: http://windows.microsoft.com/en-in/windows/open-port-windows-firewall#1TC=windows-7
答案 8 :(得分:0)
这对我有用。可能会帮助一些人。关闭防火墙。在RHEL 7上
systemctl stop firewalld
答案 9 :(得分:0)
对我来说,在tnsnames.ora和listener.ora中设置HOST的方式不同。 一个设置为计算机的全名,另一个设置为IP地址。 我将它们与计算机的全名同步并且有效。别忘了重启oracle服务。
我仍然不明白为什么这会引起问题,因为我认为IP地址和计算机名称在我的理解中最终是相同的。
答案 10 :(得分:0)