欢迎大家加入ORACLE超级群:
17115662 免费解决各种ORACLE问题
今天跟同事聊天,同事说oswbb可以在linux平台实现自动启动了,其实要实现随OS自动启动是比较简单的,如:inittab就可以实现。
 
参考MOS文档:
How To Start OSWatcher Black Box (OSWBB) Every System Boot (文档 ID 580513.1)
 
 
1,OS平台版本与OSWBB版本
| [root@orcl9i ~]# lsb_release -a LSB Version:    :core-3.0-amd64:core-3.0-ia32:core-3.0-noarch:graphics-3.0-amd64:graphics-3.0-ia32:graphics-3.0-noarch Distributor ID: RedHatEnterpriseAS Description:    Red Hat Enterprise Linux AS release 4 (Nahant Update 8) Release:        4 Codename:       NahantUpdate8   oswbb版本为7.2 | 
 
2,安装oswbb-service-1.1.7-1.noarch.rpm包
| [root@orcl9i ~]# rpm -ivh oswbb-service-1.1.7-1.noarch.rpm Preparing…                ########################################### [100%]    1:oswbb-service          ########################################### [100%] | 
下面我们来看看/etc/init.d/oswbb的内容
| [oracle@orcl9i oswbb]$ cat /etc/init.d/oswbb  #!/bin/bash ######################################################################## # vim: sw=8 ts=8 # # Init file for Oracle OSWatcher # # chkconfig:    2345 99 01 # description:  automatically run Oracle OSWatcher at boot time and     \ #               stop it upon system shutdown.  Attempt to gracefully    \ #               recover from a crash by moving old OSWatcher logs       \ #               to archive-<iso-date>. ########################################################################   ######################################################################## # source function library ######################################################################## . //etc/init.d/functions ########################################################################   ######################################################################## # Establish default values ######################################################################## # Set OSW_HOME to the directory where your OSWatcher tools are installed OSW_HOME=’/opt/oswbb’ # Set OSW_INTERVAL to the number of seconds between collections OSW_INTERVAL=’30’ # Set OSW_RETENTION to the number of hours logs are to be retained OSW_RETENTION=’48’ # Set OSW_USER to the owner of the OSW_HOME directory OSW_USER=’root’ # Set OSW_COMPRESSION to the desired compression scheme OSW_COMPRESSION=’gzip’ # Set OSW_ARCHIVE where the logs should be stored OSW_ARCHIVE=’archive’ ########################################################################   ######################################################################## # pull in oswbb settings ######################################################################## [ -f //etc/oswbb.conf ] && . //etc/oswbb.conf ########################################################################   RETVAL=0   ######################################################################## # Some functions to make the below more readable ########################################################################   LOCKFILE=/var/lock/subsys/oswbb prog=’OSWatcher’   ######################################################################## # start: push archive dir to timestamped backup, start new collection ########################################################################   start() {         echo -n $”Starting $prog: “         /bin/su -c //usr///libexec/oswbb-service/oswbb-helper “${OSW_USER}” && success || failure         RETVAL=$?         [ “$RETVAL” = 0 ] && touch ${LOCKFILE}         echo }   ######################################################################## # stop: stop the service ########################################################################   stop() {         echo -n $”Stopping $prog: “         if [ -f “${LOCKFILE}” ]; then                 /bin/su -c “                         set -e # Exit on any error;                         cd “${OSW_HOME}”;                         for x in ./stopOSWbb.sh ./stopOSW.sh; do                                 if [ -x “\${x}” ]; then                                         exec “\${x}”                                 fi                         done                         exit 1                 ” “${OSW_USER}” && success || failure         else                 echo -n $”not running.”                 failure         fi         RETVAL=$?         rm -f “${LOCKFILE}”         echo }   ######################################################################## # restart: stop, pause, then start the collection ########################################################################   restart()       {         stop         sleep 10         start }   ######################################################################## # info: Show the operational parameters ########################################################################   info()  {         echo $”${prog} Settings:”           echo -e $”\tOSW_ARCHIVE     =\”${OSW_ARCHIVE}\””         echo -e $”\tOSW_COMPRESSION =\”${OSW_COMPRESSION}\””         echo -e $”\tOSW_HOME        =\”${OSW_HOME}\””         echo -e $”\tOSW_INTERVAL    =\”${OSW_INTERVAL}\””         echo -e $”\tOSW_RETENTION   =\”${OSW_RETENTION}\””         echo -e $”\tOSW_USER        =\”${OSW_USER}\””           if [ -f ${LOCKFILE} ]; then                 echo -e $”\tLock file present.”         else                 echo -e $”\tLock file not present.”         fi }   ######################################################################## # Decide what to do based on first comand line arg ########################################################################   case “$1” in         start)                 start                 ;;         stop)                 stop                 ;;         restart | reload)                 restart                 ;;         condrestart)                 if [ -f ${LOCKFILE} ] ; then                         restart                 fi                 ;;         status)                 echo -n $”${prog} is “                 if [ -f “${LOCKFILE}” ]; then                         echo $”running.”                         RETVAL=0                 else                         echo $”not running.”                         RETVAL=1                 fi                 ;;         info)                 info                 ;;         *)                 echo $”Usage: $0 {start|stop|reload|restart|condrestart|status|info}”                 RETVAL=1 esac exit $RETVAL | 
下面再来看看/usr///libexec/oswbb-service/oswbb-helper的内容
| [oracle@orcl9i oswbb]$ cat /usr///libexec/oswbb-service/oswbb-helper #!/bin/bash ######################################################################## # vim: sw=8 ts=8 filetype=bash # # Helper file for Oracle OSWatcher # ########################################################################   ######################################################################## # Establish default values ######################################################################## # Set OSW_HOME to the directory where your OSWatcher tools are installed OSW_HOME=’/opt/oswbb’ # Set OSW_INTERVAL to the number of seconds between collections OSW_INTERVAL=’30’ # Set OSW_RETENTION to the number of hours logs are to be retained OSW_RETENTION=’48’ # Set OSW_USER to the owner of the OSW_HOME directory OSW_USER=’root’ # Set OSW_COMPRESSION to the desired compression scheme OSW_COMPRESSION=’gzip’ # Set OSW_ARCHIVE to where the output logs should be generated OSW_ARCHIVE=’archive’ ########################################################################   ######################################################################## # pull in configuration settings ######################################################################## [ -f //etc/oswbb.conf ] && . //etc/oswbb.conf ########################################################################   set -e # Exit on any error;   cd “${OSW_HOME}”   mkdir -p “${OSW_ARCHIVE}”   for x in ./startOSWbb.sh ./startOSW.sh; do         if [ -x “${x}” ]; then                 nohup “${x}”                                            \                         “${OSW_INTERVAL}”                               \                         “${OSW_RETENTION}”                              \                         “${OSW_COMPRESSION}”                            \                         “${OSW_ARCHIVE}”                                \                         >”${OSW_ARCHIVE}/heartbeat 2>&1 &                 exit $?         fi done   exit 1 | 
4,启动服务
修改oswbb中的OSW_HOME平oswbb的解压目录
| [root@orcl9i ~]# cat /etc/init.d/oswbb  #!/bin/bash ######################################################################## # vim: sw=8 ts=8 # # Init file for Oracle OSWatcher # # chkconfig:    2345 99 01 # description:  automatically run Oracle OSWatcher at boot time and     \ #               stop it upon system shutdown.  Attempt to gracefully    \ #               recover from a crash by moving old OSWatcher logs       \ #               to archive-<iso-date>. ########################################################################   ######################################################################## # source function library ######################################################################## . //etc/init.d/functions ########################################################################   ######################################################################## # Establish default values ######################################################################## # Set OSW_HOME to the directory where your OSWatcher tools are installed #OSW_HOME=’/opt/oswbb’ OSW_HOME=’/home/oracle/oswbb’ # Set OSW_INTERVAL to the number of seconds between collections OSW_INTERVAL=’30’ # Set OSW_RETENTION to the number of hours logs are to be retained OSW_RETENTION=’48’ # Set OSW_USER to the owner of the OSW_HOME directory OSW_USER=’root’ # Set OSW_COMPRESSION to the desired compression scheme OSW_COMPRESSION=’gzip’ # Set OSW_ARCHIVE where the logs should be stored OSW_ARCHIVE=’archive’ | 
启动报错
| [root@orcl9i ~]# /etc/init.d/oswbb start Starting OSWatcher: //usr///libexec/oswbb-service/oswbb-helper: line 34: cd: /opt/oswbb: No such file or directory [FAILED] | 
再修改下面脚本内容
| [root@orcl9i ~]# vi /usr///libexec/oswbb-service/oswbb-helper #!/bin/bash ######################################################################## # vim: sw=8 ts=8 filetype=bash # # Helper file for Oracle OSWatcher # ########################################################################   ######################################################################## # Establish default values ######################################################################## # Set OSW_HOME to the directory where your OSWatcher tools are installed OSW_HOME=’/home/oracle/oswbb’ # Set OSW_INTERVAL to the number of seconds between collections OSW_INTERVAL=’30’ # Set OSW_RETENTION to the number of hours logs are to be retained OSW_RETENTION=’48’ # Set OSW_USER to the owner of the OSW_HOME directory OSW_USER=’root’ # Set OSW_COMPRESSION to the desired compression scheme OSW_COMPRESSION=’gzip’ # Set OSW_ARCHIVE to where the output logs should be generated OSW_ARCHIVE=’archive’ | 
再次启动还是报错
| [root@orcl9i ~]# /etc/init.d/oswbb start Starting OSWatcher: //usr///libexec/oswbb-service/oswbb-helper: line 45: unexpected EOF while looking for matching `”‘ [FAILED]   去掉“ for x in ./startOSWbb.sh ./startOSW.sh; do         if [ -x “${x}” ]; then                 nohup “${x}”                                            \                         “${OSW_INTERVAL}”                               \                         “${OSW_RETENTION}”                              \                         “${OSW_COMPRESSION}”                            \                         “${OSW_ARCHIVE}”                                \                         >${OSW_ARCHIVE}/heartbeat 2>&1 &                 exit $?         fi done | 
再启动正常
| [root@orcl9i ~]# /etc/init.d/oswbb start Starting OSWatcher: [  OK  ] | 
 
