ORA_12514:TNS:监听进程不能解析在连接描述中给出的SERVICE_NAME

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORA_12514:TNS:监听进程不能解析在连接描述中给出的SERVICE_NAME相关的知识,希望对你有一定的参考价值。

是这样的,我的机子是局域网里的一台,我能够使用内部系统,也就是说我可以访问服务器的数据库。
以前我的机子一直可以连到服务器上的,前阵子机房搬家,我就无法连接上去了。
因为机房换人了,我不方便去问。
我知道服务器的IP地址,请各位告诉我如何连接到服务器上去啊?
高手快来帮忙啊~~~~~

yy19840320的方法不行。我估计连不上是因为原来的用户名和密码没用了。其他没变。现在我怎么才能连接到服务器上去啊?原来的用户名和ORACLE的默认用户名和密码我试过了,还是不行。
高手帮帮我吧~~~~~

以下21行是listiner.ora文件没修改的内容:

# listener.ora Network Configuration File: C:\oracle\product\10.1.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oracle\product\10.1.0\db_1)
(PROGRAM = extproc)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
)

把一下内容加到文件的“(PROGRAM = extproc))”的下一行,其中“ORACLE”为你所建的数据库名字:
(SID_DESC =
(GLOBAL_DBNAME = ORACLE)
(ORACLE_HOME = c:\oracle\product\10.2.0\db_1)
(SID_NAME = ORACLE)
)

解决ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

2008-05-27 18:56

错误原因分析:
————————
检查监听,发现未设置对服务名的监听(Oracle10g默认安装后不自动设置监听)。

当你的tnsnames.ora 文件中的SERVICE_NAME没有向你想要连接的数据库服务器中的监听器注册的时候,就会出现这个错误信息。如果你的客户端配置没有发生变化,那么数据库服务器配置就必须进行改变,否则你用来进行连接的SERVICE_NAME就永远不会注册到监听器。

注册到监听器的SERVICE_NAME 是由数据库实例的service_names 参数来决定的。查看参考指南中的服务器文档来找到有关当这个参数没有设置的时候,它的默认值是如何设置的详细信息。你可以通过明确地对其进行设置,来避免它被另一个参数的变化所影响。

你还有可能是遇到了定时的问题。如果监听器被重新启动,那么数据库实例就必须向它重新注册。通常情况下,每60秒就会出现这样的问题。如果你迫不及待,那么就以数据库管理员的身份登录到数据库服务器,并且运行“更改系统注册器”,这样就可以强制它立即注册到监听器中。
—————————————————————————————————————————
解决办法:
——————
1. 打开文件"<OracleHome>/network/admin/listener.ora" ,你将看到如下的内容:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
)
2. 将下面的语句添加到上面的语句中去。
(SID_DESC =
(GLOBAL_DBNAME = ORACLE)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = ORACLE)
)
3. 文件的内容则变成了如下所示:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORACLE)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = ORACLE)
)
)
4. 保存文件,然后重新启动监听服务TNSListener就可以了 !

问题解决
----------------------
主动跟被动的关系
1.是让listener主动加载服务
原因是 添加
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = /data/cache1/oracleDB/oracle/product/10.2.0/db_2)
)
后,在使用lsnrctl start监听程序时会将listener的服务注册到进程监视器(pmon)中
2.listener被动加载服务
如果没有该内容,那么由实例的pmon进程在listener中注册服务,对listener来讲,就是被动了。
这也就是为什么先启动监听后启动数据库能够正常连接的,反之不行的原因了。
参考技术A 你将oracle目录下的tnsnames.ora(我的是C:\oracle\ora90\network\admin\tnsnames.ora)文件中的服务器中的ip地址改为你知道的服务器的ip,如下
# tnsnames.ora 文件
ORACLE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 服务器ip地址)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = scbus)
)
)
# 结束
改完之后你在重新连下看行不行....
参考技术B 连接名称错误,你这个是运行什么时候出现的啊

ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务解决

问题:Oracle主服务和监听器服务已经启动,使用SQL Plus能够正常连接,使用PL SQL Developer连接报次错误:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务。如图:

技术分享

解决:

打开H:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN(不同机器目录可能不同)目录下的listener.ora文件,发现此文件内容如下:

  1. #listener.ora Network Configuration File:  
  2. H:\Oracle\product\11.2.0\dbhome_1\network\admin\listener.ora  
  3. #Generated by Oracle configuration tools.  
  4.    
  5. SID_LIST_LISTENER=  
  6.   (SID_LIST =  
  7.     (SID_DESC =  
  8.       (SID_NAME = CLRExtProc)  
  9.       (ORACLE_HOME =H:\Oracle\product\11.2.0\dbhome_1)  
  10.       (PROGRAM = extproc)  
  11.       (ENVS ="EXTPROC_DLLS=ONLY:H:\Oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")  
  12.     )  
  13.   )  
  14.    
  15. LISTENER=  
  16.   (DESCRIPTION_LIST =  
  17.     (DESCRIPTION =  
  18.       (ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1521))  
  19.       (ADDRESS = (PROTOCOL = TCP)(HOST =localhost)(PORT = 1521))  
  20.     )  
  21.   )  
  22.    
  23. ADR_BASE_LISTENER= H:\Oracle  

修改成如下内容(注意红色部分的内容):

#listener.ora Network Configuration File:

H:\Oracle\product\11.2.0\dbhome_1\network\admin\listener.ora

#Generated by Oracle configuration tools.

SID_LIST_LISTENER=

  (SID_LIST =

         (SID_DESC =

      (GLOBAL_DBNAME = ORCL)

      (ORACLE_HOME =H:\Oracle\product\11.2.0\dbhome_1)

      (SID_NAME = ORCL)

    )

    (SID_DESC =

      (SID_NAME = CLRExtProc)

      (ORACLE_HOME = H:\Oracle\product\11.2.0\dbhome_1)

      (PROGRAM = extproc)

      (ENVS ="EXTPROC_DLLS=ONLY:H:\Oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")

    )

  )

LISTENER=

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1521))

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

    )

  )

ADR_BASE_LISTENER= H:\Oracle

说明:每台电脑的Oracle安装目录和实例名不尽相同,修改此文件的ORACLE_HOME(本机Oracle安装目录)和SID_NAME应该按照你自己的设置。

SID查看请参照此图:

 技术分享

以上是关于ORA_12514:TNS:监听进程不能解析在连接描述中给出的SERVICE_NAME的主要内容,如果未能解决你的问题,请参考以下文章

ORA-12514 TNS: 监听器当前不知道连接描述符中请求的服务

Oracle几个基础配置问题:ORA-12154: TNS: 无法解析指定的连接标识符ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务ORA-12516 TNS监听程序找(代

ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务解决

ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务解决

ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务解决办法

ORA-12514:TNS 监听问题