精华内容
下载资源
问答
  • oracle DBA 常用监控脚本 一数据库构架体系 1表空间的监控是一个重要的任务,我们必须时刻关心表空间的设置,是否满足现在应用的需求,以下的语句可以查询到表空间的详细信息 SELECT TABLESPACE_NAME,INITIAL_EXTENT,...
  • mysql监控脚本常用命令整理,感兴趣的朋友可以了解下哈
  • mysql常用监控脚本命令列表

    千次阅读 2013-04-07 09:09:54
    #/bin/sh #检测mysql server是否正常提供服务 mysqladmin -u sky -ppwd -h localhost ping ...mysqladmin -u sky -ppwd -h ... 整理出来的常用的shell脚本会放到 https://github.com/zhwj184/shell-work  这。
    #/bin/sh
    
    
    #检测mysql server是否正常提供服务
    mysqladmin -u sky -ppwd -h localhost ping
    
    
    #获取mysql当前的几个状态值
    mysqladmin -u sky -ppwd -h localhost status
    
    
    #获取数据库当前的连接信息
    mysqladmin -u sky -ppwd -h localhost processlist
    
    
    #获取当前数据库的连接数
    mysql -u root -p123456 -BNe "select host,count(host) from processlist group by host;" information_schema
    
    
    #显示mysql的uptime
    mysql -e"SHOW STATUS LIKE '%uptime%'"|awk '/ptime/{ calc = $NF / 3600;print $(NF-1), calc"Hour" }'
    
    
    #查看数据库的大小
    mysql -u root -p123456-e 'select table_schema,round(sum(data_length+index_length)/1024/1024,4) from information_schema.tables group by table_schema;'
    
    
    #查看某个表的列信息
    mysql -u <user> --password=<password> -e "SHOW COLUMNS FROM <table>" <database> | awk '{print $1}' | tr "\n" "," | sed 's/,$//g'
    
    
    #执行mysql脚本
    mysql -u user-name -p password < script.sql
    
    
    #mysql dump数据导出
    mysqldump -uroot -T/tmp/mysqldump test test_outfile --fields-enclosed-by=\" --fields-terminated-by=,
    
    
    #mysql数据导入
    mysqlimport --user=name --password=pwd test --fields-enclosed-by=\" --fields-terminated-by=, /tmp/test_outfile.txt
    LOAD DATA INFILE '/tmp/test_outfile.txt' INTO TABLE test_outfile FIELDS TERMINATED BY '"' ENCLOSED BY ',';
    
    
    #mysql进程监控
    ps -ef | grep "mysqld_safe" | grep -v "grep"
    ps -ef | grep "mysqld" | grep -v "mysqld_safe"| grep -v "grep"
    
    
    
    
    #查看当前数据库的状态
    mysql -u root -p123456 -e 'show status'
    
    
    
    
    #mysqlcheck 工具程序可以检查(check),修 复( repair),分 析( analyze)和优化(optimize)MySQL Server 中的表
    mysqlcheck -u root -p123456 --all-databases
    
    
    #mysql qps查询  QPS = Questions(or Queries) / Seconds
    mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Questions"'
    mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Queries"'
    
    
    #mysql Key Buffer 命中率  key_buffer_read_hits = (1 - Key_reads / Key_read_requests) * 100%  key_buffer_write_hits= (1 - Key_writes / Key_write_requests) * 100%
    mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Key%"'
    
    
    #mysql Innodb Buffer 命中率  innodb_buffer_read_hits=(1-Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests) * 100%
    mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Innodb_buffer_pool_read%"'
    
    
    #mysql Query Cache 命中率 Query_cache_hits= (Qcache_hits / (Qcache_hits + Qcache_inserts)) * 100%
    mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Qcache%"'
    
    
    #mysql Table Cache 状态量
    mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Open%"'
    
    
    #mysql Thread Cache 命中率  Thread_cache_hits = (1 - Threads_created / Connections) * 100%  正常来说,Thread Cache 命中率要在 90% 以上才算比较合理。
    mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Thread%"'
    
    
    #mysql 锁定状态:锁定状态包括表锁和行锁两种,我们可以通过系统状态变量获得锁定总次数,锁定造成其他线程等待的次数,以及锁定等待时间信息
    mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "%lock%"'
    
    
    #mysql 复制延时量 在slave节点执行
    mysql -u root -p123456 -e 'SHOW SLAVE STATUS'
    
    
    #mysql Tmp table 状况 Tmp Table 的状况主要是用于监控 MySQL 使用临时表的量是否过多,是否有临时表过大而不得不从内存中换出到磁盘文件上
    mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Created_tmp%"'
    
    
    #mysql Binlog Cache 使用状况:Binlog Cache 用于存放还未写入磁盘的 Binlog 信 息 。
    mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Binlog_cache%"'
    
    
    #mysql nnodb_log_waits 量:Innodb_log_waits 状态变量直接反应出 Innodb Log Buffer 空间不足造成等待的次数
    mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Innodb_log_waits'

     



     

     

      整理出来的常用的shell脚本会放到https://github.com/zhwj184/shell-work 这。

     

     整理出来的常用的shell脚本会放到https://github.com/zhwj184/shell-work 这。

     

     整理出来的常用的shell脚本会放到https://github.com/zhwj184/shell-work 这。

    展开全文
  • 常用shell监控脚本.txt

    2011-11-18 11:18:11
    shell常用监控脚本.监控网络服务器运行情况,常见的服务监控。
  • 几个常用监控脚本

    2014-08-26 15:25:31
    收集的几个 linux 监控脚本,测试可用
  • 为大家提供五个常用linux监控脚本(查看主机网卡流量、系统状况监控、监控主机的磁盘空间,当使用空间超过90%就通过发mail来发警告、监控CPU和内存的使用情况、全方位监控主机),有需要的朋友不妨看看哦
  • 常用的Linux监控脚本代码.docx
  • 关于最耗资源、表空间使用情况、查看锁等监控脚本整理。
  • 监控Oracle数据库的常用shell脚本
  • 五个常用的Linux监控脚本代码.docx
  • 本文介绍了几个常用的Linux监控脚本,可以实现主机网卡流量、系统状况、主机磁盘空间、CPU和内存的使用情况等方面的自动监控与报警。根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性
  • Linux常用的系统监控shell脚本
  • 本文介绍了几个常用的Linux监控脚本,可以实现主机网卡流量、系统状况、主机磁盘空间、CPU和内存的使用情况等方面的自动监控与报警。根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性。  ...

    本文介绍了几个常用的Linux监控脚本,可以实现主机网卡流量、系统状况、主机磁盘空间、CPU和内存的使用情况等方面的自动监控与报警。根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性。

        AD:

        最近时不时有互联网的朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性。

        下面是我常用的几个主机监控的脚本,大家可以根据自己的情况再进行修改,希望能给大家一点帮助。

        1、查看主机网卡流量

        #!/bin/bash #network #Mike.Xu while : ; do time='date +%m"-"%d" "%k":"%M' day='date +%m"-"%d' rx_before='ifconfig eth0|sed -n "8"p|awk '{print $2}'|cut -c7-' tx_before='ifconfig eth0|sed -n "8"p|awk '{print $6}'|cut -c7-' sleep 2 rx_after='ifconfig eth0|sed -n "8"p|awk '{print $2}'|cut -c7-' tx_after='ifconfig eth0|sed -n "8"p|awk '{print $6}'|cut -c7-' rx_result=$[(rx_after-rx_before)/256] tx_result=$[(tx_after-tx_before)/256] echo "$time Now_In_Speed: "$rx_result"kbps Now_OUt_Speed: "$tx_result"kbps" sleep 2 done

        2、系统状况监控

        #!/bin/sh #systemstat.sh #Mike.Xu IP=192.168.1.227 top -n 2| grep "Cpu" 》./temp/cpu.txt free -m | grep "Mem" 》 ./temp/mem.txt df -k | grep "sda1" 》 ./temp/drive_sda1.txt #df -k | grep sda2 》 ./temp/drive_sda2.txt df -k | grep "/mnt/storage_0" 》 ./temp/mnt_storage_0.txt df -k | grep "/mnt/storage_pic" 》 ./temp/mnt_storage_pic.txt time=`date +%m"."%d" "%k":"%M` connect=`netstat -na | grep "219.238.148.30:80" | wc -l` echo "$time $connect" 》 ./temp/connect_count.txt

        3、监控主机的磁盘空间,当使用空间超过90%就通过发mail来发警告

        #!/bin/bash #monitor available disk space SPACE='df | sed -n '/ \ / $ / p' | gawk '{print $5}' | sed 's/%//' if [ $SPACE -ge 90 ] then fty89@163.com fi

        4、 监控CPU和内存的使用情况

        #!/bin/bash #script to capture system statistics OUTFILE=/home/xu/capstats.csv

        DATE='date +%m/%d/%Y'

        TIME='date +%k:%m:%s'

        TIMEOUT='uptime'

        VMOUT='vmstat 1 2'

        USERS='echo $TIMEOUT | gawk '{print $4}' '

        LOAD='echo $TIMEOUT | gawk '{print $9}' | sed "s/,//' '

        FREE='echo $VMOUT | sed -n '/[0-9]/p' | sed -n '2p' | gawk '{print $4} ' '

        IDLE='echo  $VMOUT | sed -n '/[0-9]/p' | sed -n '2p' |gawk '{print $15}' '

        echo "$DATE,$TIME,$USERS,$LOAD,$FREE,$IDLE" 》 $OUTFILE

        5、全方位监控主机

        #!/bin/bash # check_xu.sh # 0 * * * * /home/check_xu.sh DAT="`date +%Y%m%d`" HOUR="`date +%H`" DIR="/home/oslog/host_${DAT}/${HOUR}" DELAY=60 COUNT=60 # whether the responsible directory exist if ! test -d ${DIR} then /bin/mkdir -p ${DIR} fi # general check export TERM=linux /usr/bin/top -b -d ${DELAY} -n ${COUNT} > ${DIR}/top_${DAT}.log 2>&1 & # cpu check /usr/bin/sar -u ${DELAY} ${COUNT} > ${DIR}/cpu_${DAT}.log 2>&1 & #/usr/bin/mpstat -P 0 ${DELAY} ${COUNT} > ${DIR}/cpu_0_${DAT}.log 2>&1 & #/usr/bin/mpstat -P 1 ${DELAY} ${COUNT} > ${DIR}/cpu_1_${DAT}.log 2>&1 & # memory check /usr/bin/vmstat ${DELAY} ${COUNT} > ${DIR}/vmstat_${DAT}.log 2>&1 & # I/O check /usr/bin/iostat ${DELAY} ${COUNT} > ${DIR}/iostat_${DAT}.log 2>&1 & # network check /usr/bin/sar -n DEV ${DELAY} ${COUNT} > ${DIR}/net_${DAT}.log 2>&1 & #/usr/bin/sar -n EDEV ${DELAY} ${COUNT} > ${DIR}/net_edev_${DAT}.log 2>&1 &

        放在crontab里每小时自动执行:

        0 * * * * /home/check_xu.sh

        这样会在/home/oslog/host_yyyymmdd/hh目录下生成各小时cpu、内存、网络,IO的统计数据。

        如果某个时间段产生问题了,就可以去看对应的日志信息,看看当时的主机性能如何。

    展开全文
  • android手机,python脚本,shell脚本,抓取android手机内存等信息,并绘图
  • 转 8个DBA最常用监控Oracle数据库的常用shell脚本https://blog.csdn.net/tianlesoftware/article/details/4792798 本文介绍了8个常用监控数据shell脚本。首先回顾了一些DBA常用的Unix命令,以及解释了如何通过...

    转 8个DBA最常用的监控Oracle数据库的常用shell脚本https://blog.csdn.net/tianlesoftware/article/details/4792798  本文介绍了8个常用的监控数据shell脚本。首先回顾了一些DBA常用的Unix命令,以及解释了如何通过Unix Cron来定时执行DBA脚本。网上也有好多类似的文章,但基本上都不能正常运行,花点时间重新整理了下,以后就能直接使用了。

    一.同时文章还介绍了8个重要的脚本来监控Oracle数据库:
    1.检查实例的可用性
    2.检查监听器的可用性
    3.检查alert日志文件中的错误信息
    4.在存放log文件的地方满以前清空旧的log文件
    5.分析table和index以获得更好的性能
    6.检查表空间的使用情况
    7.找出无效的对象
    8.监控用户和事务

    二.DBA需要的Unix基本知识
    基本的UNIX命令,以下是一些常用的Unix命令:
    ps--显示进程
    grep--搜索文件中的某种文本模式
    mailx--读取或者发送mail
    cat--连接文件或者显示它们
    cut--选择显示的列
    awk--模式匹配语言
    df--显示剩余的磁盘空间

    以下是DBA如何使用这些命令的一些例子:

    1. 显示服务器上的可用实例:
    $ ps -ef| grep smon
      oracle 22086     1  0 02:32:24 ?        0:04 ora_smon_PPRD10
    oracle  5215 28972  0 08:10:19 pts/4    0:00 grep smon

    2. 显示服务器上的可用监听器:
    $ ps -ef grep listener grep -v grep
    (grep命令应该加上-i参数,即grep -i listener,该参数的作用是忽略大小写,因为有些时候listener是大写的,这时就会看不到结果)
    $ ps -ef|grep -i listener
      oracle  9655     1  0   Mar 12 ?        0:01 /data/app/oracle/9.2.0/bin/tnslsnr LISTENER -inherit
      oracle 22610     1  0 02:45:02 ?        0:02 /data/app/oracle/10.2.0/bin/tnslsnr LISTENER -inherit
    oracle  5268 28972  0 08:13:02 pts/4    0:00 grep -i listener

    3. 查看Oracle存档目录的文件系统使用情况
    $ df -k | grep /data
    /dev/md/dsk/d50      104977675 88610542 15317357    86%    /data

    4. 统计alter.log文件中的行数:
    $ cat alert_PPRD10.log | wc -l
       13124
    $ more alert_PPRD10.log | wc -l
       13124

    5. 列出alert.log文件中的全部Oracle错误信息:
    $ grep ORA-* alert.log
    ORA-00600: internal error code, arguments: [kcrrrfswda.1], [], [], [], [], []
    ORA-00600: internal error code, arguments: [1881], [25860496], [25857716], []

    6. CRONTAB基本
    一个crontab文件中包含有六个字段:
    分钟 0-59
    小时 0-23
    月中的第几天 1-31
    月份 1 - 12
    星期几 0 - 6, with 0 = Sunday

    7. Unix命令或者Shell脚本
    要编辑一个crontab文件,输入: Crontab -e
    要查看一个crontab文件,输入: Crontab -l
    0 4 * * 5 /dba/admin/analyze_table.ksh
    30 3 * * 3,6 /dba/admin/hotbackup.ksh /dev/null 2>&1
    在上面的例子中,第一行显示了一个分析表的脚本在每个星期5的4:00am运行。第二行显示了一个执行热备份的脚本在每个周三和周六的3:00a.m.运行。

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

    1. 检查Oracle实例的可用性
    oratab文件中列出了服务器上的所有数据库
    $ cat /var/opt/oracle/oratab
    #

    # This file is used by ORACLE utilities.  It is created by root.sh
    # and updated by the Database Configuration Assistant when creating
    # a database.

    # A colon, ':', is used as the field terminator.  A new line terminates
    # the entry.  Lines beginning with a pound sign, '#', are comments.
    #
    # Entries are of the form:
    #   $ORACLE_SID:$ORACLE_HOME:<N|Y>:
    #
    # The first and second fields are the system identifier and home
    # directory of the database respectively.  The third filed indicates
    # to the dbstart utility that the database should , "Y", or should not,
    # "N", be brought up at system boot time.
    #
    # Multiple entries with the same $ORACLE_SID are not allowed.
    #
    #
    # *:/data/app/oracle/9.2.0:N
    TRNG:/data/app/oracle/9.2.0:Y
    *:/data/app/oracle/9.2.0:N
    PPRD:/data/app/oracle/10.2.0:Y
    PPRD10:/data/app/oracle/10.2.0:N

    以下的脚本检查oratab文件中列出的所有数据库,并且找出该数据库的状态(启动还是关闭)
    ###################################################################
    ## ckinstance.ksh ##
    ###################################################################
    ORATAB=/var/opt/oracle/oratab
    echo "`date` "
    echo "Oracle Database(s) Status `hostname` :/n"
    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

    以下是实例可用性的报表:
    $ sh ckinstance.ksh
    Wed May 13 12:51:20 PDT 2009
    Oracle Database(s) Status gambels :
    Oracle Instance - PPRD: Up
    Oracle Instance - PPRD10: Up

    2. 检查Oracle监听器的可用性
    以下有一个类似的脚本检查Oracle监听器。假如监听器停了,该脚本将会重新启动监听器:
    #####################################################################
    ## cklsnr.sh ##
    #####################################################################
    #!/bin/ksh
    TNS_ADMIN=/var/opt/oracle; export TNS_ADMIN
    ORACLE_SID= PPRD10; export ORACLE_SID
    ORAENV_ASK=NO; export ORAENV_ASK
    PATH=$PATH:/bin:/usr/local/bin; export PATH
    . oraenv
    DBALIST="tianlesoftware@vip.qq.com,tianlesoftware@hotmail.com";export DBALIST
    cd /var/opt/oracle
    rm -f lsnr.exist
    ps -ef | grep PPRD10 | grep -v grep > lsnr.exist
    if [ -s lsnr.exist ]
    then
    echo
    else
    echo "Alert" | mailx -s "Listener 'PPRD10' on `hostname` is down" $DBALIST
    lsnrctl start PPRD10
    fi

    3. 检查Alert日志(ORA-XXXXX)
    ####################################################################
    ## ckalertlog.sh ##
    ####################################################################
    #!/bin/ksh

    EDITOR=vi; export EDITOR
    ORACLE_SID=PPRD10; export ORACLE_SID
    ORACLE_BASE=/data/app/oracle; export ORACLE_BASE
    ORACLE_HOME=$ORACLE_BASE/10.2.0; 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="tianlesoftware@vip.qq.com,tianlesoftware@hotmail.com";export DBALIST

    cd $ORACLE_BASE/admin/PPRD10/bdump
    if [ -f alert_PPRD10.log ]
    then
    mv alert_PPRD10.log alert_work.log
    touch alert_PPRD10.log
    cat alert_work.log >> alert_PPRD10.hist
    grep ORA- alert_work.log > alert.err
    fi
    if [ `cat alert.err | wc -l` -gt 0 ]
    then
    mailx -s " PPRD10  ORACLE  ALERT  ERRORS" $DBALIST < alert.err
    fi
    rm -f alert.err
    rm -f alert_work.log


    4. 清除旧的归档文件
    以下的脚本将会在log文件达到90%容量的时候清空旧的归档文件:
    $ df -k | grep arch
    Filesystem kbytes used avail capacity Mounted on
    /dev/vx/dsk/proddg/archive 71123968 30210248 40594232 43% /u08/archive

    #######################################################################
    ## clean_arch.ksh ##
    #######################################################################
    #!/bin/ksh
    df -k | grep arch > dfk.result
    archive_filesystem=`awk -F" " '{ print $6 }' dfk.result`
    archive_capacity=`awk -F" " '{ print $5 }' dfk.result`

    if [ $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

    5. 分析表和索引(以得到更好的性能)
    以下我将展示假如传送参数到一个脚本中:
    ####################################################################
    ## analyze_table.sh ##
    ####################################################################
    #!/bin/ksh
    # input parameter: 1: passWord # 2: SID
    if (($#<1)) then echo "Please enter 'oracle' user password as the first parameter !" exit 0
    fi
    if (($#<2)) then echo "Please enter instance name as the second parameter!" exit 0
    fi
    要传入参数以执行该脚本,输入:
    $ analyze_table.sh manager oradb1
    脚本的第一部分产生了一个analyze.sql文件,里面包含了分析表用的语句。脚本的第二部分分析全部的表:
    #################################################################
    ## analyze_table.sh ##
    #################################################################
    sqlplus -s '/ as sysdba' <<EOF
    set heading off
    set feed off
    set pagesize 200
    set linesize 100
    spool analyze_table.sql
    select 'ANALYZE TABLE ' || owner || '.' || segment_name ||
    ' ESTIMATE STATISTICS SAMPLE 10 PERCENT;'
    from dba_segments
    where segment_type = 'TABLE'
    and owner not in ('SYS', 'SYSTEM');
    spool off
    exit
    EOF
    sqlplus -s '/ as sysdba' <<EOF
    @./analyze_table.sql
    exit
    EOF

    以下是analyze.sql的一个例子:
    $ cat analyze.sql
    ANALYZE TABLE HIRWIN.JANUSAGE_SUMMARY ESTIMATE STATISTICS SAMPLE 10 PERCENT;
    ANALYZE TABLE HIRWIN.JANUSER_PROFILE ESTIMATE STATISTICS SAMPLE 10 PERCENT;
    ANALYZE TABLE APPSSYS.HIST_SYSTEM_ACTIVITY ESTIMATE STATISTICS SAMPLE 10 PERCENT;
    ANALYZE TABLE HTOMEH.QUEST_IM_VERSION ESTIMATE STATISTICS SAMPLE 10 PERCENT;
    ANALYZE TABLE JSTENZEL.HIST_SYS_ACT_0615 ESTIMATE STATISTICS SAMPLE 10 PERCENT;


    6. 检查表空间的使用
    以下的脚本检测表空间的使用。假如表空间只剩下10%,它将会发送一个警告email。
    #####################################################################
    ## ck_tbsp.sh ##
    #####################################################################
    #!/bin/ksh

    EDITOR=vi; export EDITOR
    ORACLE_SID=PPRD10; export ORACLE_SID
    ORACLE_BASE=/data/app/oracle; export ORACLE_BASE
    ORACLE_HOME=$ORACLE_BASE/10.2.0; 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="tianlesoftware@vip.qq.com,tianlesoftware@hotmail.com";export DBALIST


    sqlplus -s '/ as sysdba' <<EOF
    set feed off
    set linesize 100
    set pagesize 200
    column "USED (MB)" format a10
    column "FREE (MB)" format a10
    column "TOTAL (MB)" format a10
    column PER_FREE format a10
    spool tablespace.alert
    SELECT F.TABLESPACE_NAME,
    TO_CHAR ((T.TOTAL_SPACE - F.FREE_SPACE),'999,999') "USED (MB)",
    TO_CHAR (F.FREE_SPACE, '999,999') "FREE (MB)",
    TO_CHAR (T.TOTAL_SPACE, '999,999') "TOTAL (MB)",
    TO_CHAR ((ROUND ((F.FREE_SPACE/T.TOTAL_SPACE)*100)),'999')||' %' PER_FREE
    FROM (
    SELECT TABLESPACE_NAME,
    ROUND (SUM (BLOCKS*(SELECT VALUE/1024
    FROM V/$PARAMETER
    WHERE NAME = 'db_block_size')/1024)
    ) FREE_SPACE
    FROM DBA_FREE_SPACE
    GROUP BY TABLESPACE_NAME
    ) F,
    (
    SELECT TABLESPACE_NAME,
    ROUND (SUM (BYTES/1048576)) TOTAL_SPACE
    FROM DBA_DATA_FILES
    GROUP BY TABLESPACE_NAME
    ) T
    WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME
    AND (ROUND ((F.FREE_SPACE/T.TOTAL_SPACE)*100)) < 80;
    spool off
    exit
    EOF
    if [ `cat tablespace.alert|wc -l` -gt 0 ]
    then
    cat tablespace.alert > tablespace.tmp
    mailx -s "TABLESPACE  ALERT  for  PPRD10" $DBALIST < tablespace.tmp
    fi

    警告email输出的例子如下:
    TABLESPACE_NAME                USED (MB)  FREE (MB)  TOTAL (MB) PER_FREE                            
    ------------------------------ ---------- ---------- ---------- ----------                          
    SYSTEM                              519        401        920     44 %                              
    MILLDATA                            559        441      1,000     44 %                              
    SYSAUX                              331        609        940     65 %                              
    MILLREPORTS                         146        254        400     64 %        

    7. 查找出无效的数据库对象
    以下查找出无效的数据库对象:
    #####################################################################
    ##invalid_object_alert.sh
    #####################################################################
    #!/bin/ksh
    EDITOR=vi; export EDITOR
    ORACLE_SID=PPRD10; export ORACLE_SID
    ORACLE_BASE=/data/app/oracle; export ORACLE_BASE
    ORACLE_HOME=$ORACLE_BASE/10.2.0; 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="tianlesoftware@vip.qq.com,tianlesoftware@hotmail.com";export DBALIST

    sqlplus -s '/ as sysdba' <<EOF
    set feed off
    set heading off
    column OWNER format a10
    column OBJECT_NAME format a35
    column OBJECT_TYPE format a10
    column STATUS format a10
    spool invalid_object.alert
    SELECT OWNER, OBJECT_NAME, OBJECT_TYPE, STATUS FROM DBA_OBJECTS WHERE STATUS = 'INVALID' ORDER BY OWNER, OBJECT_TYPE, OBJECT_NAME;
    spool off
    exit
    EOF
    if [ `cat invalid_object.alert | wc -l` -gt 0 ] then
    mailx -s "INVALID OBJECTS for PPRD10" $DBALIST < invalid_object.alert
    fi

    $ more invalid_object.alert

    PUBLIC     ALL_WM_LOCKED_TABLES                SYNONYM    INVALID
    PUBLIC     ALL_WM_VERSIONED_TABLES             SYNONYM    INVALID
    PUBLIC     DBA_WM_VERSIONED_TABLES             SYNONYM    INVALID
    PUBLIC     SDO_CART_TEXT                       SYNONYM    INVALID
    PUBLIC     SDO_GEOMETRY                        SYNONYM    INVALID
    PUBLIC     SDO_REGAGGR                         SYNONYM    INVALID
    PUBLIC     SDO_REGAGGRSET                      SYNONYM    INVALID
    PUBLIC     SDO_REGION                          SYNONYM    INVALID
    PUBLIC     SDO_REGIONSET                       SYNONYM    INVALID
    PUBLIC     USER_WM_LOCKED_TABLES               SYNONYM    INVALID
    PUBLIC     USER_WM_VERSIONED_TABLES            SYNONYM    INVALID
    PUBLIC     WM_COMPRESS_BATCH_SIZES             SYNONYM    INVALID

    8. 监视用户和事务(死锁等)
    以下的脚本在死锁发生的时候发送一个警告e-mail:
    ###################################################################
    ## deadlock_alert.sh ##
    ###################################################################
    #!/bin/ksh

    EDITOR=vi; export EDITOR
    ORACLE_SID=PPRD10; export ORACLE_SID
    ORACLE_BASE=/data/app/oracle; export ORACLE_BASE
    ORACLE_HOME=$ORACLE_BASE/10.2.0; 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="tianlesoftware@vip.qq.com,tianlesoftware@hotmail.com";export DBALIST

    sqlplus -s '/ as sysdba' <<EOF
    set feed off
    set heading off
    spool deadlock.alert
    SELECT SID, DECODE(BLOCK, 0, 'NO', 'YES' ) BLOCKER,
    DECODE(REQUEST, 0, 'NO','YES' ) WAITER
    FROM V/$LOCK
    WHERE REQUEST > 0 OR BLOCK > 0
    ORDER BY block DESC;
    spool off
    exit
    EOF
    if [ `cat deadlock.alert | wc -l` -gt 0 ]
    then
    mailx -s "DEADLOCK ALERT for PPRD10" $DBALIST < deadlock.alert
    fi

    四. 结论
    0,20,40 7-17 * * 1-5 /dba/scripts/ckinstance.sh > /dev/null 2>&1
    0,20,40 7-17 * * 1-5 /dba/scripts/cklsnr.sh > /dev/null 2>&1
    0,20,40 7-17 * * 1-5 /dba/scripts/ckalertlog.sh > /dev/null 2>&1
    30 * * * 0-6 /dba/scripts/clean_arch.sh > /dev/null 2>&1
    * 5 * * 1,3 /dba/scripts/analyze_table.sh > /dev/null 2>&1
    * 5 * * 0-6 /dba/scripts/ck_tbsp.sh > /dev/null 2>&1
    * 5 * * 0-6 /dba/scripts/invalid_object_alert.sh > /dev/null 2>&1
    0,20,40 7-17 * * 1-5 /dba/scripts/deadlock_alert.sh > /dev/null 2>&1
    通过以上的脚本,可大大减轻你的工作。你可以使用这些是来做更重要的工作,例如性能调整。

    分享资料:

    链   接 : https://pan.baidu.com/s/1ihwAYjeMbq1RInmNKeRxqw

    提取码: wwsc


     

    展开全文
  • oracle 常用数据字典 字段的详细介绍和DBA常用监控脚本
  • DBA相关监控脚本, 用于监控Oracle数据库状态的常用语句
  • mysql监控-常用的mysql监控脚本

    千次阅读 2015-06-18 21:25:40
    执行mysql脚本 mysql -u user-name -p password mysql dump数据导出 mysqldump -uroot -T/tmp/mysqldump test test_outfile –fields-enclosed-by=\” –fields-terminated-by=, mysql数据导入 ...

    检测mysql server是否正常提供服务

    mysqladmin -u sky -ppwd -h localhost ping

    获取mysql当前的几个状态值

    mysqladmin -u sky -ppwd -h localhost status

    获取数据库当前的连接信息

    mysqladmin -u sky -ppwd -h localhost processlist

    获取当前数据库的连接数

    mysql -u root -p123456 -BNe “select host,count(host) from processlist group by host;” information_schema

    显示mysql的uptime

    mysql -e”SHOW STATUS LIKE ‘%uptime%’”|awk ‘/ptime/{ calc = NF/3600;print (NF-1), calc”Hour” }’

    查看数据库的大小

    mysql -u root -p123456-e ‘select table_schema,round(sum(data_length+index_length)/1024/1024,4) from information_schema.tables group by table_schema;’

    查看某个表的列信息

    mysql -u –password= -e “SHOW COLUMNS FROM

    ” | awk ‘{print 1}' | tr "\n" "," | sed 's/,//g’

    执行mysql脚本

    mysql -u user-name -p password < script.sql

    mysql dump数据导出

    mysqldump -uroot -T/tmp/mysqldump test test_outfile –fields-enclosed-by=\” –fields-terminated-by=,

    mysql数据导入

    mysqlimport –user=name –password=pwd test –fields-enclosed-by=\” –fields-terminated-by=, /tmp/test_outfile.txt
    LOAD DATA INFILE ‘/tmp/test_outfile.txt’ INTO TABLE test_outfile FIELDS TERMINATED BY ‘”’ ENCLOSED BY ‘,’;

    mysql进程监控

    ps -ef | grep “mysqld_safe” | grep -v “grep”
    ps -ef | grep “mysqld” | grep -v “mysqld_safe”| grep -v “grep”

    查看当前数据库的状态

    mysql -u root -p123456 -e ‘show status’

    mysqlcheck 工具程序可以检查(check),修 复( repair),分 析( analyze)和优化(optimize)MySQL Server 中的表

    mysqlcheck -u root -p123456 –all-databases

    mysql qps查询 QPS = Questions(or Queries) / Seconds

    mysql -u root -p123456 -e ‘SHOW /!50000 GLOBAL / STATUS LIKE “Questions”’
    mysql -u root -p123456 -e ‘SHOW /!50000 GLOBAL / STATUS LIKE “Queries”’

    mysql Key Buffer 命中率 key_buffer_read_hits = (1 - Key_reads / Key_read_requests) * 100% key_buffer_write_hits= (1 - Key_writes / Key_write_requests) * 100%

    mysql -u root -p123456 -e ‘SHOW /!50000 GLOBAL / STATUS LIKE “Key%”’

    mysql Innodb Buffer 命中率 innodb_buffer_read_hits=(1-Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests) * 100%

    mysql -u root -p123456 -e ‘SHOW /!50000 GLOBAL / STATUS LIKE “Innodb_buffer_pool_read%”’

    mysql Query Cache 命中率 Query_cache_hits= (Qcache_hits / (Qcache_hits + Qcache_inserts)) * 100%

    mysql -u root -p123456 -e ‘SHOW /!50000 GLOBAL / STATUS LIKE “Qcache%”’

    mysql Table Cache 状态量

    mysql -u root -p123456 -e ‘SHOW /!50000 GLOBAL / STATUS LIKE “Open%”’

    mysql Thread Cache 命中率 Thread_cache_hits = (1 - Threads_created / Connections) * 100% 正常来说,Thread Cache 命中率要在 90% 以上才算比较合理。

    mysql -u root -p123456 -e ‘SHOW /!50000 GLOBAL / STATUS LIKE “Thread%”’

    mysql 锁定状态:锁定状态包括表锁和行锁两种,我们可以通过系统状态变量获得锁定总次数,锁定造成其他线程等待的次数,以及锁定等待时间信息

    mysql -u root -p123456 -e ‘SHOW /!50000 GLOBAL / STATUS LIKE “%lock%”’

    mysql 复制延时量 在slave节点执行

    mysql -u root -p123456 -e ‘SHOW SLAVE STATUS’

    mysql Tmp table 状况 Tmp Table 的状况主要是用于监控 MySQL 使用临时表的量是否过多,是否有临时表过大而不得不从内存中换出到磁盘文件上

    mysql -u root -p123456 -e ‘SHOW /!50000 GLOBAL / STATUS LIKE “Created_tmp%”’

    mysql Binlog Cache 使用状况:Binlog Cache 用于存放还未写入磁盘的 Binlog 信 息 。

    mysql -u root -p123456 -e ‘SHOW /!50000 GLOBAL / STATUS LIKE “Binlog_cache%”’

    mysql nnodb_log_waits 量:Innodb_log_waits 状态变量直接反应出 Innodb Log Buffer 空间不足造成等待的次数

    mysql -u root -p123456 -e ‘SHOW /!50000 GLOBAL / STATUS LIKE “Innodb_log_waits’

    展开全文
  • 几个常用的Linux操作系统监控脚本 2012-11-09 00:00中国IT实验室佚名 关键字:Linux  本文介绍了几个常用的Linux监控脚本,可以实现主机网卡流量、系统状况、主机磁盘空间、CPU和内存的使用情况等...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 70,401
精华内容 28,160
关键字:

常用监控脚本