Oracle Data Guard详细配置过程
    作者:隔壁老王 博客:http://wallimn.iteye.com 邮件:wallimn@sohu.com
实验环境:Oracle9.2.0.1,操作系统:XP(虚拟机)
一、	配制过程1.	在主数据库(primary database)上启用强制生成日志 
SQL>shutdown immediate;
SQL>startup mount;
--修改为归档模式
SQL>alter database archivelog;
SQL>alter database open;
--设置强制归档模式
SQL> alter database force logging;
注:查看命令:select  log_mode,force_logging from v$database
  查看是否归档命令:Archive log list
2.	在主数据库上设置本地的归档路径、设置归档进程自动启动 
SQL> alter system set log_archive_dest_1='LOCATION=c:/oracle/oradata/GORACLE/archive MANDATORY' 
scope=spfile; 
SQL> alter system set log_archive_start=true scope=both; 
SQL> alter system set remote_archive_enable=’SEND’ scope=spfile; --切换时,要修改成RECEIVE
SQL> alter system set fal_server=’STANDBYDB’ scope=both; 
SQL> alter system set fal_client=’PRIMARYDB’ scope=both; 
SQL> alter system set standby_archive_dest='c:\oracle\oradata\GORACLE\rmarc' scope=both; 
SQL> alter system set standby_file_management=’AUTO’ scope=both; 
注:后几个参数,主备切换后会用到。
3.	获取主数据库数据文件信息 
SQL> select name from v$datafile; 
4.	拷贝主数据库数据文件 
1)停止主数据库 
SQL> shutdown immediate; 
2)拷贝数据文件到临时位置 
3)重启主数据库 
SQL> startup; 
5.	在主数据库为备用数据库创建控制文件(standby专用的控制文件) 
SQL> alter database create standby controlfile as 'c:/standbycontrol01.ctl'; 
6.	在主数据库为备用数据库准备初始化参数文件 
SQL> create pfile='c:/initGORACLE.ora' from spfile; 
7.	从主数据库拷贝文件到备用服务器(包含:数据文件拷贝、备用控制文件、初始化参数文件和口令文件) 
注:standbycontrol01.ctl文件放置到c:/oracle/oradata/GORACLE目录中,并复制一份为standbycontrol02.ctl,与下面的参数文件修改对应。
8.	在备用服务器上修改初始化参数文件(从主库上拷过来的initGORACLE.ora)
*.control_files='c:/oracle/oradata/GORACLE/standbycontrol.ctl01',’c:/oracle/oradata/GORACLE/standbycontrol02.ctl'
*.standby_archive_dest=' c:/oracle/oradata/GORACLE/rmarc' 
*.standby_file_management=AUTO 
*.remote_archive_enable=TRUE 
*.fal_server=’PRIMARYDB’
*.fal_client=’STANDBYDB’ 
*.remote_archive_enable=’RECEIVE’ 
*.log_archive_dest_2='SERVICE=PRIMAYDB LGWR SYNC AFFIRM' 
注:修改控制文件名称,设置备库专用的归档路径以及一些相关的参数,注意主备切换时需要使用Alter Database 将参数remote_archive_enable修改为’SEND’;最后一个参数主备切换后才会用到。
9.	在备用服务器上仅安装数据库软件,不创建数据库,然后手动创建Oracle服务(for windows) 
c:\> oradim -NEW -SID GORACLE -STARTMODE a 
注:需要配置环境变量ORACLE_SID=GORACLE
10.	在主、备服务器上创建监听
使用Oracle Net Manager或直接修改listener.ora文件 
11.	在备用服务器上允许连接死锁检测 
修改SQLNET.ORA文件,增加如下行: 
SQLNET.EXPIRE_TIME=2 
12.	在主、备服务器上创建Oracle Net服务名 
使用Oracle Net Manager或直接修改tnsname.ora文件,两个服务器上都定义两个别名:PRIMARYDB、STANDBYDB,分别指向主库和备库。设置好后,可以使用tnsping命令检查一下。防火墙有时会影响数据库的连通。
13.	在备用服务器上创建SPFILE 
SQL> create spfile from pfile='c:\initGORACLE.ora'; 
注:使用修改过的pfile创建spfile。此时数据库还没有启动,若已启动请关闭shutdown immediate,这样就不用每次启动的时候指定pfile参数了。
14.	启动备用数据库为挂载备库模式 
SQL> startup nomount; 
SQL> alter database mount standby database; 
15.	在备用服务器上启动日志传送服务 
SQL> alter database recover managed standby database disconnect from session; 
16.	在主数据库上启动归档到备用数据库 
1)设置归档初始化参数 
SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=STANDBYDB LGWR ASYNC ' scope=both; 
-- STANDBYDB为前面配置的别名
--可增加配置属性:VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE),在主备切换的时候有用,其格式为:
	VALID_FOR(redo_log_type,database_role)
--redo_log_type: online_logfile, standby_logfile, all_logfiles
--database_role:primary_role, standby_role, all_roles
--一句话总结:当配置有VALID_FOR的数据库处于指定的database_role时,允许归档redo_log_type到log_archive_dest_n所配置的路径。
SQL> alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=both; 
2)归档当前日志 
SQL> alter system archive log current; 
17.	检验物理备用数据库 
1)在备用服务器上查看已有归档日志 
SQL&g