加入收藏 | 设为首页 | 会员中心 | 我要投稿 徐州站长网 (https://www.0516zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

DataSync 异构数据同步

发布时间:2020-12-31 06:48:33 所属栏目:站长百科 来源:网络整理
导读:副标题#e# RAC,?Data?Gurad,?Stream?是Oracle?高可用性体系中的三种工具,每个工具即可以独立应用,也可以相互配合。?他们各自的侧重点不同,适用场景也不同。 RAC?它的强项在于解决单点故障和负载均衡,因此RAC?方案常用于7*24?的核心系统,但RAC?方案中

有实时就有延迟,某些情况下你可能不希望Standby数据库与Primary太过同步,那就可以在Primary数据库端发送REDO数据的相应LOG_ARCHIVE_DEST_n参数中指定DELAY属性(单位为分钟,如果指定了DELAY属性,但没有指定值,则默认是30分钟)。

?

注意:该属性并不是说延迟发送REDO数据到Standby,而是指明归档到Standby后,开始应用的时间。

?

例如:设置LOG_ARCHIVE_DEST_3的DELAY属性为15分钟:

SQL>?ALTER?SYSTEM?SET?LOG_ARCHIVE_DEST_3=‘SERVICE=DavePrimary?ARCH?VALID_?FOR=??

(ONLINE_LOGFILES,?PRIMARY_ROLE)?DB_UNIQUE_NAME=Dave?DELAY=15‘;?

?

不过,如果DBA在启动REDO应用时指定了实时应用,那么即使在LOG_?ARCHIVE_DEST_n参数中指定了DELAY属性,Standby数据库也会忽略DELAY属性。

?

另外,Standby端还可以在启动REDO应用时,通过附加NODELAY子句的方式,取消延迟应用。

?

物理Standby可以通过下列语句取消延迟应用:

SQL>?ALTER?DATABASE?RECOVER?MANAGED?STANDBY?DATABASE?NODELAY;?

?

逻辑Standby可以通过下列语句取消延迟应用:

SQL>?ALTER?DATABASE?START?LOGICAL?STANDBY?APPLY?NODELAY;?

?

一般设置延迟应用的需求都是基于容错方面的考虑,如Primary数据库端由于误操作,数据被意外修改或删除,只要Standby数据库尚未应用这些修改,你就可以快速从Standby数据库中恢复这部分数据。不过自Oracle从9i版本开始提供FLASHBACK特性之后,对于误操作使用FLASHBACK特性进行恢复,显然更加方便快捷,因此DELAY方式延迟应用已经非常少见了。

?

7.2??应用REDO数据到Standby数据库

?

7.2.1.物理Standby应用REDO数据

物理Standby启动REDO应用,数据库要处于MOUNT状态或是OPEN?READ?ONLY状态,启动REDO应用的命令相信大家已经非常熟悉了。

前台应用:

SQL>?ALTER?DATABASE?RECOVER?MANAGED?STANDBY?DATABASE;?

语句执行完成后,不会将控制权返回到命令行窗口,除非你手动中止应用。在这种情况下如果还需要对数据库进行操作,只能新开一个命令行连接,在Oracle?8i刚推出Standby特性时(那时不叫Data?Guard),只提供了这种方式。

?

后台应用:

SQL>?ALTER?DATABASE?RECOVER?MANAGED?STANDBY?DATABASE?DISCONNECT;?

这是现在比较通用的方式,语句执行完后,控制权自动返回到当前的命令行模式,REDO应用以后台进程运行。

?

启动实时应用,附加USING?CURRENT?LOGFILE子句即可:

SQL>?ALTER?DATABASE?RECOVER?MANAGED?STANDBY?DATABASE?USING?CURRENT?LOGFILE;?

?

如果要停止REDO应用,执行下列语句即可:

SQL>?ALTER?DATABASE?RECOVER?MANAGED?STANDBY?DATABASE?CANCEL;?

?

7.2.2.逻辑Standby应用REDO数据

SQL应用的原理是将接收到的REDO数据转换成SQL语句在逻辑Standby数据库端执行,因此逻辑Standby需要启动至OPEN状态。

?

(1)启动SQL应用。逻辑Standby数据库启动SQL应用没有前、后台运行之说,语句执行完之后,控制权就会自动返回当前命令行窗口。

?

要启动SQL应用,直接执行下列语句即可:

SQL>?ALTER?DATABASE?START?LOGICAL?STANDBY?APPLY;?

?

如果要启动实时应用,附加IMMEDIATE子句即可,例如:

SQL>?ALTER?DATABASE?START?LOGICAL?STANDBY?APPLY?IMMEDIATE;?

?

(2)停止SQL应用,如:

SQL>?ALTER?DATABASE?STOP?LOGICAL?STANDBY?APPLY;?

?

由于是执行SQL语句的方式应用REDO数据,因此上述语句的执行需要等待当前执行的SQL触发的事务结束,才能真正停止REDO应用的状态。

?

如果不考虑事务执行情况,马上停止REDO应用,可以通过下列的语句来完成:

SQL>?ALTER?DATABASE?ABORT?LOGICAL?STANDBY?APPLY;?

(编辑:徐州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读