免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求两个文件匹配脚本,祝各位工作快乐 [复制链接]

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-20 11:32 |只看该作者 |倒序浏览
本帖最后由 flutter 于 2014-10-20 12:10 编辑

原因:先吐槽哈,ORACLE的归档日志,尼玛不得不删除,要不然必然爆掉。

单库好说,一句 delete force noprompt archivelog all 就全部干掉了。

可是,可是,有了DG就不能这样干了,ORACLE也没有提供其他删除方式,BS一个先。

备库删除日志文件:sd.rman  (已经传输到备库并应用成功的归档日志)

connect target /
delete force noprompt archivelog like '/u02/app/fast_recovery_area/STDB/archivelog/2014_10_11/o1_mf_1_566_b3k04d0j_.arc';
delete force noprompt archivelog like '/u02/app/fast_recovery_area/STDB/archivelog/2014_10_12/o1_mf_1_567_b3kdd27v_.arc';
delete force noprompt archivelog like '/u02/app/fast_recovery_area/STDB/archivelog/2014_10_11/o1_mf_2_638_b3kkjq66_.arc';
delete force noprompt archivelog like '/u02/app/fast_recovery_area/STDB/archivelog/2014_10_12/o1_mf_2_639_b3kq6k6f_.arc';
delete force noprompt archivelog like '/u02/app/fast_recovery_area/STDB/archivelog/2014_10_11/o1_mf_3_520_b3l8lmvn_.arc';
delete force noprompt archivelog like '/u02/app/fast_recovery_area/STDB/archivelog/2014_10_12/o1_mf_3_521_b3e9lnvs_.arc';
exit;

主库删除日志文件:pd.rman  (主库所有的归档日志,包括已经传送应用和没有传送应用的日志)

connect target /
delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_11/thread_1_seq_566.817.860662667';
delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_12/thread_1_seq_567.590.860675203';
delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_13/thread_1_seq_568.700.860680471';
delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_11/thread_2_seq_638.647.860686289';
delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_12/thread_2_seq_639.524.860704083';
delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_13/thread_2_seq_640.712.854680471';
delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_11/thread_3_seq_520.547.860686289';
delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_12/thread_3_seq_521.624.873702153';
delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_13/thread_3_seq_522.569.879614075';
exit;

可以看出,备库sd.rman中包含了11、12日的三组日志,都已经正常应用了。
而主库pd.rman中包含了11、12、13日的三组日志,其中11、12日的已经应用,可以删除,13日的日志不能删除。

现在的要求是:sd.rman 和pd.rman都可以生成,如何根据sd.rman中各行红色关键字,来匹配pd.rman中的各行?
当然,第一行和最后一行不需要处理了。

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
2 [报告]
发表于 2014-10-20 11:36 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
3 [报告]
发表于 2014-10-20 12:13 |只看该作者
可以看出,备库sd.rman中包含了11、12日的1、2、3三组日志,都已经正常应用了,可以删除。
而主库pd.rman中包含了11、12、13日的三组日志,其中11、12日的已经应用,可以删除,13日的日志不能删除。

现在的要求是:sd.rman 和pd.rman都可以生成,如何根据sd.rman中各行红色关键字,来匹配pd.rman中的各行,并删除多余的几行?
当然,第一行和最后一行不需要处理了。

论坛徽章:
8
戌狗
日期:2014-09-26 16:39:44水瓶座
日期:2014-10-10 02:06:57金牛座
日期:2014-10-11 23:04:042015亚冠之首尔
日期:2015-06-23 15:37:0015-16赛季CBA联赛之天津
日期:2016-01-22 18:58:2915-16赛季CBA联赛之佛山
日期:2016-05-31 19:18:0815-16赛季CBA联赛之同曦
日期:2016-08-10 16:26:3315-16赛季CBA联赛之辽宁
日期:2018-01-10 11:47:40
4 [报告]
发表于 2014-10-20 12:40 |只看该作者
本帖最后由 wiliiwin 于 2014-10-20 12:40 编辑

不知道理解的对不  你的意思是不是这样

sd.rman红色部分在pd.rman里面查询 如果有就执行删除?不存在就不进行删除?

如果不能删除那pd.rman里面还存在删除的语句,那不是有问题?

是不是把没有匹配的行从pd.rman里面清除呢?

论坛徽章:
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-10-20 12:57 |只看该作者
回复 1# flutter
rman中可以根据时间删除!


   

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
6 [报告]
发表于 2014-10-20 13:12 |只看该作者
本帖最后由 flutter 于 2014-10-20 13:13 编辑
wiliiwin 发表于 2014-10-20 12:40
不知道理解的对不  你的意思是不是这样

sd.rman红色部分在pd.rman里面查询 如果有就执行删除?不存在就不 ...


