第二部分物理standby(2)创建示例  2007.12.06
								
								
						
				
		
		
				
						
						
				 
		
				
						
								    为了最大的降低硬件需求,此处创建的data guard 处于同一台机器,但其创建过程与多机并无区别。做为演示用的示例足够了,我们分两阶段配置,分别是配置primary 数据库和配置standby 数据库,如下:
				
		
		
				
				 
		
				
				 
		
				
						
								
										一、Primary数据库配置及相关操作
								
								
						
				
		
		
				
						
								
								
						
				 
		
				
						
								
										1、确认主库处于归档模式
								
								
						
				
		
		
				
						
								
										
												
														
																
																
														
												
										
								
						
				 
		
				
						
								
										
												
														    
												
										
								
						SQL> archive log list;
    数据库日志模式     存档模式
    自动存档           启用
    存档终点           E:\ora10g\oradata\jssweb
    最早的联机日志序列  148
    下一个存档日志序列  150
    当前日志序列       150
				
						
						
						
				
		
		
				
				
						2、将primary 数据库置为FORCE LOGGING 模式
				
		
		
				
				 
		
				
						
								    通过下列语句:
				
		
		
				
						
								
										
												
														
																    
														
												SQL> alter database force logging;
    数据库已更改。
										
												
												
										
								
						
						
				
		 
		
				
						
								
										3、创建standby 数据库控制文件
								
								
						
				
		
		
				
						 
				
		
		
				
						
								
										
												    SQL> alter database create standby controlfile as 'd:\backup\jsspdg01.ctl';
    数据库已更改。
										
												
												
										
								
						
				
		 
		
				
				 
		
				
						
								
										4、创建primary 数据库客户端初始化参数文件
								
								
						
				
		
		
				
						
								
								
						
				 
		
				
						
								    注:主要此处修改项较多,为了方便,我们首先创建并修改pfile,然后再通过pfile 重建spfile,你当然也可以通过alter system set 命令直接修改spfile 内容。
				
				
						
				
		
		
				
						
								
										
												
														    SQL> create pfile from spfile;
    文件已创建。
												
														
														
												
										
								
						
				
		 
		
				
						
						
				 
		
				
						
								    将该初始化参数文件复制一份,做为standby 数据库的客户端初始化参数文件
						
								
										
												    SQL> host copy e:\ora10g\product\10.2.0\db_1\database\initjssweb.ora d:\backup\initjsspdg.ora
    已复制1 个文件。
										
												
												
										
								
						
						
						
								    修改客户端初始化参数文件,增加下列内容:
						
								
										
												
														
																    
														
												DB_UNIQUE_NAME=jssweb
    LOG_ARCHIVE_CONFIG='DG_CONFIG=(jssweb,jsspdg)'
    LOG_ARCHIVE_DEST_1='LOCATION=E:\ora10g\oradata\jssweb\
    VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=jssweb'
    LOG_ARCHIVE_DEST_2='SERVICE=jsspdg LGWR ASYNC
    VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jsspdg'
    LOG_ARCHIVE_DEST_STATE_1=ENABLE
    LOG_ARCHIVE_DEST_STATE_2=ENABLE
    REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
    #--------配置standby 角色的参数用于角色转换
    FAL_SERVER=jsspdg
    FAL_CLIENT=jssweb
    DB_FILE_NAME_CONVERT='oradata\jsspdg','oradata\jssweb'
    LOG_FILE_NAME_CONVERT='oradata\jsspdg','oradata\jssweb'
    STANDBY_FILE_MANAGEMENT=AUTO
										
												
												
										
								
						
				
		 
		
				
						
						
				 
		
				
						
								    通过pfile 重建spfile
						
								
										
												
														
																
																		
																				
																						
																								    
																						
																				
																		
																
														
												SQL> shutdown immediate
    ... ...
    SQL> create spfile from pfile='initjssweb.ora';
    文件已创建。
										
												
												
										
								
						
				
		 
		
				
				 
		
				
						5、复制数据文件到standby 服务器(方式多样,不详述)
				
		
		
				
				
						
								    注意需要复制所有数据文件,备份的控制文件及客户端初始化参数文件
				
		
		
				
				 
		
				
						
								
										6、配置listener 及net service names(方式多样,不详述)
								
								
						
				
		
		
				
						
						
				 
		
				
						
								    完之后重启listener:
						
								
										
												
														
																
																		
																				    
																		
																
														
												E:\ora10g>lsnrctl stop
    E:\ora10g>lsnrctl start
										
												
												
										
								
						
				
		 
		
				
						
						
				 
		
				
						
								    通过tnsping 测试tnsnames 是否正确有效:
						
								
										
												    E:\ora10g>tnsping jssweb
    ... ...
    Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = jss)(PORT = 1521))
    (CONNECT_
    DATA = (SERVER = DEDICATED) (SERVICE_NAME = jssweb)))
    OK (30 毫秒)
								
						
						
								
										
												
														
																    
														
												E:\ora10g>tnsping jsspdg
    ... ...
    Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = jss)(PORT = 1521))
    (CONNECT_
    DATA = (SERVER = DEDICATED) (SERVICE_NAME = jsspdg)))
    OK (10 毫秒)
								
						
				
		 
		
				
						
								
								
						
				 
		
				
						
						
				 
		
				
						二、StandbStandby数据库配置及相关操作
				
		
		
				
				
						1、通过ORADIM 创建新的OracleService
				
		
		
				
				
						2、创建密码文件,注意保持sys 密码与primary 数据库一致。
				
		
		
				
				 
		
				
						
								
										    E:\ora10g>orapwd file=e:\ora10g\product\10.2.0\db_1\database\PWDjsspdg.ora password=verysafe entries=30
								
										
										
								
						
				
				
				
						3、创建目录
				
		 
		
				
				 
		
				
						
								    E:\ora10g\product\10.2.0\admin\jsspdg>mkdir adump
						
								
								
						
				
		
		
				
				
				
				
						4、复制文件,不做过多描述
				
		
		
				
				
				
				
						5、修改初始化参数文件
				
		
		
				
				
						
								    增加下列参数:
				
		
		
				
						
								
										
												    db_unique_name=jsspdg
    LOG_ARCHIVE_CONFIG='DG_CONFIG=(jssweb,jsspdg)'
    DB_FILE_NAME_CONVERT='oradata\jssweb','oradata\jsspdg'
    LOG_FILE_NAME_CONVERT='oradata\jssweb','oradata\jsspdg'
    LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
    LOG_ARCHIVE_DEST_1='LOCATION=E:\ora10g\oradata\jsspdg\
    VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=jsspdg'
    LOG_ARCHIVE_DEST_STATE_1=ENABLE
    #---下列参数用于角色切换
    LOG_ARCHIVE_DEST_2='SERVICE=jssweb LGWR ASYNC
    VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jssweb'
    LOG_ARCHIVE_DEST_STATE_2=ENABLE
    REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
    FAL_SERVER=jssweb
    FAL_CLIENT=jsspdg
    STANDBY_FILE_MANAGEMENT=AUTO
										
												
												
										
								
						
				
		 
		
				
						
								    注意同时修改*_dest 的路径。
				
		
		
				
						
						
				 
		
				
						
								    通过该pfile 创建spfile
				
		
		
				
						
								
										    SQL> create spfile from pfile='D:\backup\initjsspdg.ora';
    文件已创建。
								
										
										
								
						
				
		 
		
				
						 
				
		
		
				
						
								
										6、启动standby 到mount
								
								
						
				
		
		
				
				 
		
				
						
								
										
												    SQL> startup mount;
    ORACLE 例程已经启动。
    Total System Global Area 167772160 bytes
    Fixed Size 1289484 bytes
    Variable Size 62915316 bytes
    Database Buffers 96468992 bytes
    Redo Buffers 7098368 bytes
    数据库装载完毕。
										
												
												
										
								
						
				
		 
		
				
						
								
								
						
				 
		
				
						
								
										7、启动redo 应用
								
								
						
				
		
		
				
				 
		
				
						
								
										    SQL> alter database recover managed standby database disconnect from session;
    数据库已更改。
								
										
										
								
						
				
		 
		
				
				
				
						
				
		
		
				
						
								
										8、查看同步情况
								
								
						
				
		
		
				
						
						
				 
		
				
						
								    首先连接到primary 数据库
				
		
		
				
						
								
										
												
														
																    
														
												
												SQL> show parameter instance_name;
												
														    
												
												NAME                  TYPE        VALUE
												
														    
												
												--------------------- ----------- ------------------------------
												
														    
														instance_name         string      jssweb
														
																
																
														
												
										
										
												
														 
												
										
										
												
														    
												
												SQL> alter system switch logfile;
												
														    
														系统已更改。
														
																
																
														
												
										
										
												
														 
												
										
										
												
														    
												
												SQL> select max(sequence#) from v$archived_log;
												
														    
												
												MAX(SEQUENCE#)
												
														    
												
												--------------
												
														    
														51
												
										
								
						
				
		 
		
				
						
						
				 
		
				
						
								    连接到standby 数据库
				
		
		
				
						
								
										
												    
										
										SQL> show parameter instance_name;
										
												    
										
										NAME                  TYPE        VALUE
										
												    
										
										--------------------- ----------- ------------------------------
										
												    
												instance_name         string      jsspdg
												
														
														
												
										
								
								
										
												 
										
								
								
										
												    
										
										SQL> select max(sequence#) from v$archived_log;
										
												    
										
										MAX(SEQUENCE#)
										
												    
										
										--------------
										
												    
												51
										
								
						
				
				
						
								
						
						
								
								
						
				
				 
		 
		
				
						9、暂停应用
				
		
		
				
				
						
								    通过下列语句暂停redo 应用。
				
		
		
				
						
								
										
												    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
    数据库已更改。
										
												
												
										
								
						
				
		 
		
				
						
								    注意,此时只是暂时redo 应用,并不是停止Standby 数据库,standby 仍会保持接收只不过不会再应用接收到的归档,直到你再次启动redo 应用为止。
				
		
		
				
				 
		
				
						
						
								    哈哈,成功鸟!现在你是不是想知道怎么把standby 变成primary 呢?接着往下看~~~~~~~~~