这几天在使用Oracle 时遇见如下错误:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务,解决办法如下(已经尝试过)
1. 找到listener.ora监听文件,具体位置:F:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
2. 在lisener.ora文件中找到
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = F:\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
 将下面的一段内容copy进去,并适当修改
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = D:\app\zhou\product\11.2.0\dbhome_1)
(SID_NAME = ORCL)
)
3. 保存listener.ora文件,关闭并重新启动监听程序。
lsnrctl stop   // 关闭
lsnrctl start  // 启动
4.connect 
sys/sys@orcl 会出现错误 ORA-27101: shared memory realm does not exist, 
   此时用connect / as sysdba
5、打开目录:F:\app\Administrator\admin\orac11\pfile,会发现里面有一个文件:init.ora.6102012112028,这是Oracle最后一次成功启动时备份的启动文件。
6. sqlplus /nolog;
 connect / as sysdba;
create spfile from pfile='D:\app\Administrator\admin\orac11\pfile\init.ora.1052011103553';
startup  // 启动数据库。 
7. 恢复正常。