客户机:windowns 2003 ,已经安装了oracle 10g的客户端。
服务机:centOS,安装了oracle 10G release 2的服务端。
(服务端的listener.ora内容如下:)
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = lee)
      (SID_NAME = lee)
      (ORACLE_HOME = /home/lee/app/oracle/product/10.2.0/db_1)
      (PROGRAM = extprocl)
    )
  )LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.232)(PORT = 8080))
    )
  )
(服务端的tnsnames.ora内容如下:)
LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.232)(PORT = 8080))
LEE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.232)(PORT = 8080))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = lee)
    )
  )EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
现象如下:
(1)在服务器端使用自带的sql*plus登录数据是没问题的,可以查到信息。
(2)服务器端查看监听状态,实例lee可以成功监听。
(3)在客户端cmd > ping 192.18.0.232  (提示可以接收到相关的数据包)
(4)在客户端cmd > tnsping lee  (可以解析出HOST=192.168.0.232 PORT=8080  SERVICE_NAME=lee)  因为客户需求要将数据库的端号设置为:8080
(5)但在客户端cmd>sqlplus sys as sysdba  时却提示:ora-12560:TNS:protocol adapter error
(6)如果使用cmd>sqlplus sys@lee as sysdba 时却提示:ora-12154:TNS:could not resolve the connect identifier specified
求助各位大神如何解决这个问题啊,这已经困扰我差不多一天了。如需要更详细信息可加我Q:765027740  谢谢

解决方案 »

  1.   

    可能的原因
    1.服务没有起来
    2.ORACLE_SID环境变量没有指定(最常见引起ORA-12560问题的原因)
    检查方法,命令行(cmd)下,
    C:\Documents and Settings\ptian>set oracle_sid
    ORACLE_SID=test
    ORACLE_SID是sqlplus默认连接的数据库instance,即sqlplus user/pwd连接的instance,如果不指定sqlplus里连接的时候就需要明确@你的instance,eg,sqlplus user/pwd@instance.
    修改方法:在注册表中,HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1\ORACLE_SID 需指向你的Instance(eg.orcl);或者在系统的环境变量里加ORACLE_SID项,值为Instance的SID。3.TNS_ADMIN环境变量没有指定
    检查方法,命令行(cmd)下,
    C:\Documents and Settings\ptian>set TNS_ADMIN
    TNS_ADMIN=D:\oracle\product\10.1.0\Db_1\NETWORK\ADMIN
    TNS_ADMIN应该返回你的tnsnames.ora所在的目录
    修改方法:可以在注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0\TNS_ADMIN或者环境变量中指定。
    4.ORACLE_HOME环境变量没有指定
    和上边的方法类似,检查Oracle_Home环境变量
    5.tnsnames.ora(客户端)文件内容不对
    A sample:
    TEST =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST =  192.168.0.232)(PORT = 8080))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = lee)
        )
      )
      

  2.   

    1.监听服务没有起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,启动oraclehomeXXXXXTNSlistener服务。
      

  3.   

    你好,我是楼主,先多谢各位回我的贴,但我还是有几个问题:
    (1)oracle服务器只安装在linux中,不知道是怎样启动oraclehomeXXXXXTNSlistener服务。
    (2)windows中只安装了oracle 客户端,所以没有HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1\ORACLE_SID 这个东西。
    (3)在客户端登录时cmd>sqlplus scott/123@instance ,但还是提示ora-12154:TNS:could not resolve the connect identifier specified错误。
    小弟是新手,很多东西都不懂,望各位高手指点迷津。
      

  4.   

    linux中启动Listener
    在你的oracle 用户下
    lsnrctl start 
    当然你可以先lsnrctl staus 看看监听是否已经启动
      

  5.   

    多谢各位大神,linux的监听已经启动。但现在又出现了另外一个问题。
    情况说明:
    (1)在客户端使用cmd>sqlplus scott/123@mylee as sysdba 时可以连接到数据库服务器,而且可以查询出新插入的数据。
    (2)但在使用客户端自带的工具Enterprise Manager Console进行连接时却出现了错误。
         我设置的参数如下:
            主机名:192.168.0.232
           端口号:8080
           SID:lee
           网络服务名:mylee
         输入的数据库信息如下:
             用户名:scott
            口令:123
            服务:MYLEE
            连接身份:Normal
         但系统提示:当前授予您的数据库权限不足以运行此应用程序。单击“帮助”以获取更多的版本特定信息。
         {
         另外输入的数据库信息如下:
             用户名:sys
            口令:123
            服务:MYLEE
            连接身份:SYSDBA
          系统提示:ora-01017:invalid username/password;logon denied
          (事实上用户名和密码是没有错误的) 
         }
      

  6.   


    EM是不允许普通用户登入的
    除非你授予他
    select_catalog_role
    这个权限
    grant select_catalog_role to xx;