zoukankan      html  css  js  c++  java
  • shell脚本之分析oracle数据库数据泵日志中表的大小

    1、分析日志格式如下

    . . imported "xxx_330508"."xxx_T_DATA" 46.17 MB 268 rows

    . . imported "xxx_330508"."xxx_T_CAUSERLOG" 24.74 MB 72246 rows

    . . imported "xxx_330508"."xxx_T_UIQUERYFORM" 23.98 MB 124432 rows

    . . imported "xxx_330508"."P#xxx_T_PAPAGE" 23.82 MB 102843 rows

    . . imported "xxx_330508"."yyyyy" 15.90 MB 8946 rows

    这里我主要关注红色部分的总和。

    2、用于分析上述日志的shell脚本如下:

    # vi oracle_ayalyze_dpfile.sh

    #!/bin/sh

    #echo -n "Please input analyze filename:"

    #read filename

    val01=`egrep -o "([0-9.0-9]+? GB)" $1 |egrep -o "([0-9.0-9]+?)" | awk '{sum+=$0*1024*1024}END{print sum}' | awk '{print $0*1}'`

    val02=`egrep -o "([0-9.0-9]+? MB)" $1 |egrep -o "([0-9.0-9]+?)" | awk '{sum+=$0*1024}END{print sum}' | awk '{print $0*1}'`

    val03=`egrep -o "([0-9.0-9]+? KB)" $1 |egrep -o "([0-9.0-9]+?)" | awk '{sum+=$0}END{print sum}' | awk '{print $0*1}'`

    val=`echo "$val01+$val02+$val03" | bc`

    val=`echo "scale=2;$val/1024/1024" | bc`

    echo $val"GB"

    测试:

    # /home/oracle/oracle_ayalyze_dpfile.sh /u01/app/oracle/admin/orcl/dpdump/db_xc161125.log

    12.37GB

    解释:

    1)egrep -o "([0-9.0-9]+? GB)" $1 -- 使用egrep查找匹配数据,egrep默认支持正则表达式,grep不支持正则,除非指定参数-E,参数-o表示仅返回匹配字段值,否则返回整行数据。"([0-9.0-9]+? GB)"这部分是正则规则,目的匹配日志中红色字段内容,$1表示分析文件通过参数方式传递。

    2)egrep -o "([0-9.0-9]+?)" -- 在上一步分析的基础上去掉单位

    3)awk '{sum+=$0*1024*1024}END{print sum}' --使用awk对上一步的分析结果做一个求和的操作,即sum。

    4)awk '{print $0*1}' --为了防止大数字使用科学计数法表示

    5)val=`echo "$val01+$val02+$val03" | bc` --对上面计算出的3个结果进行一个求和操作,单位为kb

    6)val=`echo "scale=2;$val/1024/1024" | bc` --将单位为kb的结果转换为单位为gb的结果

    7)echo $val"GB" --输出结果,打印在控制台

  • 相关阅读:
    Thinkphp回顾(五)之前台模板中的基本语法
    Thinkphp回顾之(四)查询方法深入学习
    Thinkphp框架回顾(三)之怎么实现平常的sql操作数据库
    Thinkphp学习回顾(二)之config.php的配置
    Thinkphp学习回顾(一)之基本结构目录
    端口
    curl put delete post get请求类型参数
    xshell连接virtualbox下的linux系统
    实现jsonp的三种方式
    匹配汉字
  • 原文地址:https://www.cnblogs.com/wcwen1990/p/7020121.html
Copyright © 2011-2022 走看看