要达到oracle随开机自启动,一般使用11g自带的dbstart脚本:<code>$oracle_home/bin/dbstart</code>,但要先修改<code>/etc/oratab</code>的内容,将n改成y,表示允许实例自启动,假如有2个实例要启动,再写一行:
然后在oracle用户下执行<code>$oracle_home/bin/dbstart</code>即可启动,日志被记录在<code>$oracle_home/startup.log</code>。但是,默认情况<code>dbstart</code>和<code>dbshut</code>脚本不能自动启动或关闭监听,所以也要加以修改:
同样也修改dbshut脚本(约第50行):
这两个脚本在执行时会自动去搜索<code>/etc/oratab</code>文件的内容,将这两个命令分别加入开机启动和关闭脚本里。
/etc/rc.local
linux系统开机初始化的最后过程会执行该脚本,加入以下内容:
/etc/rc.local.shutdown
这个脚本时系统里没有的,完成的功能是关机自动停止服务,<code>/etc/rc.d/rc.local.shutdown</code>:
让它运行在<code>0</code>和<code>6</code>运行级别runlevel:
另外网上也有文章不是利用 oracle 自带的 dbstart 来实现自启动,而是自己写 service 脚本,执行 sqlplus 然后运行 shutdown immediate ,个人觉得这有点重复做oracle的事情了;还有把通过类似<code>service oracle start/stop</code>这样的形式去管理,方便是方便一点,但要知道oracle数据库轻易不会频繁重启,如有需要,我们更愿意自己使用<code>sqlplus</code>连上数据库,自己执行<code>shutdown</code>命令,因为对数据库的操作还是以慎重为主,在配置了active data guard等复杂环境下,对备库也不适用,所以这里就没做这个工作。