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" --输出结果,打印在控制台

shell脚本之分析oracle数据库数据泵日志中表的大小的更多相关文章

  1. [转]oracle 10g数据泵之impdp-同时导入多个文件

    要了解impdp,请先了解导出,我之前作过导出的笔记:oracle 10g数据泵之expdp.这两个笔记也许只对程序员有用,通常用于把正式区的数据导入到测试区,对数据库管理员也许帮助不大,他们使用这些 ...

  2. oracle数据库数据导入导出步骤(入门)

    oracle数据库数据导入导出步骤(入门) 说明: 1.数据库数据导入导出方法有多种,可以通过exp/imp命令导入导出,也可以用第三方工具导出,如:PLSQL 2.如果熟悉命令,建议用exp/imp ...

  3. Oracle使用数据泵导入/导出数据(expdp/impdp)

    Oracle使用数据泵导入/导出数据(expdp/impdp) A电脑上的操作(expdp数据导出) 运行cmd: 登录数据库,输入命令:sqlplus 使用管理员角色登录需要在用户名后加" ...

  4. oracle 数据库数据备份

    oracle 数据库数据备份 1.使用oracle用户应该就可以进行数据备份(不需要root用户):su oracle 查oracle实例名:echo $ORACLE_SID       例如查出来的 ...

  5. 用shell脚本实现定时备份数据库

    1.备份数据库的方法 可以使用命令查看 ls  /usr/local/mysql/bin 这个mysqldump就是系统内置的用来备份数据库的工具. 2.实现方法 ①先随便进入一个位置创建一个目录 ② ...

  6. Oracle使用——数据泵导入导出数据库——impdp/expdp使用

    使用前提 EXPDP和IMPDP只可以在Oracle服务端使用. EXP导出的文件只可以使用IMP导入,不适用于IMPDP导入文件:EXPDP导出的文件只可以使用IMPDP导入,而不适用于IMP导出文 ...

  7. Oracle基础 数据泵导出/导入Expdp/impdp(转)

    一.EXPDP和IMPDP使用说明 Oracle Database 10g引入了最新的数据泵(Data Dump)技术,数据泵导出导入(EXPDP和IMPDP)的作用 1)实现逻辑备份和逻辑恢复. 2 ...

  8. Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份

    说明: Oracle数据库服务器操作系统:CentOSIP:192.168.0.198端口:1521SID:orclOracle数据库版本:Oracle11gR2 具体操作: 1.root用户登录服务 ...

  9. 如何使用shell脚本快速排序和去重文件数据

    前面写过一篇通过shell脚本去重10G数据的文章,见<用几条shell命令快速去重10G数据>.然而今天又碰到另外一个业务,业务复杂度比上次的单纯去重要复杂很多.找了很久没有找到相应的办 ...

随机推荐

  1. phpmyadmin登录提示mysqli_real_connect(): (HY000/2002): No such file or directory和mysql8登录失败的问题

    网上的解决方法有很多,但都无法解决我的问题,最后在stackoverflow上找到解决方法,原文地址:https://stackoverflow.com/questions/41881123/mysq ...

  2. 译:6.RabbitMQ Java Client 之 Remote procedure call (RPC,远程过程调用)

    在  译:2. RabbitMQ 之Work Queues (工作队列)  我们学习了如何使用工作队列在多个工作人员之间分配耗时的任务. 但是如果我们需要在远程计算机上运行一个函数并等待结果呢?嗯,这 ...

  3. [docker]macvlan实现双vlan互通

    关于vlan的冷知识 vlan范围:0~4095 0,4095 保留 仅限系统使用 用户不能查看和使用这些VLAN 1 正常 Cisco默认VLAN 用户能够使用该VLAN,但不能删除它 2-1001 ...

  4. 【Spark 深入学习 07】RDD编程之旅基础篇03-键值对RDD

    --------------------- 本节内容: · 键值对RDD出现背景 · 键值对RDD转化操作实例 · 键值对RDD行动操作实例 · 键值对RDD数据分区 · 参考资料 --------- ...

  5. 【Tomcat】面向初级 Web 开发人员的 Tomcat

    Apache Tomcat 应用服务器不再是高级 Web 系统开发人员的专用领域.在本教程中,Sing Li 将向初级 Web 开发人员展示如何利用他们当前的 Java™ 开发技能,使用 Tomcat ...

  6. Xbox One手柄 + Xbox Wireless Adapter PC无线适配器驱动安装、配对全流程

    以下步骤在Windows 7系统中操作.XBox One手柄+无线适配器并非仅只能在Windows 10中使用. 一点感想:微软的XBoxOne手柄实在是好东西,但产品使用说明与文档实在太垃圾,翻遍官 ...

  7. ④NuPlayer播放框架之Renderer源码分析

    [时间:2016-11] [状态:Open] [关键词:android,nuplayer,开源播放器,播放框架,渲染器,render] 0 导读 之前我们分析了NuPlayer的实现代码,本文将重点聚 ...

  8. golang:reflect反射

    因为之前一直以C++为主要开发语言,所以刚接触go语言中的reflect时感觉很懵逼,因此决定找资料彻底学习一下. 到底反射是什么? https://blog.golang.org/laws-of-r ...

  9. headfirst python 05, 06

    处理数据 with open('james.txt') as jaf: data = jaf.readLine() james = data.strip().split(',') #先去掉空格而否有, ...

  10. IllegalArgumentException:@Body parameters cannot be used with form or multi-part encoding

    使用retrofit时报错IllegalArgumentException:@Body parameters cannot be used with form or multi-part encodi ...