专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

今天,1万多张oracle导出表进行数据完整性统计

ins518 2024-10-16 12:23:21 技术文章 13 ℃ 0 评论

世界纷纷扰扰,我在单位加班!

今天对1万多张的oracle导出表进行数据完整性统计,有些表是分区表,导出日志会有每个分区的大小和记录数;而有些表是数据表,直接就有大小和记录数。首先把分区表区分开,然后根据每个分区进行大小累加和记录数累加,从而获得分区表的表大小。

先用awk把oracle的导出日志转换为如下格式:

grep exported *.log|grep '":"'|awk -F '[:"]' '{print $4,$8}' >part.out

这样part.out的数据格式就是这样的:

table1 105.4 MB 505234 rows

table1 91.20 MB 381566 rows

table2 77.13 MB 320116 rows

table3 74.92 MB 319594 rows

table1 105.4 GB 505234 rows

table1 91.20 GB 381566 rows

table2 77.13 MB 320116 rows

table3 74.92 MB 319594 rows

table1 105.4 KB 505234 rows

table1 91.20 KB 381566 rows

table2 77.13 MB 320116 rows

table3 74.92 MB 319594 rows

然后再编写一个shell程序统计每张数据表的大小和记录总数:

#!/bin/bash

awk ‘{

table = $1

rows= $4

size= $2

rows_total[table] += rows

if( $3 == "GB") { size=size*1024*1024;}

else if( $3 == "MB" ){ size=size*1024;

size_total[table]+=size

}

}

END{

for (table in rows_total){

if(size_total[table]>1024) {

size_total[table]=size_total[table]/1024

print table " "size_total[table]" MB "rows_total[table]" rows part"

}else{

print table " "size_total[table]" KB "rows_total[table]" rows part"

}

}

}’

part.out|sort -rn -k4

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表