解决oracle11g连接失败 ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist

本文详细记录了解决Oracle数据库连接失败的问题,从检查服务状态、修改listener.ora文件、调整注册表设置,到最终发现并修正监听器配置中的IP地址问题,成功启动OracleOraDb11g_home1TNSListener服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在使用ORACLE数据库时出现这样一个错误,登录时连接失败。

服务器提示:

ORA-01034: ORACLE not available 

ORA-27101: shared memory realm does not exist

 一顿操作,终于搞清楚解决办法。将过程记录下来:

1.检查Oracle相关服务是否已启动

咦。这么一看,是我的OracleOraDb11g_home1TNSListener服务没有启动,马上启动它!

然而我在启动OracleOraDb11g_home1TNSListener时又遇到这个问题:

 2. 解决 - OracleOraDb11g_home1TNSListener服务启动后停止

网上找的别人给出的解决方案,先试着走了一通:

1) 配置Oracle的listener.ora文件

我的listener.ora文件是在D:\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN目录下,其中 Listener修改为:

查看计算机全名的方法如下:

右键单击“计算机”-- 选择“属性”--左侧选择“高级系统设置”。

2) 修改注册表 register

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/OracleOraDb11g_home1TNSListener中的ImagePath改为:

(之前后面的.EXE没有)

3) 配置环境变量

4) 重启OracleServiceORCL服务,再启动OracleOraDb11g_home1TNSListener服务即可运行。

然鹅。。。。还是启动不了OracleOraDb11g_home1TNSListener服务呀! 

================================================================================================

心灰意冷之际又看到一个解决方案:

原因:凡是在监听器配置中,配置的所有监听地址都必须可以访问到,否则监听器不认。

解决办法:确保配置的所有监听地址和服务器地址都可以访问到

步骤1:打开Oracle的NetManager:

步骤2:查看监听器配置:

这时发现,这里的配置和刚刚我修改过的listener文件是一致的。通过查看配置,突然意识到问题所在:我在安装ORACLE时的IP地址和现在的IP地址已经不一致了。而监听器配置还保留着我原来的IP地址,因此需要手动修改,改为当前地址。刚刚在listener文件中的配置也是不必要的,删除因为这步操作而产生的地址4。最终如下图:

 

这时查看D:\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN目录下的listener文件,可以看到已经变成和刚刚配置一致了。

 这时我再重启OracleServiceORCL服务,再启动OracleOraDb11g_home1TNSListener服务即可成功运行。

 3.问题解决

再次尝试连接,成功:

### 解决 Oracle 数据库关闭后再启动时报 ORA-01034ORA-27101 错误 当尝试重新启动 Oracle 数据库并遇到 `ORA-01034: ORACLE not available` 和 `ORA-27101: shared memory realm does not exist` 错误时,这通常意味着数据库实例未能成功启动,导致共享内存未被创建或丢失。 #### 检查服务状态 确认 Oracle 服务是否已正确安装并且正在运行。可以通过 Windows 的服务管理器来查看名为 `OracleService<SID>` 或者 Linux 上的 `/etc/init.d/oracle<sid> start` 命令检查服务的状态[^1]。 #### 使用 OS 身份验证启动数据库 如果常规方法无法解决问题,则可以考虑使用操作系统级别的身份验证方式来启动数据库: ```sql -- 切换到具有管理员权限的操作系统账户 $ sqlplus / as sysdba SQL*Plus: Release ... - Production on ... Copyright (c) ... Connected to an idle instance. SQL> startup; ``` 上述命令会尝试以 SYSDBA 权限连接至目标数据库,并执行完整的启动过程。注意这里的斜杠表示不提供用户名/密码而直接利用本地系统的认证机制[^2]。 #### 修改注册表配置(仅适用于Windows) 对于某些特定环境下的问题,可能还需要调整 Windows 注册表中的设置。具体来说就是确保路径 `HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_<Your_Oracle_Home_Name>\ORACLE_SID` 下指定了正确的 SID 值[^4]。 #### 执行手动挂载和打开操作 有时即使能够启动监听程序,也可能因为其他原因使得数据库本身仍处于非活动状态。此时可先尝试将数据库置于 MOUNT 状态然后再 OPEN 完整开启它: ```sql SQL> shutdown immediate; ... Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; ORACLE instance started. Total System Global Area ... Fixed Size ... Variable Size ... Database Buffers ... Redo Buffers ... Database mounted. SQL> alter database open; Database altered. ``` 以上步骤有助于恢复因意外情况而导致中断的服务进程以及重建必要的资源结构[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值