论oracle备库的设计方案

简介: oracle的ADG那是自不必多说,用存储圈的话说,现在存储正在从被动被动变为主动,但是总体上是被软件抢,RAID被ASM抢,快照被Flashback抢,DR被ADG抢。
oracle的ADG那是自不必多说,用存储圈的话说,现在存储正在从被动被动变为主动,但是总体上是被软件抢,RAID被ASM抢,快照被Flashback抢,DR被ADG抢。
如果这几种方案结合在一起那会是什么结果。这就涉及到一个备库的设计方法。
我也是抛砖引玉。环境都是基于11g的dg来说。
首先基本的,一个主库一个备库是很多系统都在采用的备库设计方式,如果数据库比较关键,这种方案有什么缺点呢。
11g的备库现在也被赋予了更多的责任。
容灾,首先就是容灾如果主库挂掉,备库能够进行failover,这个没有问题,那么11g的备库现在也被赋予了更多的责任。
批量查询。可能会有一些批量查询,报表查询的任务。那么这部分功能就可以放到备库来。
人为操作的防范。如果出现了误操作和人为操作,是否能够及时合理的预防。


所以一主一备的方案就会有几个弊端,
首先批量查询,如果批量任务压力较大,本身对于CPU资源消耗较大,如果长年累月,其实本身硬件消耗就不可忽略,如果长此以往,可能出了问题切过来也不见得保险。
如果出现人为误操作,这种防范怎么来说,如果延时怕丢太多数据,不延时,人为误操作不可避免,一年出一次这样的情况就够我们好好折腾一番了。
那么我们设计一主两备?



如果这样设计,对于关键业务也不错的。不过有几个需要考虑的地方,还是要满足刚刚的几个需求,灾备,支持大查询,人为误操作防范。
那么standby 1就可以设计为在同一个相邻的区域内,而standby2则可以考虑成为异地灾备,异地灾备也是很重要的一个考虑,如果机房掉电,几个备库都在都一个机房,那就很可能受到牵连。
所以异地灾备也很重要。那么怎么满足上面三个需求呢。
首先灾备,一主两备,考虑了异地灾备,这个本身就是一个不错的解决方案。
然后支持大查询,那么可以考虑把大查询的人物分散开来,在两个备库上跑,比如一个60%,一个40%等等,也不要让备库彻底闲着。同时压力也降低了不少。
然后就是人为误操作了。这个怎么防范,如果按照目前的一主两备的环境,也有几种方案,一种就是对另外一个备库开启延迟应用归档。

比如对于异地灾备standby2,设置延时2个小时,那么这种情况下出现了人为误操作,比如truncate就还有可能追回被误删的数据。不过仅仅是可能,因为到底是几个小时谁也说不清楚。万一出现了3个小时前的误操作,大家最后发现是因为误操作导致的,那么这种方案也得掉链子了。
可能有的朋友会说了,如果在2个小时之内,比如切换了20个归档,truncate操作是在最后的归档中,即第20个归档中的操作,那么第20个归档中的数据变化可能类似下面的形式。
transaction 1
transaction 2
transaction 3
transaction 4
….
transaction 10
truncate
那么你怎么保证一定能够严格恢复回来,可能有的朋友说,可以使用logminer,恩,也可以,不过还是需要点功夫。而且不一定能够100%保证吧。
还有什么方案能够继续改进呢。可以试试闪回数据库。

其实在11g中,闪回数据库早已不是什么新鲜特性了。那么他怎么来完成上面的三个需求呢。
灾备自不必说,大查询也可以支持,那么人为误操作呢。那就是下面的绿色箭头所示。

通过在异地灾备2上做闪回,然后穿越之后得到了需要的数据,接着exp导出,然后部署到主库中。然后备库继续开启日志应用即可。
看来这种方法还是能够满足这几个需求了。
那么我们再把这些需求再梳理一下。那么在这种情况下,大查询就可以分担一下了,在备库1上可以多分担一些,备库2上就可以少分担一些。还有就是异地灾备需要额外再加入一些闪回日志的空间了。


那么如果出现了同城机房两台机器奔溃的情况,而且更为严重的是在崩溃的前一分钟,出现了人为误删除操作,那么异地灾备会不会给力呢。

这种情况下,就需要先做闪回数据库,exp出来需要的数据,然后做failover,然后关掉闪回数据库的功能,接着就是重新部署搭建灾备环境了,所以还是依旧可以保证,可能有一点美中不足就是可能闪回,如果表比较大,可能导出数据都需要花费些时间了。
所以一主两备的方式就能玩出这么多花样来,只要保证方案的稳定性,这么来看闪回数据库在一主两备的条件下还是可以考虑采用。
目录
相关文章
|
6月前
|
Oracle 关系型数据库 流计算
Flink CDC不支持直接连接到Oracle ADG备库进行数据同步
Flink CDC不支持直接连接到Oracle ADG备库进行数据同步
106 1
|
存储 SQL Oracle
Oracle使用expdp/impdp实现全库导入导出的整体流程
Oracle的全库导入,首先一点必须先创建数据库,创建了数据库,才能往该数据库导入所有数据。相对来说,使用Oracle进行数据导入导出还很有些“麻烦”的,大多数资料上来就是......
6079 0
Oracle使用expdp/impdp实现全库导入导出的整体流程
|
5月前
|
Oracle 关系型数据库 数据库
Flink CDC中oracle dataguard模式下,有没有cdc备库的方案?
Flink CDC中oracle dataguard模式下,有没有cdc备库的方案?
70 1
|
8月前
|
Oracle 关系型数据库 Apache
一键实现 Oracle 数据整库同步至 Apache Doris
极大降低数据同步门槛,使数据同步变得更加简单高效
一键实现 Oracle 数据整库同步至 Apache Doris
|
11月前
|
存储 XML SQL
Oracle 数据库自动诊断库 ADR(Automatic Diagnostic Repository)简介 发表在 数据和云
Oracle 数据库如果出现故障,我们的第一个反应是查看数据库的 alert log,但一些工程师对 alert log 不熟悉,实际上 alert log 位于Oracle 数据库自动诊断库(Automatic Diagnostic Repository,以下简称 ADR) 中,要熟悉 alert log,我们必需全面了解 ADR 的概念。
217 0
|
11月前
|
Oracle 关系型数据库 数据库
Oracle 不使用DBCA在Oracle 11中删除数据库
Oracle 不使用DBCA在Oracle 11中删除数据库
53 0
|
Oracle 关系型数据库 数据库
炫“库”行动-人大金仓有奖征文—谈谈oracle建表规范
今天突然想把工作几年在oracle建表相关的知识整理成一个像样的文档分享给大家,为达到数据库开发规范、后期维护方便等目的编写此篇文章,希望大家能重视数据库建表这个“小小的问题”,从小处见大学问,欢迎大家一起讨论。
176 0
|
SQL 存储 Oracle
oracle学习7-导出导入数据库
oracle学习7-导出导入数据库
211 0
oracle学习7-导出导入数据库

推荐镜像

更多