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?状态下进行恢复,也可以是打开,但只能已只读方式打开,并且打开时不能执行恢复操作。 (编辑:PHP编程网 - 湛江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

