C++ 引用调用

将Oracle数据库设为Linux系统服务,并使其能随系统启动和关闭数据库。

1. vi /etc/oratab

   将最后一行改为Y. 只有改为Y,Oracle自带的dbstart与dbshut才能起作用。
   如:
    xcldb:/u01/app/oracle/product/11.2.0/db_1:Y

2. 启动脚本文件
  vi /etc/rc.d/init.d/oracle
#!/bin/bash
  #chkconfig: 2345 20 80
  #description: Oracle dbstart/dbshut
  #/etc/rc.d/init.d/oracle
  export ORACLE_BASE=/u01/app/oracle
  export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
  ORACLE_OWNER=oracle
  LOGFILE=/var/log/oracle.log
  DATE=`date +%Y-%m-%d`
  echo "################################">>${LOGFILE}
  echo "## Run Oracle "${DATE} >> ${LOGFILE}
  if [! -f ${ORACLE_HOME}"/bin/dbstart" ] || [ ! -f ${ORACLE_HOME}"/bin/dbshut" ]; then
   echo "ERROR: Missing the script file "${ORACLE_HOME}"/bin/dbstart or "${ORACLE_HOME}"/bin/dbshut!">>${LOGFILE}
   echo "################################">>${LOGFILE}
   exit
  fi
  start(){
     touch /var/lock/subsys/oracle
      echo "###Startup oracle....."
   su - ${ORACLE_OWNER} -c ${ORACLE_HOME}"/bin/lsnrctl start"
   su - ${ORACLE_OWNER} -c ${ORACLE_HOME}"/bin/dbstart "${ORACLE_HOME}
   echo "###Done"
   #echo "###Run database control......"
   #su - ${ORACLE_OWNER} -c ${ORACLE_HOME}"/bin/emctl start dbconsole"
   echo "###Done"
   echo "###startup oracle successful....."
  }
  stop(){
     #echo "###Stop database control......"
   #su - ${ORACLE_OWNER} -c ${ORACLE_HOME}"/bin/emctl stop dbconsole"
   echo "###Done"
     echo "###Shutdown oracle------"
   su - ${ORACLE_OWNER} -c ${ORACLE_HOME}"/bin/lsnrctl stop"
   su - ${ORACLE_OWNER} -c ${ORACLE_HOME}"/bin/dbshut "${ORACLE_HOME}
   echo "###Done"
   rm -f /var/lock/subsys/oracle
   echo "###Shutdown oracle successful-------"
  }
 
  case "$1" in
  ‘start‘)
          start >> ${LOGFILE}
  ;;
  ‘stop‘)
          stop >> ${LOGFILE}
  ;;
  ‘restart‘)
  stop >> ${LOGFILE}
  start >> ${LOGFILE}
 ;;
  *)
  echo "Usage:`basename $0` start|stop|restart"
   exit 1
  esac
  echo "###Finished.">>${LOGFILE}
  echo "################################">>${LOGFILE}
  exit 0

3. 将脚本设置为可执行
  chmod a+x /etc/rc.d/init.d/oracle
  授权后,可手工用下面命令测试前面脚本的正确性:
   a. 启动
    /etc/rc.d/init.d/oracle start
   b. 停止
    /etc/rc.d/init.d/oracle stop
   c. 重启
    /etc/rc.d/init.d/oracle restart
4. 手工添加服务
 a.手工添加到chkconfig
    chkconfig --add /etc/rc.d/init.d/oracle
    b.查看oracle服务的开机启动级别
     chkconfig --list oracle 或
     chkconfig | grep oracle
    #c.修改oracle服务的开机启动级别
    #chkconfig --level 24 oracle off
    #chkconfig --level 35 oracle on
   注意:
     如果在启动脚本前不加下面两行,会出现"服务不支持 chkconfig"
  #chkconfig: 2345 20 80
    #description: Oracle dbstart/dbshut
5. 手工测试服务
  service oracle start
  service oracle stop
  service oracle restart
6.建立连接
  a.关机执行
  ln -s /etc/init.d/oracle /etc/rc.d/rc0.d/K01oracle
  b.重启执行
  ln -s /etc/init.d/oracle /etc/rc.d/rc6.d/K01oracle
  c.开机执行(Oracle10g以后能自启动了,可以省掉这步)
  ln -s /etc/init.d/oracle /etc/rc.d/rc3.d/S99oracle
  ln -s /etc/init.d/oracle /etc/rc.d/rc5.d/S99oracle
7.重启测试下
  reboot
  cat /var/log/oracle.log
 
备注:
  脚本中可以看到,start与stop时,弄了个/var/lock/subsys/oracle。
如果不增加这个文件的处理,在系统关闭时,你会发现stop并没有执行。
原因可以看看<<简单的Linux开机服务知识>>

MAIL: xcl_168@aliyun.com

BLOG: http://blog.csdn.net/xcl168


C++ 引用调用

上一篇:一致性hash和solr千万级数据分布式搜索引擎中的应用


下一篇:快速、冒泡、选择、直接插入C语言实现