oracle数据库无法登陆的问题

今天开启oracle服务登陆oracle数据库输入用户名和密码莫名其妙的报错:

ORA_01034:ORACLE not available

ORA_27101:shared memory realm does not exist


 如图所示Sqlplus连接时出现这个错误;在网上查了一下出现ORA-01034和ORA-27101的原因是多方面的:主要是oracle当前的服务不可用,shared memory realm does not exist,是因为oracle没有启动或没有正常启动,共享内存并没有分配给当前实例.所以,通过设置实例名,再用操作系统身份验证的方式,启动数据库。这样数据库就正常启动了,就不会报ORA-01034和ORA-27101两个启动异常了。

还有就是可能是登录数据库后,不正常的退出,比如直接关掉窗口,而这时数据库里有未完成的动作,再次登录时就会提示“insufficient privileges”的报错,SQL>shutdown immediate;   SQL>startup;就恢复正常了。

比较一下启动和没启动的内存大小:查看任务管理器下oracle.exe所占内存,正常oracle.exe所占内存如下:

当oracle.exe所占内存为几十兆说明Oracle数据库没有启动:

解决步骤:

1.先看oracle的监听和oracle的服务是否都启动了。启动oracle监听:cmd命令行窗口下,输入lsnrctl start,回车即启动监听。

2 查看oracle的sid叫什么,比如创建数据库的时候,实例名叫“orcl”,那么先手工设置一下oralce的orcl,cmd命令窗口中,set ORACLE_SID=orcl.

3.进入SQL:输入sqlplus  /nolog 回车或者输入 conn / as sysdba;回车

提示:SQL> conn sys/123456 as sysdba
        已连接到空闲例程。

4.再输入startup,回车.这步是启动oracle服务。如果startup启动被告知已经启动了,可以先输入shutdown immediate;等shutdown结束之后,再输入startup。

到这里之后又报错:

SQL> startup

ORA-00119: invalid specification for system parameter LOCAL_LISTENE

ORA-00132: syntax error or unresolved network name 'LISTENER_ORCL'

alert log 中的错误如下:
USER (ospid: 17619): terminating the instance due to error 119
Instance terminated by USER, pid = 17619

5.这个报错是因为检查$ORACLE_HOME/network/admin/tnsnames.ora中的network name,发现没有LISTENER_ORC的监听名。

将本机的tnsnames.ora中的network name修改为LISTENER_ORCL,重启解决。

LISTENER_ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

 6.成功:

SQL> startup
ORACLE 例程已经启动。

Total System Global Area 2566914048 bytes
Fixed Size 3048920 bytes
Variable Size 671091240 bytes
Database Buffers 1879048192 bytes
Redo Buffers 13725696 bytes
数据库装载完毕。
数据库已经打开。

posted @ 2017-02-09 14:09  程序文  阅读(8785)  评论(0编辑  收藏  举报