sqlplus 远程连接 oracle 12514 错误

事情是这样的.
本屌的
oracle 11g装在了虚拟机(redhat 5.4)上. 实体机也是linux系统.

我在虚拟机上
用sqlplus / as sysdba 命令是正常登陆的.

实体机上用sqldeveloper 连接虚拟机的数据库, 也是正常的.



但是在实体机上执行sqlplus 远程登陆时会出现ora-12514 错误
sqlplus hr/[email protected]:1521/orcl

    gateman@TFPC Programs $ sqlplus hr/[email protected]:1521/orcl

    SQL*Plus: Release 12.1.0.1.0 Production on Sat Oct 5 22:14:09 2013

    Copyright (c) 1982, 2013, Oracle.  All rights reserved.

    ERROR:
    ORA-12514: TNS:listener does not currently know of service requested in connect
    descriptor


    Enter user-name: ^C
    gateman@TFPC Programs $ 


网上找了好久没找到, 在论坛上问, 在大神的提醒之下找到了解决方法:

把原来的listener.ora 的

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl_dbn)
      (ORACLE_HOME = /u01/app/oracle/project/11.2.0/db_home1/oracle)
      (SID_NAME = orcl)
    )
  )


的GLOBAL_DBNAME 值改成 SID_NAME 一样...


GLOBAL_DBNAME 的值可以由余下语句查出

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
ORCL.LOCALDOMAIN

SQL> 

具体作用我还不清楚



修改后 重启 lsnrctl 监听

再次登陆遇到另一种错误

ORA-21561: OID generation failed


这个好办, 网上一找就找出来了


解决方法,  远程客户端的机子,  把hostname 写入  /etc/hosts

例如

gateman@TFPC Programs $ hostname
TFPC
gateman@TFPC Programs $ cat /etc/hosts
127.0.0.1        TFPC localhost.localdomain localhost
::1        localhost6.localdomain6 localhost6
192.168.1.105   TPRHEL
gateman@TFPC Programs $ 


如上面, 把 hostname 写在 127.0.0.1 后面

接下来一切都ok了



你可能感兴趣的:(Oracle)