监控Oracle数据库的常用shell脚本

来源:Oracle认证    发布时间:2012-11-12    Oracle认证视频    评论

  在上面的例子中,第一行显示了一个分析表的脚本在每个星期5的4:00am运行。第二行显示了一个执行热备份的脚本在每个周三和周六的3:00a.m.运行。

  监控数据库的常用Shell脚本

  以下提供的8个shell脚本覆盖了DBA每日监控工作的90%,你可能还需要修改UNIX的环境变量。

  检查Oracle实例的可用性

  oratab文件中列出了服务器上的所有数据库

  $ cat /var/opt/oracle/oratab

  ###################################################################

  ## /var/opt/oracle/oratab ##

  ###################################################################

  oradb1:/u01/app/oracle/product/8.1.7:Y

  oraDB2:/u01/app/oracle/product/8.1.7:Y

  oradb3:/u01/app/oracle/product/8.1.7:N

  oradb4:/u01/app/oracle/product/8.1.7:Y

  以下的脚本检查oratab文件中列出的所有数据库,并且找出该数据库的状态(启动还是关闭)

################################################
  ## ckinstance.ksh ##############################
  ORATAB=/var/opt/oracle/oratab
  echo "`date` "
  echo "Oracle Database(s) Status `hostname` :
"
  db=`egrep -i ":Y|:N" $ORATAB | cut -d":" -f1 | grep -v "#" | grep -v "*"`
  pslist="`ps -ef | grep pmon`"
  for i in $db ; do
  echo "$pslist" | grep "ora_pmon_$i" > /dev/null 2>$1
  if (( $? )); then
  echo "Oracle Instance - $i: Down"
  else
  echo "Oracle Instance - $i: Up"
  fi
  done

  使用以下的命令来确认该脚本是可以执行的:

  $ chmod 744 ckinstance.ksh

  $ ls -l ckinstance.ksh

  -rwxr--r-- 1 Oracle dba 657 Mar 5 22:59 ckinstance.ksh*

  以下是实例可用性的报表:

  $ ckinstance.ksh

  Mon Mar 4 10:44:12 PST 2002

  Oracle Database(s) Status for DBHOST server:

  Oracle Instance - oradb1: Up

  Oracle Instance - oraDB2: Up

  Oracle Instance - oradb3: Down

  Oracle Instance - oradb4: Up 

  检查Oracle监听器的可用性

  以下有一个类似的脚本检查Oracle监听器。如果监听器停了,该脚本将会重新启动监听器:

#########################################
  ## cklsnr.sh ##
  #########################################
  #!/bin/ksh
  DBALIST="primary.dba@company.com,another.dba@company.com";export DBALIST
  cd /var/opt/oracle
  rm -f lsnr.exist
  ps -ef | grep mylsnr | grep -v grep > lsnr.exist
  if [ -s lsnr.exist ]
  then
  echo
  else
  echo "Alert" | mailx -s "Listener 'mylsnr' on `hostname` is down" $DBALIST
  TNS_ADMIN=/var/opt/oracle; export TNS_ADMIN
  ORACLE_SID=db1; export ORACLE_SID
  ORAENV_ASK=NO; export ORAENV_ASK
  PATH=$PATH:/bin:/usr/local/bin; export PATH
  . oraenv
  LD_LIBRARY_PATH=${ORACLE_HOME}/lib;export LD_LIBRARY_PATH
  lsnrctl start mylsnr
  fi

  检查Alert日志(ORA-XXXXX)

  每个脚本所使用的一些环境变量可以放到一个profile中:

############################################
  ## oracle.profile ##
  ###############################################
  EDITOR=vi;export EDITOR ORACLE_BASE=/u01/app/oracle; export
  ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/8.1.7; export
  ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib; export
  LD_LIBRARY_PATH TNS_ADMIN=/var/opt/oracle;export
  TNS_ADMIN NLS_LANG=american; export
  NLS_LANG NLS_DATE_FORMAT='Mon DD YYYY HH24:MI:SS'; export
  NLS_DATE_FORMAT ORATAB=/var/opt/oracle/oratab;export
  ORATAB PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin:
  /usr/ccs/bin:/bin:/usr/bin:/usr/sbin:/
  sbin:/usr/openwin/bin:/opt/bin:.; export
  PATH DBALIST="primary.dba@company.com,
  another.dba@company.com";export
  DBALIST

  以下的脚本首先调用oracle.profile来设置全部的环境变量。如果发现任何的Oracle错误,该脚本还会给DBA发送一个警告的email。

上一页12下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答