解决过程(所有操作都是操作服务器端的文件路径,不是客户端的文件路径,):
2. 在lisener.ora文件中找到
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = E:\Oracle\Server\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:E:\Oracle\Server\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
将下面的一段内容copy进去,并适当修改。(红字部分为你的SID,其中GLOBAL_DBNAME为全局数据库名,说明:每台电脑的Oracle安装目录和实例名不尽相同,修改此文件的ORACLE_HOME(本机Oracle安装目录)和SID_NAME应该按照你自己的设置。载图为我安装Oracle 11G R2 默认的全局数据库名ORCL)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = E:\Oracle\Server\app\Administrator\product\11.2.0\dbhome_1)
(SID_NAME = ORCL)
)
3. 保存listener.ora文件,关闭并重新启动监听程序。
方法一:在开始-运行-CMD模式下,
lsnrctl stop // 关闭lsnrctl start // 启动
或者
方法二:在Oracle服务器的服务中重新启动监听服务,然后在oracle客户端通过再次配置对Orcl实例的监听,如下图所示
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
5. 启动打开目录:E:\Oracle\Server\app\Administrator\admin\orcl\pfile,会发现里面有一个文件:init.ora.626201392234,(你的电脑看到的肯定是init.ora.开头+一串数字的文件,就是它),它是Oracle最后一次成功启动时备份的启动文件。
6. 在开始-运行-CMD模式下,
sqlplus /nolog
connect / as sysdba
create spfile from pfile='E:\Oracle\Server\app\Administrator\admin\orcl\pfile\init.ora.626201392234' ;startup
以上每一行粘贴一行,按一次回车键,自动执行,注意紫色背景的文件名字是你第5步找到的文件名字
7. 一切恢复正常。