本文作者:
				junsansi     
				转载网址:
				
						
								
										http://www.5ienet.com/index.shtml
								
						
				
				
				
		
		
				
				 
		
				
				 
		
				
						第四部分Standby之Log应用服务  2008.02.26
				
		
		
				
				
						
								    前面我们已经接触了很多相关的概念,我们都知道DataGuard 通过应用redo 维持primary 与各standby 之间的一致性,在后台默默无闻支撑着的就是传说中的Log 应用服务。Log 应用服务呢,又分两种方式,一种是redo应用(物理standby 使用,即介质恢复的形式),另一种是sql 应用(逻辑standby 使用,通过LogMiner 分析出sql语句在standby 端执行)。
				
		
		
				
				 
		
				
				 
		
				
						
								
										一、Log应用服务配置选项
								
								
						
				
		
		
				
				 
		
				
						
								
										1、REDO数据实时应用
								
								
						
				
		
		
				
						
						
				 
		
				
						
								    默认情况下,log 应用服务会等待单个归档文件全部接收之后再启动应用(在前面redo 传输服务中我们介绍了不同形式的传输方式),如果standby 端使用了standby redologs,就可以打开实时应用(real-time apply),这样dg 就不需要再等待接收完归档文件,只要rfs 将redo 数据写入standby redologs,即可通过MRP/LSP 实时写向standby。
				
		
		
				
						
						
				 
		
				
						
								    物理standby 启用实时应用通过下列语句:
				
		
		
				
						
								
										
												
														    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE ;
										
								
						
				
		 
		
				
						
						
				 
		
				
						
								    逻辑standby 启用实时应用通过下列语句:
				
		
		
				
						
								
										
												    SQL> ALTER DATABASE START LOGICAL STANDBYAPPLY IMMEDIATE;
								
						
				
		 
		
				
				 
		
				
						2、REDO数据延迟应用
				
		
		
				
				 
		
				
						
								    有实时就有延迟,某些情况下你可能不希望standby 与primary 太过同步:),那就可以在log_archive_dest_n参数中指定delay 属性(单位为分钟,如果指定了delay 属性,但没有指定值,则默认是30 分钟)。注意,该属性并不是说延迟发送redo 数据到standby,而是指明归档到standby 后,开始应用的时候。
				
		
		
				
				 
		
				
						
								    不过,即使在log_archive_dest_n 中指定了delay 属性,但如果你应用数据时指定了实时应用,则standby会忽略delay 属性。另外,standby 端还可以通过下列的语句取消延迟应用。
				
		
		
				
						
						
				 
		
				
						
								    物理standby 取消延迟应用可以通过下列语句:
				
		
		
				
						
								
										
												
														    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY;
										
								
						
				
		 
		
				
						
						
				 
		
				
						
								    逻辑standby 取消延迟应用可以通过下列语句:
				
		
		
				
						
								
										
												
														    SQL> ALTER DATABASE START LOGICAL STANDBYAPPLY NODELAY;
										
								
						
				
		 
		
				
						
						
				 
		
				
						
								    提示:flashback database 也可视为延迟应用的一种方式。
				
		
		
				
				 
		
				
				 
		
				
						
								
										二、应用redo数据到物理standby
								
								
						
				
		
		
				
						
						
				 
		
				
						
								    注意:启动redo 应用,物理standby 需要首先启动到mount 状态,然后再执行下列语句启动,或者停止redo应用。
				
		
		
				
				 
		
				
						
								
										1、启动redo应用
								
								
						
				
		
		
				
						
						
				 
		
				
						
								    ※ 前台应用
				
		
		
				
						
								
										
												    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;
								
						
				
		 
		
				
						
						
				 
		
				
						
								    ※ 后台应用
				
		
		
				
						
								
										
												    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
								
						
				
		 
		
				
						
						
				 
		
				
						
								    ※ 启动实时应用,附加USING CURRENT LOGFILE 子句即可
				
		
		
				
						
								
										
												    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE;
								
						
				
		 
		
				
				 
		
				
						
								
										2、停止redredo应用
								
								
						
				
		
		
				
						 
				
		
		
				
						
								
										    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
						
				
		 
		
				
				 
		
				
				 
		
				
						
								
										三、应用redo数据到逻辑standby
								
								
						
				
		
		
				
						
						
				 
		
				
						
								    注意:启用sql 应用,逻辑standby 需要启动至open 状态。
				
		
		
				
				 
		
				
						
								
										1、启动sql应用
								
								
						
				
		
		
				
				 
		
				
						
								
										
												
														    SQL> ALTER DATABASE START LOGICAL STANDBYAPPLY;
										
								
						
				
		 
		
				
						
						
				 
		
				
						
								    如果要启动实时应用,附加immediate 子句即可:
				
		
		
				
						
								
										
												    SQL> ALTER DATABASE START LOGICAL STANDBYAPPLY IMMEDIATE;
								
						
				
		 
		
				
						 
				
		
		
				
						
								
										2、停止sql应用
								
								
						
				
		
		
				
				 
		
				
						
								
										    SQL> ALTER DATABASE STOP LOGICAL STANDBYAPPLY;