Oracle10g在solaris10下的自动运行脚本

网络整理 - 06-30

  Solaris 使用了SMF(服务管理设施)来集中管理各项系统及网络服务其目的是降低系统管理的难度和降低系统出错的几率实践表明通过SMF管理平台来配置和管理服务还是十分麻烦的例如要把一个用户自己订制安装的第三方软件配置到SMF里进行管理要做很多的工作另外如果某个服务出现故障将涉及服务本身和SMF这两方面这样恢复起来难度相应增大个人偏见系统管理的目标是越简单越好—部署容易维护简单及恢复快速正好solaris 系统有一个oracle g就用它来做例子来配置一个 oracle的自动运行脚本

  先介绍一下系统环境

  系统版本 SunOS sery Generic_ ipc i ipc

  Oracle 版本 racle Database g Enterprise Edition Release Prod

  Oracle 安装路径 /opt/oracle/product//db_

  dbstart 路径 /opt/oracle/product//db_/bin/dbstart

  Oracle 自带一个脚本dbstart它的用途就是用来制作自动运行脚本在没有启动oracle实例之前我们先手动运行脚本dbstart:

  bash$ dbstart

  ORACLE_HOME_LISTNER is not SET unable to autostart Oracle Net Listener

  Usage: /opt/oracle/product//db_/bin/dbstart ORACLE_HOME

  提示没有设置ORACL_HOME_LISTNER接着给出这个命令的使用方法用ps –aef | grep ora看oracle相关进程是否起来哦没有起来!修改文件dbstart找到ORACL_HOME_LISTNER这一行(还好只有唯一的一行)它的默认值为$表示接受一个位置参数的意思既然程序需要手动加位置参数ORACLE_HOME我们不妨把$直接用ORACLE_HOME替换掉即 ORACLE_HOME_LISTNER=$ à ORACLE_HOME_LISTNER=$ORACLE_HOME保存后再来执行脚本dbstart顺利执行了

  bash$ dbstart

  bash$ ps aef | grep ora | grep v grep

  oracle         :: pts/       : ps aef

  oracle         :: pts/       : bash

  oracle           :: ?           : /opt/oracle/product//db_/bin/tnslsnr LISTENER –inherit //监听器起来了

  但没有oracle进程只有oracle监听器起来了还有一个文件/var/opt/oracle/oratab修要修改这个文件是oracle安装过程中手动执行rootsh被创建的打开这个文件有效的配置只有一行下面是某个系统上的输出

  sery:/opt/oracle/product//db_:N

  根据注释的提示我们需要把它最后一个字段(以冒号为字段分割符)的值由N改为Y保存后再来执行dbstart &

  bash$ dbstart

  Processing Database instance sery: log file /opt/oracle/product//db_/startuplog

  bash$ ps eaf | grep ora

  oracle          :: ?           : ora_j_sery

  oracle          :: ?           : ora_j_sery

  oracle          :: ?           : ora_j_sery

  oracle          :: ?           : ora_j_sery

  ……(省略若干输出)

  这时oracle实例运行起来了根据这个经验我们顺便把文件dbshut这个文件也修改了

  一切准备就绪就可以开始写运行级别的自动脚本了在运行级别的目录创建文件/etc/rcd/Sdbstart其内容如下

  #!/bin/bash

  su oracle c /opt/oracle/product//db_/bin/dbstart& //少选项c将不会执行这个脚本c command

  保存后在给它执行权限同理在运行级别S的目录建文件 /etc/rcSd/Kdbshut文件内容如下

  #!/bin/bash

  su oracle c /opt/oracle/product//db_/bin/dbshut &

  执行命令init 重启solaris 看oracle实例及监听器是否在正常运行当然如果不用运行级别而用服务管理设施SMF来管理oracle服务的话还有好多步骤修要完成有兴趣的可以去试试