今天突然要使用本机安装的oracle,可是toad连接始终报tns解析失败。于是使用sqlplus连接,报错如下:
请输入用户名: system 输入口令: ERROR: ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist 进程 ID: 0 会话 ID: 0 序列号: 0
我很是奇怪,数据库居然还没启动,于是开始上网查找资料。
第一步,使用 sqlplus /nolog进入sqlplus环境,使用conn /as sysdba连接oracle,又报错如下:
SQL> conn /as sysdba
ERROR:
ORA-01031: insufficient privileges
这个问题原来是windows 下用户权限不足造成的,将当前用户添加到ora_dba组中即可。使用conn /as sysdba可以连接进入oracle了。
第二步,使用startup启动数据库,报错如下:
SQL> startup ORA-00119: invalid specification for system parameter LOCAL_LISTENER ORA-00132: syntax error or unresolved network name ‘LISTENER_ORCL‘
经过查找资料与反复尝试,原来是我的tnsnames.ora这个文件缺少“LISTENER_ORCL”这个参数,将
LISTENER_ORCL = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
添加到tnsnames.ora文件,再尝试使用startup启动数据库,OK。
SQL> startup ORACLE 例程已经启动。 Total System Global Area 1686925312 bytes Fixed Size 2176368 bytes Variable Size 1023412880 bytes Database Buffers 654311424 bytes Redo Buffers 7024640 bytes 数据库装载完毕。 数据库已经打开。
问题解决了,我反思了一下为什么会出现这个问题。
我这台计算机是不久前重装系统,再安装了oracle11.2,tnsnames.ora这个文件是从原来机器上备份后直接复制过来的,安装后,还用toad测试连接,一点问题没有。之后就一直没再用过,这期间由内网连接到外网,修改了IP。网上的资料显示,如果修改了oracle数据库服务器的IP地址,可能会引起oracle启动异常。
想来可能有两方面的原因,第一,也是主要原因,就是我修改了计算机的IP(由内网连接到外网,可是没办法,查资料方便嘛)。
第二,我复制过来的tnsnames.ora这个文件缺少“LISTENER_ORCL”这个参数。
不管怎么说,这个问题算是圆满解决了,心情大好。