大家好:
    我在Oracle 10g中安装了两个数据库实例:orcl和demo,当我shutdown immediate了orcl数据库后,再次想执行 sqlplus "sys@orcl as sysdba" 登录数据库启动实例时,提示:
ERROR:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
--
执行set ORACLE_SID=orcl 还是不行,但是执行 sqlplus "sys@demo as sysdba" 是可以登录demo数据库的。
麻烦各位大侠帮忙看看为什么执行执行 sqlplus "sys@orcl as sysdba" 登录数据库启动实例时,提示:
ERROR:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
---
谢谢!错误信息lsnrctl status监听状态信息listener.ora文件内容如下:C:\Users\Administrator>set ORACLE_SID=orclC:\Users\Administrator>sqlplus "sys/abc123@orcl as sysdba"SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 11月 23 11:42:04 2012Copyright (c) 1982, 2005, Oracle.  All rights reserved.ERROR:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
请输入用户名:
C:\Users\Administrator>lsnrctl statusLSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 23-11月-2012 11:4
3:06Copyright (c) 1991, 2005, Oracle.  All rights reserved.正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
启动日期                  23-11月-2012 11:40:48
正常运行时间              0 天 0 小时 2 分 23 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          E:\oracle\product\10.2.0\db_1\network\admin\listener.o
ra
监听程序日志文件          E:\oracle\product\10.2.0\db_1\network\log\listener.log监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=MY-PC)(PORT=1521)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "demo" 包含 1 个例程。
  例程 "demo", 状态 READY, 包含此服务的 1 个处理程序...
服务 "demoXDB" 包含 1 个例程。
  例程 "demo", 状态 READY, 包含此服务的 1 个处理程序...
服务 "demo_XPT" 包含 1 个例程。
  例程 "demo", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功

-----------
### listener.ora 文件内容如下 #####
# listener.ora Network Configuration File: E:\oracle\product\10.2.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = E:\oracle\product\10.2.0\db_1)
      (PROGRAM = extproc)
    )
  )LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = MY-PC)(PORT = 1521))
    )
  )

解决方案 »

  1.   

    执行set ORACLE_SID=orcl 还是不行--执行完了就不应该写@,直接sqlplus 用户/密码--没事不要as sysdba--发tnsnames.ora,发listener.ora有什么用
      

  2.   

    好的,谢谢!试过 不用@orcl就可以了。
    那请问是不是设置一个环境变量ORACLE_SID=orcl或demo其中一个后,另外一个就不用@符号登录了,而是直接登录就可以了?
      

  3.   

    @用来指定存在tnsnames.ora里的连库串,可以连远程库不用@只能连本地库。
      

  4.   

    设置了ORACLE_SID环境变量后,不用再用@的。其它实例才用@