ORA-01034: ORACLE not available、ORA-27101: shared memory realm does not exist

发布时间 2023-08-09 08:58:59作者: 炸天帮帮主

发生缘由

学习 Oracle 的使用,结果关机之后重新使用 SQLPlus 发现无法登录

-- windows server 2003 使用 sqlplus连接oracle报错
C:\Documents and Settings\Adminstrator> sqlplus system/linxuan
ORA-01034:ORACLE not available 
ORA-27101:shared memory realm does not exist

运行环境

  • VMware Workstation:VMware Workstation 15Pro 15.1.0 build-13591040

  • 虚拟机版本:Windows Server 2003

  • Oracle 版本:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

问题解决

出现 ORA-01034 和 ORA-27101 的原因是多方面的。

  • ORA-01034 主要是 oracle 当前的服务不可用,ORA-27101是因为 oracle 没有启动或没有正常启动,共享内存并没有分配给当前实例。所以,通过设置实例名,再用操作系统身份验证的方式,启动数据库。这样数据库就正常启动了,就不会报 ORA-01034 和 ORA-27101 两个启动异常了。

  • 可能是登录数据库后,不正常的退出,比如直接关掉窗口,而这时数据库里有未完成的动作,再次登录时就会提示insufficient privileges的报错

  • 可能是虚拟机的共享内存问题

这里我的是第一种原因,所以输入下面的命令就好了:

C:\Documents and Settings\Administrator>sqlplus system/linxuan

SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 8月 7 16:35:46 2023
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

-- 先看oracle的监听和oracle的服务是否都启动了。
-- 启动oracle监听
C:\Documents and Settings\Adminstrator> lsnrctl start
-- 手工设置一下oralce的sid,我们的是orcl
C:\Documents and Settings\Adminstrator> set ORACLE_SID=orcl
-- 运行sqlplus,进入环境。但是不登录到数据库服务器,想要以系统管理员身份登录可以使用这种方法 + 下面命令
C:\Documents and Settings\Administrator>sqlplus  /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 8月 7 16:40:17 2023
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

-- 管理员身份登录
SQL> conn / as sysdba;
已连接到空闲例程。
-- 启动Oracle数据库
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250452 bytes
Variable Size             264244076 bytes
Database Buffers          343932928 bytes
Redo Buffers                2940928 bytes
数据库装载完毕。
数据库已经打开。
-- 测试一下 发现没有任何问题
SQL> select * from user_tables;

亦或是使用下面这个方式

C:\Documents and Settings\Administrator>sqlplus system/linxuan

SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 8月 7 16:47:17 2023
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

-- 直接以系统管理员身份登录,这种方式比上面的方式简单
-- sys是用户名、/后面是密码,sys登陆后面必须跟上as sysdba。
C:\Documents and Settings\Administrator>sqlplus sys/linxuan as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 8月 7 16:47:26 2023
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
已连接到空闲例程。

-- 启动Oracle数据库
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250452 bytes
Variable Size             268438380 bytes
Database Buffers          339738624 bytes
Redo Buffers                2940928 bytes
数据库装载完毕。
数据库已经打开。

-- 测试一下 发现没有任何问题
SQL> select * from user_tables;