监控oracle数据库的常用shell脚本文库

上传人:ji****n 文档编号:45689077 上传时间:2018-06-18 格式:DOC 页数:9 大小:47.50KB
返回 下载 相关 举报
监控oracle数据库的常用shell脚本文库_第1页
第1页 / 共9页
监控oracle数据库的常用shell脚本文库_第2页
第2页 / 共9页
监控oracle数据库的常用shell脚本文库_第3页
第3页 / 共9页
监控oracle数据库的常用shell脚本文库_第4页
第4页 / 共9页
监控oracle数据库的常用shell脚本文库_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《监控oracle数据库的常用shell脚本文库》由会员分享,可在线阅读,更多相关《监控oracle数据库的常用shell脚本文库(9页珍藏版)》请在金锄头文库上搜索。

1、监控 Oracle 数据库的常用 shell 脚本文库.txt 吃吧吃吧不是罪,再胖的人也有权利去增肥! 苗条背后其实是憔悴,爱你的人不会在乎你的腰围!尝尝阔别已久美食的滋味,就算撑死也 是一种美!减肥最可怕的不是饥饿,而是你明明不饿但总觉得非得吃点什么才踏实。文章介 绍了 DBA 每天在监控 Oracle 数据库方面的职责,讲述了如何通过 shell 脚本来完成这些重 复的监控工作。本文首先回顾了一些 DBA 常用的 Unix 命令,以及解释了如何通过 Unix Cron 来定时执行 DBA 脚本。同时文章还介绍了 8 个重要的脚本来监控 Oracle 数据库: 检查实例的可用性检查监听器的

2、可用性检查 alert 日志文件中的错误信息在存放 log 文件的地方满以前清空旧的 log 文件分析 table 和 index 以获得更好的性能检查表空间的使用情况找出无效的对象监控用户和事务DBA 需要的 Unix 基本知识基本的 UNIX 命令以下是一些常用的 Unix 命令:ps-显示进程grep-搜索文件中的某种文本模式mailx-读取或者发送 mailcat-连接文件或者显示它们cut-选择显示的列awk-模式匹配语言df-显示剩余的磁盘空间以下是 DBA 如何使用这些命令的一些例子:显示服务器上的可用实例:$ ps -ef | grep smon oracle 21832 1

3、0 Feb 24 ? 19:05 ora_smon_oradb1 oracle 898 1 0 Feb 15 ? 0:00 ora_smon_oradb2 dliu 25199 19038 0 10:48:57 pts/6 0:00 grep smon oracle 27798 1 0 05:43:54 ? 0:00 ora_smon_oradb3 oracle 28781 1 0 Mar 03 ? 0:01 ora_smon_oradb4、 显示服务器上的可用监听器:$ ps -ef | grep listener | grep -v grep (译者注:grep 命令应该加上-i 参数,即

4、 grep -i listener,该参数的作用是忽略大小写, 因为有些时候 listener 是大写的,这时就会看不到结果)oracle 23879 1 0 Feb 24 ? 33:36 /8.1.7/bin/tnslsnr listener_db1 -inherit oracle 27939 1 0 05:44:02 ? 0:00 /8.1.7/bin/tnslsnr listener_db2 -inherit oracle 23536 1 0 Feb 12 ? 4:19 /8.1.7/bin/tnslsnr listener_db3 -inherit oracle 28891 1 0 M

5、ar 03 ? 0:01 /8.1.7/bin/tnslsnr listener_db4 -inherit 查看 Oracle 存档目录的文件系统使用情况$ df -k | grep oraarch /dev/vx/dsk/proddg/oraarch 71123968 4754872 65850768 7% /u09/oraarch 统计 alter.log 文件中的行数:$ cat alert.log | wc -l 2984列出 alert.log 文件中的全部 Oracle 错误信息:$ grep ORA- alert.log ORA-00600: internal error cod

6、e, arguments: kcrrrfswda.1, , , , , ORA-00600: internal error code, arguments: 1881, 25860496, 25857716, CRONTAB 基本一个 crontab 文件中包含有六个字段:分钟 0-59 小时 0-23 月中的第几天 1-31 月份 1 - 12 星期几 0 - 6, with 0 = Sunday Unix 命令或者 Shell 脚本要编辑一个 crontab 文件,输入:Crontab -e要查看一个 crontab 文件,输入:Crontab -l 0 4 * * 5 /dba/admi

7、n/analyze_table.ksh 30 3 * * 3,6 /dba/admin/hotbackup.ksh /dev/null 2 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 o

8、racle 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 监

9、听器。如果监听器停了,该脚本将会重新启动监 听器:# # cklsnr.sh # # #!/bin/ksh DBALIST=“,“;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

10、 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_PATHlsnrctl start mylsnr fi检查 Alert 日志(ORA-XXXXX)每个脚本所使用的一些环境变量可以放到一个 profile 中:# # oracle.profile # # EDITOR=vi;expor

11、t 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 NL

12、S_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=“,“;export DBALIST 以下的脚本首先调用 oracle.profile 来设置全部的环境变量。如果发现任何的 Oracle 错误,该脚本还会给 DBA 发送一个警告的 email。# # ckale

13、rtlog.sh # # #!/bin/ksh . /etc/oracle.profile for SID in cat $ORACLE_HOME/sidlist do cd $ORACLE_BASE/admin/$SID/bdump if -f alert_$SID.log then mv alert_$SID.log alert_work.log touch alert_$SID.log cat alert_work.log alert_$SID.hist grep ORA- alert_work.log alert.err fi if cat alert.err|wc -l -gt 0

14、then mailx -s “$SID ORACLE ALERT ERRORS“ $DBALIST dfk.result archive_filesystem=awk -F“ “ print $6 dfk.result archive_capacity=awk -F“ “ print $5 dfk.resultif $archive_capacity 90% then echo “Filesystem $archive_filesystem is $archive_capacity filled“ # try one of the following option depend on your need find $archive_filesystem -type f -mtime +2 -exec rm -r ; tar rman fi分析表和索引(以得到更好的性能)以下我将展示如果传送参数到一个脚本中:# # analyze_table.sh # # #!/bin/ksh # input parameter: 1: password # 2: SID if ($# tablespace.tmp mailx -s “TABLESPACE A

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号