免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 5752 | 回复: 20
打印 上一主题 下一主题

[文本处理] 查找错误信息的shell如何写 [复制链接]

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-09 19:02 |只看该作者 |倒序浏览
数据库中日志的信息如下:
ALTER DATABASE   MOUNT
Successful mount of redo thread 1, with mount id 256332863
Database mounted in Exclusive Mode
Lost write protection disabled
Completed: ALTER DATABASE   MOUNT
Wed Apr 09 18:47:32 2014
ALTER DATABASE OPEN
Errors in file /u01/app/oracle/diag/rdbms/prod/prod/trace/prod_dbw0_5370.trc:
ORA-01157:cannot identify/lock data file 8 - see DBWR trace file
ORA-01110: data file 8: '/u01/app/oracle/oradata/prod/test02.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Block change tracking file is current.
Errors in file /u01/app/oracle/diag/rdbms/prod/prod/trace/prod_ora_5420.trc:
ORA-01157: cannot identify/lock data file 8 - see DBWR trace file
ORA-01110: data file 8: '/u01/app/oracle/oradata/prod/test02.dbf'
ORA-1157 signalled during: ALTER DATABASE OPEN...
Wed Apr 09 18:47:34 2014
Checker run found 1 new persistent data failures
Wed Apr 09 18:48:10 2014
Shutting down instance (abort)
License high water mark = 1
USER (ospid: 5439): terminating the instance
Instance terminated by USER, pid = 5439
Wed Apr 09 18:48:11 2014
Instance shutdown complete
Wed Apr 09 18:48:13 2014
Starting ORACLE instance (normal)


我想每天根据时间(Wed Apr 09 18:47:34 2014)时分秒可以忽略了,检查是否有类似ORA-的错误,如果有输出到一个文本中。请问如何写!
如下是我写的脚本:
path='/u01/app/oracle/diag/rdbms/prod/prod/trace/alert_prod.log'
date1=$(date | awk '{print $1,$2,0$3,$6}')
date2=$(grep -o -E "[a-zA-Z]{3} [a-zA-Z]{3} [0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} [0-9]{4}" $path | awk '{print $1,$2,$3,$5}')
        if [ "$date1" == "$date2" ];then
grep "ORA-" alert_prod.log>a.txt
else
echo "NO ORA-"
fi
明显缺少在当天的时间里grep查找,但是不知道怎么写,请大家指点一下!

论坛徽章:
29
程序设计版块每日发帖之星
日期:2016-02-29 06:20:0015-16赛季CBA联赛之天津
日期:2016-08-10 10:33:1115-16赛季CBA联赛之深圳
日期:2016-08-17 15:07:2015-16赛季CBA联赛之佛山
日期:2016-11-07 11:33:5015-16赛季CBA联赛之广夏
日期:2016-11-15 09:13:31CU十四周年纪念徽章
日期:2016-11-24 14:12:25极客徽章
日期:2016-12-07 14:03:4015-16赛季CBA联赛之深圳
日期:2016-12-07 17:15:2715-16赛季CBA联赛之北京
日期:2016-12-22 09:30:0115-16赛季CBA联赛之深圳
日期:2016-12-22 10:49:2115-16赛季CBA联赛之山西
日期:2017-02-10 09:05:3215-16赛季CBA联赛之同曦
日期:2017-02-27 14:19:08
2 [报告]
发表于 2014-04-09 20:36 |只看该作者
  1. 日志应该是按时间打的

  2. 可以试试

  3. stime=$(date | awk '{printf "%s %s %02d", $1, $2, $3}')
  4. etime=$(date -d "+1day" | awk '{printf "%s %s %02d", $1, $2, $3}')

  5. awk -vst="$stime" -vet="$etime" '!f&&$0~st{f=1;next}f&&/^ORA-/{print > "a.txt"}$0~et{exit}' log
复制代码

论坛徽章:
1
2015亚冠之柏太阳神
日期:2015-09-29 10:00:55
3 [报告]
发表于 2014-04-10 09:11 |只看该作者
我写的nagios脚本,每分钟检测上一分钟的日志
https://github.com/June-Wang/Nag ... eck_oracle_alert.sh

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
4 [报告]
发表于 2014-04-10 09:26 |只看该作者
回复 3# qq5910225
多谢多谢,正在研究!

   

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
5 [报告]
发表于 2014-04-10 09:26 |只看该作者
回复 2# elu_ligao
可以使用,多谢!


   

论坛徽章:
0
6 [报告]
发表于 2014-04-10 09:42 |只看该作者
日志监控为什么要根据日志内容的时间来做. 假设日志文件很大, 如何保证能在两次采样间隔内完成一次采样分析报警?
一般不都是根据mtime和filesize先判断是否要进行分析( 如果没变就不用了 ) 如果需要的话再从上一次的结束位置到当前最大行, 并把这个行数记录下来.

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
7 [报告]
发表于 2014-04-10 09:48 |只看该作者
回复 6# runintostar

因为oracle在redo切换的时候还有其他的操作等,也会写后台日志,根据文件的大小和mtime不能准确的判断出来吧,所以需要根据日志的时间来监控,当天的或者是规定时间内是否有错误信息!

   

论坛徽章:
0
8 [报告]
发表于 2014-04-10 10:00 |只看该作者
好吧, 我弄错了, 我只是说下日志监控的基础原理, 这是不能违背的, 这样才能保证不会丢数据.
不过"根据文件的大小和mtime不能准确的判断出来吧"..
认为不管你应用是在做什么, 写日志就是文件写入的操作, mtime和大小都是一定可以判断出变化的.

当然看来你得需求并不是完全监控, 而只是类似于每天执行一次的仅对日志中指定时间段部分的错误信息查找. 所以是我搞错了, 抱歉.

我想说的只是, 如果你要做的是能对日志完全覆盖的监控, 基于日志内部的时间是不准确的.

论坛徽章:
0
9 [报告]
发表于 2014-04-10 10:05 |只看该作者
回复 2# elu_ligao


    unix  aix下,date没有-d参数啊,您知道是哪个参数和-d相同吗?

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
10 [报告]
发表于 2014-04-10 10:12 |只看该作者
回复 8# runintostar

其实我想做的是完全的监控,就像是3楼的兄弟那样的一分钟检查前一分钟的(这样每次都去读文件,虽然文件的不是太大,应该会对系统的负载的吧!),当初只想监控一天范围内的有问题在发邮箱,但是这样如果如果oracle中途挂了就不能更好的通知了。


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP