Crystal Reports在连接到Oracle 11g数据库时找不到侦听器(ORA-12541)
请允许我在这篇文章的前言中说,我知道这是一个常见的错误代码,当Crystal Reports试图连接到Oracle数据库时,它会出现在Crystal Reports中,即使是连接到11gR2的CR08在互联网上也有很好的记录 我已经独自排除故障好几天了,并且尝试了(并在帖子中列出)几乎所有的事情,这就是为什么我决定为我的案例创建一个新帖子的原因 我没有受过与计算机技术相关的教育,对SQL或Oracle的经验也很少,因此有时阅读假定掌握行话知识的文档会令人沮丧,因为我经常在谷歌上搜索事物的含义。我对这个问题的所有了解都是由于这个问题的故障排除 设置Crystal Reports在连接到Oracle 11g数据库时找不到侦听器(ORA-12541),oracle,oracle11g,crystal-reports,Oracle,Oracle11g,Crystal Reports,请允许我在这篇文章的前言中说,我知道这是一个常见的错误代码,当Crystal Reports试图连接到Oracle数据库时,它会出现在Crystal Reports中,即使是连接到11gR2的CR08在互联网上也有很好的记录 我已经独自排除故障好几天了,并且尝试了(并在帖子中列出)几乎所有的事情,这就是为什么我决定为我的案例创建一个新帖子的原因 我没有受过与计算机技术相关的教育,对SQL或Oracle的经验也很少,因此有时阅读假定掌握行话知识的文档会令人沮丧,因为我经常在谷歌上搜索事物的含义。我
- Windows 7 Professional SP1,64位安装
- Oracle 11g第2版Express Edition数据库,32位安装
- Oracle 11g第2版客户端,32位安装
- 水晶报告2008。32位安装(评估版,它在生产环境中获得许可,但不在这里,这不会导致我的问题)
- PATH系统变量指向: C:\oraclexe\product\11.2.0\client\u 1\bin; C:\oraclexe\app\oracle\product\11.2.0\server\bin
- TNS_管理系统变量指向: C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN
- TNS_名称系统变量指向: C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN
- C:\oraclexe是Oracle的主页
我想做什么?/问题 我需要Crystal Reports成功连接到同一台计算机上托管的Oracle数据库。连接完成后,我可以继续我的正常工作范围 我正试图通过以下路径连接到数据库:数据库>数据库专家>创建新连接>OLE DB(ADO)>Microsoft OLE DB Provider for Oracle 然后,我将服务输入为“xe”,用户ID输入为“system”,密码输入为“password”(在本文的其余部分,我将把它当作系统用户的密码,它是随机生成的字母数字字符串)。我返回了一个错误: 在一些故障排除之后,我能够清除这个错误,而不是抛出错误:我在下面解释我是如何到达这里的
我已完成的故障排除 解决ORA-12154: 我的第一个想法是检查tnsnames.ora是否确实存在并且配置正确。我的在目录中: “C:\oraclexe\product\11.2.0\client\u 1\NETWORK\ADMIN”以及listener.ora、sqlnet.ora和其他3个使用文件扩展名.bak的文件,并且似乎基于sqlnet.or和listener.ora,我不涉及这些文件 我的tnsnames.ora如下:
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = IEAS-KEAGAN)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
system_xe =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
默认情况下,前三名在那里,我添加了最后一名
接下来是检查我的sqlnet.ora和listener.ora文件,它们分别是:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
最初它没有名称。我添加了目录路径
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 = 127.0.0.1)(PORT = 1521))
)
)
DEFAULT_SERVICE_LISTENER = (XE)
安装后未对其进行修改,只是将主机变量从“IEAS-KEAGAN”更改为“127.0.0.1”,从底部开始第5行
在这一点上,我开始失去希望,根据另一位用户在这里的另一篇帖子上的评论,我决定下一步在我的磁盘上搜索tnsnames.ora的所有实例
我在我的client\u 1\NETWORK\ADMIN目录中也找到了一个“TNSNAMES.ora”,并将其更新为与服务器的TNSNAMES.ora相匹配。在这一点之前,它不包含任何条目,只包含安装过程中的注释
解决ORA-12541: 这就产生了一个与ORA-12154不同的错误,它出现在正确的位置,但现在它给出了错误ORA-12541,TNS:no listener 这很奇怪,因为我可以在CMD中执行而没有问题(当抛出错误代码ORA-12154时,我也可以这样做) 我决定从Documents and Settings>Keaga(我的用户)运行“lsnrctl stat”,结果很明显返回了这些结果,表明我的问题出在“listener”上 所以,我从熟悉的地方开始,决定在我的C:\上搜索LISTENER.ora的所有实例,就像我以前对tnsnames所做的那样 有两个listener.ora文件,一个用于我的服务器安装,我已经在上面引用过,另一个位于我的client_1\NETWORK\ADMIN目录中,其中包含以下内容:
# listener.ora Network Configuration File: C:\oraclexe\product\11.2.0\client_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
)
ADR_BASE_LISTENER = C:\oraclexe
在进一步搜索之后,我找到了一篇旧文章,其中有人在listener.ora和tnsnames.ora文件中设置主机参数时,将“127.0.0.1”更改为“localhost”,从而解决了这个错误。对客户端和服务器安装中的文件执行此操作后,我再次尝试连接,但在同一步骤中出现另一个错误,即ORA-12514:
解决ORA-12514/ORA-12505: 在另一篇旧的Stack Overflow帖子中,Brad Rippe谈到了同样的问题,他的解决方案是确保在tnsnames.ora中找到的“SERVICE_NAME”在数据库中是一个有效的名称。我决定先试试这个 然而,当我试图打开SQLDeveloper时,我在尝试连接时也收到了ORA-12514。“tnsping系统”仍然有效,但是没问题
经过一些令人沮丧的故障排除后,我完成了这一步骤,通过添加到SID_列表中为“xe”创建一个新条目,SQLPlus现在能够连接到数据库,但是SQL Developer现在在尝试连接时抛出ORA-12505,Crystal Reports在尝试连接时抛出ORA-12514。修复我的侦听器问题(特别是Crystal Reports使用的one Crystal Reports)我编辑了我的客户端和服务器的listener.ora文件(注意它们在同一台机器上),将主机称为“localhost”,而不是“127.0.0.1” 这解决了我的问题,并使我注意到我在las中描述的另一个问题