Oracle TNS问题?

时间:2010-04-29 10:05:19

标签: database oracle listener

我有错误?我的pl / Sql Developer说我的oracle数据库找不到服务描述符但是当我检查监听器时我得到了这个错误。

LSNRCTL> start
Starting tnslsnr: please wait...

Service OracleOraDb10g_home1TNSListener already running.
TNS-12560: TNS:protocol adapter error
 TNS-00530: Protocol adapter error



LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   32-bit Windows Error: 61: Unknown error

我的listener.ora的内容是

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = Oracle10g)
      (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
      (SID_NAME = ORCL)
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
  )

和 tnsnames.ora内容是这个

# tnsnames.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

VMOBILE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

VMOBILEMASTER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = SHARED)
      (SERVICE_NAME = ORCL)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

请问这个晚上有截止日期。请帮忙。

5 个答案:

答案 0 :(得分:2)

这可能是一个配置问题,这意味着我们很难远程解决。你需要检查的两件事是

  1. LISTENER.ORA文件中的条目与您的TNSNAMES.ORA文件
  2. 相匹配
  3. hosts文件中的信息是正确的。
  4. 这是您尝试连接的本地或远程数据库吗?

    修改

    主机文件(在Windows环境中)位于

    之类的位置
    C:\WINDOWS\system32\drivers\etc
    

    显然,这取决于您的环境设置方式(不同的驱动器号或其他)。

    修改

    您需要侦听器文件中的GLOBAL_DBNAME以匹配tnsnsames文件中的SERVICE_NAME,即ORCL

答案 1 :(得分:0)

错误可能在listener.ora文件中。尝试使用名称或运行侦听器的服务器的IP号替换行localhost中的(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

答案 2 :(得分:0)

我用ipconfig告诉你的是你正在使用的IP地址替换localhost。

答案 3 :(得分:0)

不幸的是,这种错误可能会在各种情况下发生。

  1. Oracle数据库服务(OracleServiceXE或您正在使用的任何版本)实际上并未运行。
  2. 用户试图在非管理员帐户下运行TNSListener服务,阻止其注册关联的Windows服务。
  3. 由于机器上有多个ORACLE_HOME而发生冲突。
  4. 服务或配置设置没有任何问题,但在重新启动Windows服务器之前,TNSListener服务无法成功启动。

答案 4 :(得分:0)

我今天通过从cmd.exe运行 LSNRCTL start 解决了此错误消息,已启动"作为管理员"。

我有' localhost' listener.ora和tnsnames.ora中的服务器。我在sql.ini

中也有SQLNET.AUTHENTICATION_SERVICES =(NONE)

在我尝试使用LSNRCTL.EXE之前,我还没有在Windows服务列表中进行监听器服务。来自管理员cmd的 LSNRCTL start 命令为我做了。