在同一编译环境下有时能访问oracle数据库,有时不能.请问为何?

解决方案 »

  1.   

    有‘ORA-12154:TNS:无法处理服务名’错误提示
      

  2.   

    在服务列表中,查看服务,确保OracleOraHome92TNSListener服务已启动(也可看有没有进程TNSLSNR.EXE就知道了)
    如果OracleOraHome92TNSListener服务没启动就会提示‘ORA-12154:TNS:无法处理服务名’
      

  3.   

    如果不是上面说的原因,把 E:\oracle\ora92\network\admin\listener.ora 文件内容贴出来看看
      

  4.   

    如果不是上面的问题,把E:\oracle\ora92\network\admin\listener.ora 文件内容贴出来看看
      

  5.   

    # LISTENER.ORA Network Configuration File: E:\oracle\ora92\network\admin\listener.ora
    # Generated by Oracle configuration tools.LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = hhq-168)(PORT = 1521))
          )
          (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = NMP)(SERVER = HHQ-168)(PIPE = ORAPIPE))
          )
          (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = IPC)(KEY = njxhz))
          )
        )
      )SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = kmxhz)
          (ORACLE_HOME = E:\oracle\ora92)
          (SID_NAME = kmxhz)
        )
        (SID_DESC =
          (GLOBAL_DBNAME = njxhz)
          (ORACLE_HOME = E:\oracle\ora92)
          (SID_NAME = njxhz)
        )
        (SID_DESC =
          (GLOBAL_DBNAME = mydb)
          (ORACLE_HOME = E:\oracle\ora92)
          (SID_NAME = mydb)
        )
      )谢谢楼上!
      

  6.   

    ‘ORA-12154:TNS:无法处理服务名’,是服务器名出错!照你所说,问题应该不会在oracle!而在你所写的程序端!!
    你可以单独启动oracle,运行oracle!!如果没问题!!那可以确定问题不在oracle!有与服务名(1)你检查所有关的程序代码?比如连接串,等等!!认真对照看看是哪个连接串有错!!
    (2)检查你的程序是不是在什么地方关闭了数据库连接,而后面又用了此连接!!以下内容或许对你有所帮助!!ADO与ORACLE的连接应该有两种方法,一种是在客户机的ODBC中定义好你的ORACLE数据库,然后ADO连接ODBC;另一种是ADO直接连接ORACLE数据库,它实际是通过ORACLE客户端与库进行连接,因此要在客户机上安装oracle客户端,配置一个与你的数据库相对应的“服务”。你提到的TNS服务名,就是你在配置时给这个服务起的名字。 
    前一种的连接串大概象这样: 
    Data Source=数据库IP;user id=用户名;password=密码 
    后一种: 
    Data Source=服务名;user id=用户名;password=密码