DataSync 异构数据同步
??Primary?Database默认使用ARCH进程,如果使用LGWR进程必须明确指定。使用LGWR?SYNC方式时,可以同时使用NET_TIMEOUT参数,这个参数单位是秒,代表如果多长时间内网络发送没有响应,LGWR?进程会抛出错误。?示例如下: alter?system?set?log_archive_dest_2?=?‘SERVICE=ST??LGWR??SYNC??NET_TIMEOUT=30‘?scope=both; ? 1.3?使用LGWR进程的ASYNC?方式 使用LGWR?SYNC方法的可能问题在于,如果日志发送给Standby?Database过程失败,LGWR进程就会报错。也就是说Primary?Database的LGWR?进程依赖于网络状况,有时这种要求可能过于苛刻,这时就可以使用LGWR?ASYNC方式。?它的工作机制如下: 1)?Primary?Database?一段产生Redo?日志后,LGWR?把日志同时提交给日志文件和本地LNS?进程,但是LGWR进程只需成功写入日志文件就可以,不必等待LNSn进程的网络传送成功。 2)?LNSn进程异步地把日志内容发送到Standby?Database。多个LNSn进程可以并发发送。 3)?Primary?Database的Online?Redo?Log?写满后发生Log?Switch,触发归档操作,也触发Standby?Database对Standby?Database对Standby?Redo?Log?的归档;然后触发MRP或者LSP?进程恢复归档日志。 ? 因为LGWR进程不会等待LNSn进程的响应结果,所以配置LGWR?ASYNC方式时不需要NET_TIMEOUT参数。示例如下: alter?system?set?log_archive_dest_2?=?‘SERVICE=ST??LGWR??ASYNC?‘?scope=both; ? 2.?日志接收(Redo?Receive) Standby?Database?的RFS(Remote?File?Server)进程接收到日志后,就把日志写到Standby?Redo?Log或者Archived?Log文件中,具体写入哪个文件,取决于Primary?的日志传送方式和Standby?database的位置。如果写到Standby?Redo?Log文件中,则当Primary?Database发生日志切换时,也会触发Standby?Database上的Standby?Redo?Log?的日志切换,并把这个Standby?Redo?Log?归档。?如果是写到Archived?Log,那么这个动作本省也可以看作是个归档操作。 在日志接收中,需要注意的是归档日志会被放在什么位置: 1)?如果配置了STANDBY_ARCHIVE_DEST?参数,则使用该参数指定的目录。 2)?如果某个LOG_ARCHIVE_DEST_n?参数明确定义了VALID_FOR=(STANDBY_LOGFILE,*)选项,则使用这个参数指定的目录。 3)?如果数据库的COMPATIBLE参数大于等于10.0,则选取任意一个LOG_ARCHIVE_DEST_n的值。 4)?如果STANDBY_ARCHIVE_DEST?和?LOG_ARCHIVE_DEST_n?参数都没有配置,使用缺省的STANDBY_ARCHIVE_DEST参数值,这个缺省值是$ORACLE_HOME/dbs/arc. ? 3.?日志应用(Redo?Apply) 日志应用服务,就是在Standby?Database上重演Primary?Database日志,从而实现两个数据库的数据同步。?根据Standby?Database重演日志方式的不同,可分为物理Standby(Physical?Standby)?和?逻辑Standby(Logical?Standby)。 Physical?Standby?使用的是Media?Recovery?技术,在数据块级别进行恢复,这种方式没有数据类型的限制,可以保证两个数据库完全一致。?Physical?Standby数据库只能在Mount?状态下进行恢复,也可以是打开,但只能已只读方式打开,并且打开时不能执行恢复操作。 Logical?Standby?使用的是Logminer?技术,通过把日志内容还原成SQL?语句,然后SQL引擎执行这些语句,Logminer?Standby不支持所有数据类型,可以在视图DBA_LOGSTDBY_UNSUPPORTED?中查看不支持的数据类型,如果使用了这种数据类型,则不能保证数据库完全一致。?Logical?Standby数据库可以在恢复的同时进行读写操作。 ? Standby数据库的相关进程读取接收到的REDO数据(可能来自于Standby端的归档文件,也可能来自于Standby?Redologs),再将其写入Standby数据库。保存之后数据又是怎么生成的呢?两种方式:物理Standby通过REDO应用,逻辑Standby通过SQL应用 ? 根据Redo?Apply发生的时间可以分成两种:? 一种是实时应用(Real-Time?Apply),?这种方式必须Standby?Redo?Log,每当日志被写入Standby?Redo?Log时,就会触发恢复,使用这种方式的好处在与可以减少数据库切换(Switchover?或者Failover)的时间,因为切换时间主要用在剩余日志的恢复上。? 另一种是归档时应用,这种方式在Primary?Database发生日志切换,触发Standby?Database?归档操作,归档完成后触发恢复。?这也是默认的恢复方式。 ? 如果是Physical?Standby,可以使用下面命令启用Real-Time: Alter?database?recover?managed?standby?database?using?current?logfile; ? 如果是Logical?Standby,可以使用下面命令启用Real-Time: Alter?database?start?logical?standby?apply?immediate; ? 查看是否使用Real-Time?apply: Select?recovery_mode?from?v$archive_dest_status; ? ? SQL> set wrap off PROCESS?? STATUS????????? THREAD#? SEQUENCE# CLIENT_PID ARCH????? CONNECTED???????????? 0????????? 0 240 已选择11行。? ? ? 二.?数据保护模式 Data?Guard?允许定义3钟数据保护模式,分别是最大保护(Maximum?Protection),最大可用(Maximum?Availability)和?最大性能(Maximum?Performance)。 ? 1.?最大保护(Maximum?Protection) (编辑:广西网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |