zoukankan      html  css  js  c++  java
  • ORA-12154 TNS无法解析指定的连接标识符

        又是这个百无聊赖的问题,虽然问题芝麻点大,却让我们好找啊!

        很久没有安装oracle了,今天安装11g的时候,用PLSQL Developer连接时,就出现了这个俗不可耐的问题:ORA-12154 TNS无法解析指定的连接标识符。我自认为安装的时候已经很小心翼翼了,结果还是出了纰漏,于是乎,我抱着不解决问题誓不罢休的决心开始一步步排查问题,功夫不负有心人,最终得以解决。

        下面我详细给大家介绍解决问题的思路:

        首先搞清楚问题的主体有两个:oracle服务和PLSQL Developer。

        一、先排查oracle服务这边。

        1、开启服务和监听

        命令行输入:lsnrctl start 

        或者界面操作 右键 我的电脑-->管理-->服务和应用程序-->服务,右键点击OracleOraDb11g_home1TNSListener-->启动类型-->自动(延迟启动),这样启动的好处是只要在使用oracle服务监听的时候才启动,节约内存。当然,在启动服务监听后顺便启动服务。右键点击 OracleServiceORCL 与上面同样操作。

        监听启动之后可以查看监听详细状态。命令行输入:lsnrctl status。

        监听和服务都启动成功之后,再用PLSQL Developer连接试一下,如果可以,下面步骤可以省略,如果不行,请看下面第二步。

        2、用sqlplus测试连接

        命令行输入:sqlplus/nolog

        再输入:conn 用户名/密码 @ 实例 as sysdba 。示例:conn sys/123456@orcl as sysdba 或者 conn system/123456@orcl as sysdba。

        说明:用户名和密码是在安装oracle将要结束时,有个口令管理的选项进入设置的,用户名有很多,比如sys,system,scott,但是密码要自己设置。

        如果能连接上,则可继续阅读下文,如果连接不上,则可以就此止步,去研究oracle安装哪里出了问题。

        为了检测更加保险,我们还可以ping oracle服务。命令行输入:tnsping localhost:1521/orcl。如果出现“OK”字样,可表示ping 通。

        试着PLSQL Developer继续连接,如果还连接不上,则继续下文。

        仔细检查D:appAdministratorproduct11.2.0dbhome_2NETWORKADMIN 中tnsnames.ora文件内容有没有错误,比如多了空格啊什么的,特别是地址指向。不过一般在第一次使用的时候是不需要改动里面的东西。这里注意了,oracle 11g 安装完之后,安装目录下会有两个dbhome。dbhome_1和dbhome_2,两个里面都有tnsnames.ora。我们要检查的是dbhome_2文件夹里的tnsnames.ora。

        二、PLSQL Developer

        以上流程如果比较顺利,基本可以排除oracle服务的问题。我们再把问题转向PLSQL Developer。

        1、打开PLSQL Developer,先不登录,点击取消,接着我们照样进入了操作主界面,点击菜单栏中 工具-->首选项-->连接,右边选择oracle客户端,选中你安装的,然后点击应用,确定即可。

        2、重新登录,填上你刚刚ping oracle服务的用户名、密码和实例。再连接,如果还连接不上,把数据库实例加上主机名和端口号。示例:localhost:1521/orcl,这中配置是和tnsnames.ora配置一一对应的。再连接试试,必须成功,再不成功,那就超出我个人能力范围了,呵呵~

        下面给出tnsnames.ora原汁原味的配置格式:

    # tnsnames.ora Network Configuration File: d:appAdministratorproduct11.2.0dbhome_2
    etworkadmin	nsnames.ora
    # Generated by Oracle configuration tools.
    
    LISTENER_ORCL =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    
    ORACLR_CONNECTION_DATA =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        )
        (CONNECT_DATA =
          (SID = CLRExtProc)
          (PRESENTATION = RO)
        )
      )
    
      ORCL =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )
    View Code

        说明:
        1、如果是我们可以配置多个数据库实例,orcl是其中之一。当然我们可以继续添加其他不同的实例,方法是,在tnsnames.ora中添加诸如如下代码:

    ORCL2 =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )
    View Code

        这样我们就在本地服务上多了一个orcl2的实例,我们可以试一试。
        2、当然我们也可以配置远程的oracle服务,原理一样,只是修改host以及端口号,代码如下:

     REMOTEORCL=
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.105)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )
    View Code

         这样在登录时候,填写对应的实例、用户名和密码就搞定了。

  • 相关阅读:
    dsadsad
    线程池,封装使用,实现控制子线程
    如何能很好地安排好自己的时间?
    中文验证码
    海量数据处理专题(七)——数据库索引及优化
    java tree jtree的使用
    基于Cookie的单点登录(SSO)系统介绍
    急求VS2010的Cookie解决方法
    微软企业库5.0 学习之路系列文章索引
    Net 4.0 Parallel编程(八)Task中的数据共享(中)
  • 原文地址:https://www.cnblogs.com/tomcatx/p/4245797.html
Copyright © 2011-2022 走看看