DG中LGWR传输方式
~~~~~~~~~~~~~~~~~~~~~~~~~~~
log_archive_dest_2='SERVICE=boston LGWR SYNC NET_TIMEOUT=30 valid_for=(online_logfile,primary_role)'

SYNC是默认值(可以不写,不过最好不是写进去,明了其见)。
配置了SYNC属性的话,最好带上NET_TIMEOUT属性,NET_TIMEOUT控制LGWR进程等待网络服务进程的时间长短。如果NET_TIMEOUT秒还没有响应,刚LGWR进程就会返回错误信息。

SYNC方式写redo的步骤:
~~~~~~~~~~~~~~~~~~~~~~~
          1.主数据库上LGWR进程提交一个事务时,由LNSn进程发起网络I/O到远程备用库;
          2.备用库上,远程文件服务(RFS)通过网络从主库的LNSn进程接收redo信息,写入到standby log中;
          3.直到redo 数据写完主库redo log 和备用库standby log后,主库的事物才会提交;
         4.主库上发生日志切换的同时,也会触发备用库的日志切换,备用库的ARCn进程归档standby logfile到备用库上        standby_archive_dest目录;
          5.备用库归档完成后,启用MRPn进程(或SQL应用-LSP进程)应用到备用库。
         6.如果是适时应用日志,那么dg在当前redo信息由RFS进程写满的同时直接从standby log恢复,而后才由ARCn进程归档。

ASYNC方式写redo步骤:
~~~~~~~~~~~~~~~~~~~~~~~
log_archvie_dest_2='SERVICE=boston LGWR ASYNC'
从10.2开始,ASYNC属性没有必要配置NET_TIMEOUT.因为在10.2中,LGWR进程永远不会因为任何原因等待LNSn,因此不需要NET_TIMEOUT属性。

         1.主库发生事务,LGWR进程将redo信息写进本地redo logfile中,LGWR进程继续处理下一个请求,不等待LNS网络I/O完成;
         2.LNSn网络服务进程异步传送redo信息到远程目的地。如果要传送到多个远程目的地,LNSn进程(每个目的地一个)并行发起到所有目的地的网络I/O.
          3.当联机重做日志写满,如通常一样日志切换,并且归档,备份库应用。

 

DG中关于密码文件
~~~~~~~~~~~~~~~~~~~~~~~~~~~
         确保在主备库之间,SYS用户的密码相同。因为Data Guard提供安全的环境防止重做数据在传递到备数据库时发生可能的篡改。重做传输服务使用认证的网络会话来传递重做数据,这些会话使用包含在口令文件中的SYS用户口令来认证。所以,在Data Guard配置中的所有数据库都必须使用口令文件,且,包含在这个口令文件中的SYS口令在所有系统上都必须相同。

 

VALID_FOR属性
~~~~~~~~~~~~~~~~~~~~~~~~~~~
log_archive_dest_2='SERVICE=bforcl LGWR ASYNC VALID_FOR(all_logfiles,primary_role)'

         VALID_FOR允许同时为主备库数据库角色配置目的地属性,使DG切换后能正常工作。简化切换和故障转移。默认valid_for=(all_logfiles,all_roles)

格式:VALID_FOR=(redo_log_type,database_role)
         redo_log_type包括:online_logfile、standby_logfile、all_logfiles
          database_role包括:primary_role、standby_role、all_roles

       redo_log_type的意思是指定要归档的日志文件类型;
        database_role的意思是,当数据库处于这个角色时,才会往log_archive_dest_n这个地址归档日志文件(redo_log_type的日志)。

例如:
          1.配置log_archive_dest_2='SERVICE=primary LGWR ASYNC VALID_FOR=(online_logfile,primary_role)'
                  当这个备用库切换成主库时,也就是说这个库角色为primary时,会将online_logfile里(在线日志文件)的日志记录归档到tnsnames=primary的库。
          2.配置log_archive_dest_3='LOCATION=/data/arch VALID_FOR=(standby_logfile,standby_role)'
                 当这个库角色为standby时,当standby log写满时,会将standby log归档到/data/arch目录。而不会将online logfile的内容归档到这里。

VALID_FOR的作用可以用一句话来总结:
        控制,当配置有VALID_FOR的数据库处于database_role时,允许归档redo_log_type到log_archive_dest_n所配置的路径。
        如果redo_log_type为online_logfile,则归档在线日志中的redo 记录;
        如果redo_log_type为standby_logfile,则归档standby log 中的记录;
        如果log_archvie_dest_n配置为LOCATION则归档到本地目录;
        如果log_archvie_dest_n配置为SERVICE,则归档到备用库。