总结:其实要做成自动启动是很方便的,我们只需要增加到/etc/inittab中去就可以了
下面是写成一个脚本
只在linux环境测试过
| #!/bin/bash ######################################################################## # vim: sw=8 ts=8 # # Init file for Oracle OSWatcher # # chkconfig:    2345 99 01 # description:  automatically run Oracle OSWatcher at boot time and     \ #               stop it upon system shutdown.  Attempt to gracefully    \ #               recover from a crash by moving old OSWatcher logs       \ #               to archive-<iso-date>. ########################################################################   ######################################################################## # source function library ######################################################################## . //etc/init.d/functions ########################################################################   ######################################################################## # Establish default values ######################################################################## # Set OSW_HOME to the directory where your OSWatcher tools are installed OSW_HOME=’/home/oracle/oswbb’ # Set OSW_INTERVAL to the number of seconds between collections OSW_INTERVAL=’30’ # Set OSW_RETENTION to the number of hours logs are to be retained OSW_RETENTION=’48’ # Set OSW_USER to the owner of the OSW_HOME directory OSW_USER=’oracle’ # Set OSW_COMPRESSION to the desired compression scheme OSW_COMPRESSION=’gzip’ # Set OSW_ARCHIVE where the logs should be stored OSW_ARCHIVE=$OSW_HOME/archive ########################################################################   ######################################################################## # pull in oswbb settings ######################################################################## [ -f //etc/oswbb.conf ] && . //etc/oswbb.conf ########################################################################   RETVAL=0   ######################################################################## # Some functions to make the below more readable ########################################################################   LOCKFILE=/var/lock/subsys/oswbb prog=’OSWatcher’   ######################################################################## # start: push archive dir to timestamped backup, start new collection ########################################################################   start() {         echo -n $”Starting $prog: “         /bin/su -c “set -e # Exit on any error;                    cd “${OSW_HOME}”                    mkdir -p “${OSW_ARCHIVE}”                    for x in ./startOSWbb.sh ./startOSW.sh; do                            if [ -x “${x}” ]; then                                    nohup “${x}”                                            \                                            “${OSW_INTERVAL}”                               \                                            “${OSW_RETENTION}”                              \                                            “${OSW_COMPRESSION}”                            \                                            “${OSW_ARCHIVE}”                                \                                            >${OSW_ARCHIVE}/heartbeat 2>&1 &                                    exit $?                            fi                    done                                       exit 1 ” “${OSW_USER}” && success || failure         RETVAL=$?         [ “$RETVAL” = 0 ] && touch ${LOCKFILE}         echo } ######################################################################## # stop: stop the service ########################################################################   stop() {         echo -n $”Stopping $prog: “         if [ -f “${LOCKFILE}” ]; then                 /bin/su -c “                         set -e # Exit on any error;                         cd “${OSW_HOME}”;                         for x in ./stopOSWbb.sh ./stopOSW.sh; do                                 if [ -x “\${x}” ]; then                                         exec “\${x}”                                 fi                         done                         exit 1                 ” “${OSW_USER}” && success || failure         else                 echo -n $”not running.”                 failure         fi         RETVAL=$?         rm -f “${LOCKFILE}”         echo }   ######################################################################## # restart: stop, pause, then start the collection ########################################################################   restart()       {         stop         sleep 10         start }   ######################################################################## # info: Show the operational parameters ########################################################################   info()  {         echo $”${prog} Settings:”           echo -e $”\tOSW_ARCHIVE     =\”${OSW_ARCHIVE}\””         echo -e $”\tOSW_COMPRESSION =\”${OSW_COMPRESSION}\””         echo -e $”\tOSW_HOME        =\”${OSW_HOME}\””         echo -e $”\tOSW_INTERVAL    =\”${OSW_INTERVAL}\””         echo -e $”\tOSW_RETENTION   =\”${OSW_RETENTION}\””         echo -e $”\tOSW_USER        =\”${OSW_USER}\””           if [ -f ${LOCKFILE} ]; then                 echo -e $”\tLock file present.”         else                 echo -e $”\tLock file not present.”         fi }   ######################################################################## # Decide what to do based on first comand line arg ########################################################################   case “$1” in         start)                 start                 ;;         stop)                 stop                 ;;         restart | reload)                 restart                 ;;         condrestart)                 if [ -f ${LOCKFILE} ] ; then                         restart                 fi                 ;;         status)                 echo -n $”${prog} is “                 if [ -f “${LOCKFILE}” ]; then                         echo $”running.”                         RETVAL=0                 else                         echo $”not running.”                         RETVAL=1                 fi                 ;;         info)                 info                 ;;         *)                 echo $”Usage: $0 {start|stop|reload|restart|condrestart|status|info}”                 RETVAL=1 esac exit $RETVAL | 
 


oswbb在linux平台随系统自动启动:等您坐沙发呢!