这里记录我解决ORA-01034:ORACLE not available和ORA-27101:shared memory realm does not exist这两个问题的过程以及在该过程中我碰到的新问题,服务已经打开的。
Oracle版本是11g。
问题描述:InstantClient安装好以后能够访问远程数据库,这里我只配置了tnsnames.ora文件,然后在本机安装好Oracle后连接报错,报错信息如下:
大致意思就是Oracle不可用,共享内存不存在。 个人理解就是Oracle实例没启动起来。
百度解决方案是先登陆sqlplus /nolog,再conn /as sysdba连接到Oracle实例,接着执行startup命令启动Oracle实例,如下。
当我执行完conn /as sysdba后,显示以连接到空闲例程,一般执行该命令之后应显示的是“已连接”。百度该问题依旧是实例没启动的原因,解决方案依旧是执行startup命令或指定pfile启动,执行之后又有新问题了,如下。
报错内容:
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00132: syntax error or unresolved network name 'LISTENER_ORCL'
报错内容提示:系统参数LOCAL_LISTENER无效,语法错误或未解析的网络名称LISTENER_ORCL
这里的错误网上依旧能百度到解决方案,当然我试了,是可行的。
一种是修改%ORACLEL_HOME%\admin\orcl\pfile目录下的init.ora.1232019205721文件,将其中local_listener的值由原来的LISTENER_ORCL替换成tnsnames.ora中的ADDRESS_LIST。
local_listener原始值:
替换后:
替换后在cmd中重新执行刚刚的startup命令,可以看到ORACLE实例已启动,在使用plsql连接也能连接上。
当然这种方式有个缺点,就是每次重新开机都需要执行一遍,麻烦。当然还有其他解决方案,不一一说了,反正相对于都是比较麻烦的。我这里记录另一种方法,简单方便,至少我在百度该问题解决方案时还没看到过我记录的这种方法,也是偶然看我在公司配置的tnsnames.ora文件发现的。
这里注意了,圈起来要考的。
=============================华丽的分割线============================
我把刚刚的改动还原,然后重新开机,用plsql重新连接ORACLE,肯定又是报错。
上面讲了执行startup的时候报错:系统参数LOCAL_LISTENER无效,语法错误或未解析的网络名称LISTENER_ORCL
也就是这里配置的LISTENER_ORCL出了问题,或者说是少了这个配置。那这个配置在哪呢,我看了一眼我在公司的配置,是在tnsnames.ora文件里。
那在tnsnames.ora中来把这个配置加上,如下。
%ORACLEL_HOME%\admin\orcl\pfile目录下的init.ora.1232019205721文件中的修改记得还原。
然后再按上面的流程来一遍,可以看到,没有报错,很顺利的成功了,也不用指定pfile启动,重新开机也不用再执行一遍。
为了把下面引出来,上面说的有点多了感觉,哈哈哈。
不过问题是顺利解决了。
最近工作比较忙,所以SpringBoot的更新停下来了...忙完这阵子会继续更新的
传送门:SpringBoot从入门到放弃