通过shell脚本添加备库日志 (r9笔记第94天)

今天下午的时候,准备顺手写一个简单的脚本,但是发现很多事情较真起来真是寸步难行。在写脚本的过程中碰到了太多的问题,很多时候感觉像要实现的功能更通用,就得做更多的检查,更多的校验也就意味着有更多的预先条件,这些条件里面有些是规范和建议,有些是按照已有的配置情况,尽管如此,自己感觉还是缺少了太多的检查。 先来说说今天尝试的简单脚本,就是给主库添加standby logfile,这个需求听起来非常简单,都甚至在我的半自动化脚本中隐去了,但是把这个需求要落到纸面上来,简直了。 首先这个需求会涉及到下面的几个数据字典。

V$LOGFILE里是最全的信息,可能有online logfile或者standby logfile,V$LOG里面是在线日志的信息,V$STANDBY_LOG里面是备库日志的信息。 要添加备库日志,有很多的场景,比如已有了备库日志,那样的话是在已有的基础上添加,如果没有则需要按照建议的树目来添加,而添加的备库日志组成员是1个还是2个,这个不同的系统可能会差别很大,可以在v$logfile里面查看。 而如果日志组参差不齐,同一个数据库有的日志组有1个成员,有的有2个成员,这种情况如果判断,难度又得加大,而这个部分我是直接跳过了,因为这个得按照规范来,而不是脚本来满足这种特殊的场景。所以就如同我在开始所说的那样,很多预备条件是规范和建议,有些需要参考已有的配置情况。 当然在实现的过程中,因为有一些判断条件,所以自己就尝试使用PL/SQL来实现,同时又需要包装在shell里面,感觉难度不是大了一点。在实现的时候最终还是发现理论上不可行,因为需要添加多个日志组,而且要根据日志组成员的情况来动态生成SQL,这种二次动态的情况转换过来也就是不满足范式,每一列都是不可分割的原子数据项,所以最后调用的时候有些问题,转而使用了shell的方式,当然过程中也碰到了很多问题。 首先是得到日志文件的下标,当前最大的日志组号和需要添加的日志组数

然后尝试了下面的来调用shell和PL/SQL

这样会抛出错误。 ERROR at line 1: ORA-01422: exact fetch returns more than requested number of rows ORA-06512: at line 6 一种改进的思路就是下面的方式,分而治之,使用函数来循环迭代。

这种方式就会生成递增的日志创建语句,当然思路完成了,还得细化。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2016-08-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT 指南者专栏

指南者博客测试版正式上线,没有域名,只有IP,欢迎访问!

指南者博客访问地址: http://120.79.207.130/ 其实是有域名的,由于没有备案的原因,访问一个月后,基本就不可以访问了,详情如下图。 ? 因...

3628
来自专栏F-Stack的专栏

F-Stack Q&A 第三期

Q1:如果在一个阻塞型的socket上执行recv,会不会把相应的线程卡死,调用recv时该socket中没有数据包,导致sleep,sleep导致该线程没办法...

5779
来自专栏Golang语言社区

[Go语言]一种用于网游服务器的支持多路复用的网络协议处理框架

简介: 本文描述了使用Go语言实现的、适应于Go语言并发模型的一种支持多路复用的网络协议处理框架,并提供了框架的代码实现。作者将这种框架用于网络游戏服务器中的协...

37010
来自专栏linux驱动个人学习

CPUFreq驱动

CPUFreq子系统位于 drivers/cpufreq目录下,负责进行运行过程中CPU频率和电压的动态调整,即DvFS( Dynamic Voltage Fr...

1193
来自专栏Golang语言社区

[Go语言]一种用于网游服务器的支持多路复用的网络协议处理框架

简介: 本文描述了使用Go语言实现的、适应于Go语言并发模型的一种支持多路复用的网络协议处理框架,并提供了框架的代码实现。作者将这种框架用于网络游戏服务器中的协...

3346
来自专栏美团技术团队

Android动态日志系统Holmes

背景 美团点评公司是全球领先的一站式生活服务平台,为6亿多消费者和超过450万优质商户提供连接线上线下的电子商务网络。美团点评的业务覆盖了超过200个丰富品类和...

62710
来自专栏IT大咖说

VMware vSAN 架构解析及存储策略

摘要 VMware vSAN 通过 vSphere 原生的高性能体系结构支持业界领先的超融合基础架构解决方案。 vSAN是 Software-Defined D...

4703
来自专栏杨建荣的学习笔记

使用sysbench压力测试MySQL(二)

昨天有了第一篇的测试之后,仅仅是一个开始。 我接下来做sysbench压测的主要思路是根据现有的配置作出调整,能够持续性的优化和压力测试达到目的,而...

7289
来自专栏windealli

后台开发必备知识——过载、过载保护、过载预防

系统过载处理不当会造成服务器雪崩: 系统过载时,CPU、内存等资源达到瓶颈,系统响应会变慢。这时可能会发生大量的请求重试或系统内部重试,进一步加剧系统负载,产生...

7893
来自专栏xcywt

程序员需要知道的十个操作系统的概念

说明:我之前在网上看到这篇文章觉得非常好,于是把它翻译了下来。当然很多地方翻译的很渣,见笑了。温馨提示,文章有点长。

851

扫码关注云+社区