日期:2014-05-16  浏览次数:20907 次

plsql登陆oracle出错!连接Oracle 10g时ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的.
我添加了  (SID_DESC =  (GLOBAL_DBNAME = ORACLE)  
     (ORACLE_HOME = D:\oracle\product\10.2.0\db_1) 
       (SID_NAME = ORACLE)     )

之后,登陆时又报错:ORA-12518:TNS:监听程序无法分布客户机链接()
我在命令行内输入SQL〉connect system/system as sysdba出错:ORA-12560:TNS:协议适配器错误
尝试解决:造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:
1.监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,启动oraclehome92TNSlistener服务。

2.database instance没有起起来。windows平台如下操作:开始---程序---管理工具---服务,打开服务面板,启动oracleserviceXXXX,XXXX就是你的database SID.

3.注册表问题。regedit,然后进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0将该环境变量 ORACLE_SID设置为XXXX,XXXX就是你的database SID.或者右几我的电脑,属性--高级--环境变量---系统变量--新建,变量名=oracle_sid,变量值=XXXX,XXXX就是你的 database SID.或者进入sqlplus前,在command line下输set oracle_sid=XXXX,XXXX就是你的database SID.
经过以上步骤,就可以解决问题。


但是未能解决!!

输入SQL>show parameter session 出错:SP2-0640:未链接。
我的数据库的所有服务都是启动的,不知道怎么回事,求解啊!!!
------解决方案--------------------
今天我换了网络,也出现了这个问题。搞了一上午才解决。
主要是配置2个文件tnsnames.ora和listener.ora。
不知道LZ什么情况。
附上我的配置,给LZ参考
listener.ora。

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = H:\oracle\install\app\oracle\product\11.2.0\server)
  (PROGRAM = extproc)
    )

(SID_DESC =
  (GOLBAL_DBNAME=STAR)
      (SID_NAME = XE)
      (ORACLE_HOME = H:\oracle\install\app\oracle\product\11.2.0\server)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)


tnsnames.ora

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

------解决方案--------------------
从这张图片看
http://my.csdn.net/my/album/detail/1642277,表示orcl已经动态注册到监听器,应该可以正常连接了。

建议楼主如下操作试试看:
1、停止oracleserviceorcl服务
2、stop listener
3、start listener
4、启动oracleserviceorcl服务
5、sqlplus / nolog
6、startup
------解决方案--------------------
lsnrctl status显示什么内容呢?
------解决方案--------------------
你的服务名怎么是oracle8?你把tnsnames.ora里面的ORCL修改成如下:

ORCL =
  (DESCRIPTION =
 &