本屌的
oracle 11g装在了虚拟机(redhat 5.4)上. 实体机也是linux系统.
我在虚拟机上
用sqlplus / as sysdba 命令是正常登陆的.
实体机上用sqldeveloper 连接虚拟机的数据库, 也是正常的.
但是在实体机上执行sqlplus 远程登陆时会出现ora-12514 错误
sqlplus hr/32565624@192.168.1.105:1521/orcl
gateman@TFPC Programs $ sqlplus hr/32565624@192.168.1.105: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了