环境:Windows 7 + Oracle 11g r2 + Navicat premium 9.15
Oracle基本是默认安装,安装过程没出现过任何异常
Oracle开启了两个服务:OracleServiceORCL和OracleOraDb11g_home1TNSListener
Navicat一直都连接不上本地的Oracle
网上搜了一大堆资料,大都是改那3个配置文件的
最终还是没能解决这个问题
最终的问题是:
Navicat主机那里如果填本机IP地址(192.168.18.8),错误代码是:ORA-12541:TNS:no listener
如果填localhost,错误代码是:ORA-28547:connection to server failed,probable Oracle Net admin error
tnsping localhost 是通的,tnsping 192.168.18.8 则出错 TNS-12541: TNS: 无监听程序以下是listener.ora文件:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\Oracle\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\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 = C:\Oracle请高人指点一二

解决方案 »

  1.   

    未使用过navicat,建议使用pl/sql developer,或者toad
      

  2.   

    问题是用Oracle自带的客户端也登录不了。
      

  3.   

    sqlplus能登录吗?不能登录,贴出错误信息
      

  4.   

    进行查找:
    1、首先确认你的数据库已经启动了,可以用net start OracleServiceORCL
    2、其次确认你的侦听启动了否,用lsnrctl status查看,如果没有启动,用lsnrctl start启动。
    3、以上启动后,直接打开sqlplus,输入用户名密码,无需输入服务名,直接登录即可。
      

  5.   

    sqlplus是可以登录的。所以我想多半是listener.ora的问题
    还有,我非常确定数据库服务和侦听都启动了
      

  6.   

    oci.dll的版本不对
        从 http://www.oracle.com/technology/software/tech/oci/instantclient/index.html 下载client
        里面很多,根据你的版本来下,我下载的是instantclient_11_1。
        在navicat的 工具-选项-其他-OCI ,选择刚下的client中的 oci.dll
        设置环境变量:
          1)在环境变量PATH中开头增加C:\Instantclient10_2;
          2)增加用户环境变量SQLPATH,值为C:\Instantclient10_2
          3)增加用户环境变量NLS_LANG,值为AMERICAN_AMERICA.UTF8
        选择 Basic 连接,就大概能连接上了
      

  7.   

    http://www.oschina.net/question/12_3508
      

  8.   

    果然是oci.dll的问题,谢了。你是我的恩人。
      

  9.   

    刚接触Oracle,遇到同样的问题 呵  看到这文章解决了 感谢!
      

  10.   

    把Oracle安装目录下oci.dll,替换掉Navicat目录下的oci.dll文件,就解决了。