ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
一、产生原因
安装oracle11g后出现过一次这个问题,解决后,重启了一次电脑又出现了这个问题, oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
原因在于:
ORA-01078: failure in processing system parameters & LRM-00109: could not open parameter file
打不开initORCL.ora。
第一次的解决方案是参考这篇博客解决的
当时的问题还有ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
正因为这个解决方案为电脑重启复现问题埋下了隐患
startup pfile='F:\myoracle\oracle\admin\orcl\pfile\init.ora.482016225850'
启动oracle时指定了initorcl.ora文件件,正常启动的话自然不会携带这个参数
第二次遇到这个问题参考了两篇博客找到了根源,排产问题原因博文
解决办法博文
二、解决办法
- 首先,让我们确认数据库已关闭:
sqlplus / as sysdba
连接到空闲实例。
这Connected to an idle instance是告诉我们数据库已关闭的文本。 - 现在让我们断开连接并尝试以普通用户的身份重新连接,该用户无权启动/关闭数据库,也没有在数据库关闭时连接到它的权限
sqlplus -L user/pw@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=orcl)))
- 以正常用户身份连接会报错ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的 SID
sqlplus / as sysdba
再次连接,startup启动oracle发现报错- 参考解决办法博文,错误路径下product\11.2.0\dbhome_1\database路径下查看initorcl.ora文件,发现果然并不存在,前往\admin\orcl\pfile路径下将init.ora 复制到启动读取路径下,并重命名
- 再次启动问题解决。