ORA-01034: ORACLE not available、ORA-27101: shared memory realm does not exist
发生缘由
学习 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 主要是 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;