今天在虚拟机安装完oracle数据库重启系统后想进入数据库却发现如下错误:
出现ORA-01034和ORA-27101的原因是多方面的:主要是oracle当前的服务不可用,shared memory realm does not exist,是因为oracle没有启动或没有正常启动。那么如何在Linux启动时自动启动Oracle监听和实例呢?
首先尝试使用oracle启动数据库的命令dbstart,可是发现又报错如下错误:
ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener
Usage: $ORACLE_HOME/bin/dbstart ORACLE_HOME
错误原因很明确,是dbstart脚本文件中ORACLE_HOME_LISTNER的设置有问题,打开文件($ORACLE_HOME/bin/dbstart)找到:ORACLE_HOME_LISTNER=$1,修改为ORACLE_HOME_LISTNER=$ORACLE_HOME即可,同时注意到脚本文件中有如下提示:
所以想开机自动启动数据库还必须修改/etc/oratab文件,找到文件中这行(orcl:/opt/oracle/app/product/12.1.0/dbhome_1:N)并把N替换成Y即可,该行是这样定义的$ORACLE_SID:$ORACLE_HOME:<N|Y>,具体请参照自己oracle的安装家目录以及实例名。到这一步开机自启动已经解决一大半了,接下来还需要在/etc/rc.d/rc.local文件中添加如下两行才能开机自启动数据库:
su oracle -lc "/opt/oracle/app/product/12.1.0/dbhome_1/bin/lsnrctl start"
su oracle -lc /opt/oracle/app/product/12.1.0/dbhome_1/bin/dbstart
第一行内容是为了开机启动数据库监听服务,第二行才是为了启动数据库,注意第一行因为命令中有空格,所以必须加双引号。(路径请根据自己数据库安装家目录修改)
到此全部修改完成,重新启动Linux系统进入数据库试试吧!
总结:网上有很多讲解怎么设置Linux开机自启动的,大致有两类,一种如同上面的方式,还有一种是自己写启动脚本,但原理基本是一样的。
来源:https://www.cnblogs.com/Anonymous-1/p/4996326.html