谢谢您的支持,也许我没有说明白,sd.rman和 pd.rman是在不同机器上产生的脚本。

sd.rman是不需要做任何处理的。我的要求,就是根据sd.rman的语句来清理pd.rman

保留匹配的那些语句,删除多余的语句,或者重新生成一个类似文件也可以。

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
7 [报告]
发表于 2014-10-20 13:17 |只看该作者
zxy877298415 发表于 2014-10-20 12:57
回复 1# flutter
rman中可以根据时间删除!


谢谢您的支持,RMAN的确可以根据时间来删除,问题是,如何确定成功应用了日志的日期时间呢?

主库这边貌似没有办法,还是要根据备库上的查询来判断,也就是sd.rman中的日志记录

我的要求,其实就是根据备库的应用来删除主库的日志。

貌似官方并没有这样一个机制。。。。至少10G官方回答我没有,只能手工删除。

论坛徽章:
8
戌狗
日期:2014-09-26 16:39:44水瓶座
日期:2014-10-10 02:06:57金牛座
日期:2014-10-11 23:04:042015亚冠之首尔
日期:2015-06-23 15:37:0015-16赛季CBA联赛之天津
日期:2016-01-22 18:58:2915-16赛季CBA联赛之佛山
日期:2016-05-31 19:18:0815-16赛季CBA联赛之同曦
日期:2016-08-10 16:26:3315-16赛季CBA联赛之辽宁
日期:2018-01-10 11:47:40
8 [报告]
发表于 2014-10-20 14:05 |只看该作者
本帖最后由 wiliiwin 于 2014-10-20 14:39 编辑

你说的是不是这样的
  1. awk  -F "/"  'NR==FNR {a[++x]=$7substr($8,9,3);next}{for(y in a){if(a[y]==$4substr($5,14,3)){print $0}}}' 29.txt 30.txt
  2. delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_11/thread_1_seq_566.817.860662667';
  3. delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_12/thread_1_seq_567.590.860675203';
  4. delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_11/thread_2_seq_638.647.860686289';
  5. delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_12/thread_2_seq_639.524.860704083';
  6. delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_11/thread_3_seq_520.547.860686289';
  7. delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_12/thread_3_seq_521.624.873702153';
复制代码
sd.rman
  1. delete force noprompt archivelog like '/u02/app/fast_recovery_area/STDB/archivelog/2014_10_11/o1_mf_1_5
  2. 66_b3k04d0j_.arc';
  3. delete force noprompt archivelog like '/u02/app/fast_recovery_area/STDB/archivelog/2014_10_12/o1_mf_1_5
  4. 67_b3kdd27v_.arc';
  5. delete force noprompt archivelog like '/u02/app/fast_recovery_area/STDB/archivelog/2014_10_11/o1_mf_2_6
  6. 38_b3kkjq66_.arc';
  7. delete force noprompt archivelog like '/u02/app/fast_recovery_area/STDB/archivelog/2014_10_12/o1_mf_2_6
  8. 39_b3kq6k6f_.arc';
  9. delete force noprompt archivelog like '/u02/app/fast_recovery_area/STDB/archivelog/2014_10_11/o1_mf_3_5
  10. 20_b3l8lmvn_.arc';
  11. delete force noprompt archivelog like '/u02/app/fast_recovery_area/STDB/archivelog/2014_10_12/o1_mf_3_5
  12. 21_b3e9lnvs_.arc';
  13. exit;
复制代码
fd.rman
  1. delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_11/thread_1_seq_566.817.860662667'
  2. ;
  3. delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_12/thread_1_seq_567.590.860675203'
  4. ;
  5. delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_13/thread_1_seq_568.700.860680471'
  6. ;
  7. delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_11/thread_2_seq_638.647.860686289'
  8. ;
  9. delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_12/thread_2_seq_639.524.860704083'
  10. ;
  11. delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_13/thread_2_seq_640.712.854680471'
  12. ;
  13. delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_11/thread_3_seq_520.547.860686289'
  14. ;
  15. delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_12/thread_3_seq_521.624.873702153'
  16. ;
  17. delete force noprompt archivelog like '+RECO/orcl/archivelog/2014_10_13/thread_3_seq_522.569.879614075'
  18. ;
复制代码

论坛徽章:
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
9 [报告]
发表于 2014-10-20 14:05 |只看该作者
回复 7# flutter
主库可以根据v$ARCHIVED_LOG这个视图中的APPLIED字段是否在备库应用了。然后选择行的删除就可以了。


   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
10 [报告]
发表于 2014-10-20 14:28 |只看该作者
  1. grep -Ff <(sed '/delete/!d; s#.*archivelog/\(...._.._..\)/.._.._\(._\)\(...\)_.*#\1/thread_\2seq_\3#' sd.rman) pd.rman
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP