日期:2014-05-16  浏览次数:20511 次

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