在Oracle安装机上,Oracle账户登入:
使用 conn / as sysdba方式可以连接成功。
使用 conn user/password@TNS方式,返回错误ORA-12514: TNS:listener does not currently know of service requested in connect descriptor1.数据库实例启动的,并且只安装了一个。
2.连接默认数据库实例是成功的。
2.连接时指定ServiceName就会报上面的错误。什么原因?怎么解决?谢谢以上

解决方案 »

  1.   

    TNS 你有没有这个服务名哦?
      

  2.   

    把TNS这个名字加到你的tnsnames.ora文件中
      

  3.   

    netca配一个listener嘛pmon本身有个默认的listener,不通过TNSNAMES解析就能访问。所以你可以通过/as sysdba访问但是无法解析你的TNSNAMES.
      

  4.   

    查找tnsnames.ora文件,查看里面的连接字符串,如
       XE =
         (DESCRIPTION =
           (ADDRESS = (PROTOCOL = TCP)(HOST = ubuntu)(PORT = 1521))
           (CONNECT_DATA =
             (SERVER = DEDICATED)
             (SERVICE_NAME = XE)
           )
        )用红色部分的当作连接字符串
      

  5.   

    oracle登录机制分为二种:一种是使用数据字典,另一种是使用口令文件登录.原因是:普通用户依据数据字典进行身份验证,但是数据字典在数据库打开前无法被读取,从而出现普通用户注定无法启动(或创建)数据库的情况.为了打开数据库,必须通过外部口令文件验证用户的方式.
    SQL>conn /as sysdba        --这个是利用操作系统身份验证的方式
    SQL>conn user/passwd@db    
    --标准的数据字典身份验证.因为加了@db,oracle要去解析连接字符串db,它会到tnsnames.ora文件里面查找具有某种约定方式的结构(包括host,port,service_name三部分).此外,使用这种方式的话,必须要求侦听打开,通过侦听与数据库交互(tcp的方式).个人的理解,请大家多多指教.
      

  6.   

    @TNS
    tns名字没有在tnsnames.ora中注册正确导致。
      

  7.   

    楼主,重新配一下listener试试
      

  8.   

    一句话,没有配置监听,自己配置一下就可以,命令是netca
      

  9.   

    1.监听肯定配置,不然会直接报监听不存在的错误。
    2.问题显然是不能识别连接字符串的Host
    例如如下面的
     XE =
      (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ubuntu)(PORT = 1521))
      (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
      )
      )
      

  10.   

    conn user/password@xe
    把host=ip地址看看
      

  11.   

    两种情况,第一,监听配置不正确;
    第二,如果是自动注册,则可能没有注册,使用alter system register; 命令注册.