发生缘由
学习 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/linxuanSQL*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/linxuanSQL*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 sysdbaSQL*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;