Oracle 10g在solaris 10下的自动运行脚本

Oracle 10g solaris 10 下的自动运行脚本
作者:田逸( [email protected] )发表在 [url]http://os.51cto.com/art/200705/47777.htm[/url]
 
Solaris 10 使用了 SMF (服务管理设施)来集中管理各项系统及网络服务,其目的是降低系统管理的难度和降低系统出错的几率。实践表明,通过 SMF 管理平台来配置和管理服务,还是十分麻烦的,例如要把一个用户自己订制安装的第三方软件配置到 SMF 里进行管理,要做很多的工作;另外,如果某个服务出现故障,将涉及服务本身和 SMF 这两方面,这样恢复起来难度相应增大。个人偏见:系统管理的目标是越简单越好 部署容易、维护简单及恢复快速。正好 solaris 10 系统有一个 oracle 10g , 就用它来做例子,来配置一个 oracle 的自动运行脚本。
 
先介绍一下系统环境:
系统版本
SunOS sery 5.10 Generic_118855-33 i86pc i386 i86pc
Oracle 版本
racle Database 10g Enterprise Edition Release 10.2.0 .2.0 - Prod
Oracle 安装路径
/opt/oracle/product/10.2/db_1
dbstart 路径
/opt/oracle/product/10.2/db_1/bin/dbstart
 
Oracle 自带一个脚本 dbstart, 它的用途就是用来制作自动运行脚本。在没有启动 oracle 实例之前,我们先手动运行脚本 dbstart:
-bash-3.00$ dbstart
ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener
Usage: /opt/oracle/product/10.2/db_1/bin/dbstart ORACLE_HOME
提示没有设置 ORACL_HOME_LISTNER, 接着给出这个命令的使用方法。用 ps �Caef | grep ora oracle 相关进程是否起来,哦,没有起来!修改文件 dbstart, 找到 ORACL_HOME_LISTNER 这一行(还好,只有唯一的一行),它的默认值为“ $1 , 表示接受一个位置参数的意思,既然程序需要手动加位置参数 ORACLE_HOME, 我们不妨把“ $1 ”直接用“ ORACLE_HOME ”替换掉,即 ORACLE_HOME_LISTNER=$1 - à ORACLE_HOME_LISTNER=$ORACLE_HOME ,保存后再来执行脚本 dbstart, 顺利执行了,
-bash-3.00$ dbstart
-bash-3.00$ ps -aef | grep ora | grep -v grep
  oracle   964   552   0 06:40: 17 pts /1       0:00 ps -aef
  oracle   552   546   0 06:08: 08 pts /1       0:00 -bash
  oracle   696     1   0 06:22:25 ?           0:00 /opt/oracle/product/10.2/db_1/bin/tnslsnr LISTENER �Cinherit // 监听器起来了
 
但没有 oracle 进程,只有 oracle 监听器起来了。还有一个文件 /var/opt/oracle/oratab 修要修改,这个文件是 oracle 安装过程中,手动执行 root.sh 被创建的。打开这个文件,有效的配置只有一行,下面是某个系统上的输出:
sery:/opt/oracle/product/10.2/db_1:N
根据注释的提示,我们需要把它最后一个字段(以冒号“:”为字段分割符)的值由“ N ”改为“ Y , 保存后再来执行 dbstart &
-bash-3.00$ dbstart
Processing Database instance "sery": log file /opt/oracle/product/10.2/db_1/startup.log
-bash-3.00$ ps -eaf | grep ora
  oracle  1175     1   0 06:54:35 ?           0:00 ora_j001_sery
  oracle  1173     1   1 06:54:35 ?           0:01 ora_j000_sery
  oracle  1179     1   0 06:54:35 ?           0:00 ora_j003_sery
  oracle  1177     1   0 06:54:35 ?           0:00 ora_j002_sery
  …… 省略若干输出
这时, oracle 实例运行起来了。根据这个经验,我们顺便把文件 dbshut 这个文件也修改了。
 
一切准备就绪,就可以开始写运行级别的自动脚本了。在运行级别 3 的目录创建文件 /etc/rc3.d/S33dbstart, 其内容如下:
#!/bin/bash
su - oracle -c /opt/oracle/product/10.2/db_1/bin/dbstart& // 少选项 -c 将不会执行这个脚本, -c command
保存后在给它执行权限。同理在运行级别 S 的目录建文件 /etc/rcS.d/K33dbshut, 文件内容如下:
#!/bin/bash
su - oracle -c /opt/oracle/product/10.2/db_1/bin/dbshut &
执行命令 init 6 重启 solaris 10, oracle 实例及监听器是否在正常运行。当然,如果不用运行级别而用服务管理设施 SMF 来管理 oracle 服务的话,还有好多步骤修要完成,有兴趣的可以去试试。
 
                                                 2007-5-18

你可能感兴趣的:(oracle,脚本,Solaris,10g,休闲)