连接到Oracle 11g数据库

时间:2018-04-05 18:47:17

标签: oracle oracle11g crystal-reports

请允许我在这篇文章前言说我知道这是一个常见的错误代码,并且当它尝试连接到Oracle数据库时,它会出现在Crystal Reports中,甚至特别是连接到11gR2的CR08也有很好的记录。互联网。

我几天来一直在进行故障排除,并尝试过(并在帖子中列出)几乎所有内容,这就是为什么我决定为我的案例创建一个新帖子。

我没有与计算机技术相关的教育,并且对SQL或Oracle的经验很少,因此阅读文档时有时会感到沮丧,这些文档假设有行话知识,因为我不断在谷歌上搜索什么意思。我对该主题的所有知识都归功于此问题的故障排除。

设置向上

  • Windows 7 Professional SP1,64位安装
  • Oracle 11g第2版Express Edition数据库,32位安装
  • Oracle 11g第2版客户端,32位安装
  • Crystal Reports 2008. 32位安装(评估版,它在生产环境中获得许可但不在此处,这不应该导致我的问题)
  • PATH 系统变量指向:

    C:\ oraclexe \产品\ 11.2.0 \的Client_1 \ BIN; C:\ oraclexe \应用\ ORACLE \产品\ 11.2.0 \服务器\ BIN

  • TNS_ADMIN 系统变量指向:

    C:\ oraclexe \应用\ ORACLE \产品\ 11.2.0 \服务器\网络\ ADMIN

  • TNS_NAMES 系统变量指向:

    C:\ oraclexe \应用\ ORACLE \产品\ 11.2.0 \服务器\网络\ ADMIN

  • C:\ oraclexe是Oracle Home

我想做什么?/问题

我需要Crystal Reports才能成功连接到同一台计算机上托管的Oracle数据库。在我建立连接后,我可以继续正常的工作范围。

我正在尝试按照数据库>的路径连接到数据库。数据库专家>创建新连接> OLE DB(ADO)> Microsoft OLE DB Provider for Oracle。

然后我输入服务为" xe",用户ID为" system",密码为"密码" (我会写好像这是本帖其余部分的系统用户密码,它是一个随机生成的字母数字字符串)。我收到了错误:ORA-12154

经过一些故障排除后,我能够清除此错误,而是抛出错误:ORA-12541我解释了我是如何到达下面的。

排除故障

解决ORA-12154:

我的第一个想法是检查tnsnames.ora是否确实存在且配置正确。我在目录中:

" C:\ oraclexe \产品\ 11.2.0 \的Client_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)
    )
  )

默认情况下排在前3位,我添加了最后一位。

接下来检查我的 sqlnet.ora listener.ora 文件,这里分别是:

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

最初这没有NAMES.DIRECTORY_PATH,我添加了它。

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"更改HOST变量外,自安装以来未对此进行修改。至" 127.0.0.1",从底部开始的第5行。

此时我开始失去希望,并根据另一位用户在另一篇帖子上发表的评论,我决定接下来在我的磁盘上搜索tnsnames.ora的所有实例

我找到了一个" TNSNAMES.ora"在我的client_1 \ NETWORK \ ADMIN目录中,并更新它以匹配服务器的TNSNAMES.ora。在此之前不包含任何条目,只包含安装的注释。

解决ORA-12541:

这会在ORA-12154的确切位置出现不同的错误,但它现在给出了错误ORA-12541,TNS:没有听众。

这很奇怪,因为我可以在CMD中执行"tnsping system_xe"而没有任何问题(当ORA-12154是抛出的错误代码时我也能够这样做。)

我决定运行" lsnrctl stat"来自Documents and Settings> Keaga(我的用户)并被退回with these results.显然,这些结果表明我的问题出在"听众"。

所以,我开始熟悉并决定在我的C:\上搜索LISTENER.ora的所有实例,就像我之前使用tnsnames一样。

有2个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

经过一些搜索后,我找到了一个旧帖子,有人通过更改" 127.0.0.1"来解决此错误。 to" localhost"在他的listener.ora和tnsnames.ora文件中设置HOST参数时。在对我的客户端和服务器安装中的文件执行此操作后,我再次尝试连接并在同一步骤中显示另一个错误,ORA-12514:ORA-12514

解决ORA-12514 / ORA-12505:

在另一个旧的Stack Overflow帖子中,Brad Rippe谈到了同样的问题,而他的修复方法是确保在tnsnames.ora中找到的#34; SERVICE_NAME"是数据库中的有效名称。我决定先试试这个。

然而,当我尝试打开SQL Developer时,我在尝试连接时也收到了ORA-12514。 " tnsping system_xe"但是还是可以的。

经过一些令人沮丧的麻烦后,我通过这一步,通过添加到SID_LIST为" xe"创建一个新条目,SQLPlus现在能够连接到数据库,但SQL Developer现在抛出ORA-12505尝试连接时,Crystal Reports在尝试连接时抛出ORA-12514。

1 个答案:

答案 0 :(得分:0)

要修复我的侦听器问题(特别是Crystal Reports使用的一个),我编辑了我的客户端和服务器的listener.ora文件(注意它们在同一台机器上)来调用主机" localhost& #34;而不是" 127.0.0.1"。

这解决了我的问题并引起了我的另一个问题,我在上一次编辑中描述了"解决ORA-12514 / ORA-12505:"。我目前正在解决此问题。