RAC-RAC DataGuard(11gR2)配置

RAC-RAC DataGuard配置

                                  

 

一、配置信息

1.1、搭建类别

1.1.1、第一种为备份恢复方式搭建dataguard,本次采用的是该方式

1.1.2、第二种为duplicate方式(主库克隆到备库)

1):在primary端的tnsnames.ora文件中增加UR=A 参数,连接standby数据库

该方法是不需要修改监听(见标题:第二种方法)

2):如果路径不一致必须要修改db_file_name_convert,log_file_name_conver参数,如果不修改在克隆数据库时会遇到错误

3):非ASM方式,单对单方式,要创建数据文件存放目录

1.2、环境介绍:

主数据库安装集群软件和数据库软件,建库

备数据库只需要安装集群软件和数据库软件即可,不需要建库

 

 

类别

主库

备库

clusterware

11g R2 Grid Infrastructure (11.2.0.1)

11g R2 Grid Infrastructure (11.2.0.1)

cluster nodes

dbrac1,dbrac2

dbrac1,dbrac2

IP Address

public:192.168.1.160/161

vip :  192.168.1.162/163

scan : 192.168.1.200

public:192.168.1.170/171

vip :  192.168.1.172/173

scan : 192.168.1.174

 

DB Version

11.2.0.1

11.2.0.1

instance_name

racdb1,racdb2

racdb1,racdb2

db_name

racdb

racdb

db_unique_name

racdb

standbydb

service_names

racdb

standbydb,racdb

ASM storage

ASM

ASM

File Management

OMF

OMF

ASM Diskgroup

+ASMDATA

+ADATA

OS Version

Red Hat Enterprise Linux Server release 5.5 (Tikanga) 64

Red Hat Enterprise Linux Server release 5.5 (Tikanga) 64

 

 

 

 

 

二、网络配置

2.1、Primary端

2.1.1、修改tnsnames.ora

oracle用户

节点1、节点2:Tnsnames.ora 添加如下内容:

STANDBYDB =

   (DESCRIPTION =

     (ADDRESS_LIST =

       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.172)(PORT = 1521))

     )

     (CONNECT_DATA =

       (SERVICE_NAME = standbydb)

       (INSTANCE_NAME= racdb1)

     )

   )

 

第二种方法(后加):

增加UR=A参数,允许连接到一个为监听为blocked状态的数据库

如下:

standbydb =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = db2.standby.com)(PORT = 1521))

    )

    (CONNECT_DATA = (UR = A)

      (SERVICE_NAME = standbydb)

      (INSTANCE_NAME = orcl)

    )

  )

2.2、standby端

2.2.1、静态监听配置

grid用户:

[grid@racdb1 admin]$ vi listener.ora

LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))))            # line added by Agent

LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1))))                # line added by Agent

ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON                # line added by Agent

ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON              # line added by Agent

 

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

     (GLOBAL_DBNAME = standbydb)

     (ORACLE_HOME = /opt/app/oracle/product/11.2.0/db_1)

     (SID_NAME = racdb1)

    )

   )

 

oracle用户:

Tnsnames.ora添加如下内容

 

PRIMARYDB =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.160)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = racdb)

    )

  )

 

STANDBYDB =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.172)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = standbydb)

      (INSTANCE_NAME = racdb1)

    )

  )

 

测试standby端到primary端的连通性

standbydb端:

tnsping primary

 

sqlplus sys/oracle@primarydb as sysdba

 

set line 200

select instance_name,host_name from v$instance;

 

2.2.1、第二种方法:

这种方法不需要添加静态监听,只需要在tnsname.ora中添加UR=A即可

注意:(UR=A))是连接到一个监听BLOCKED的未mount的数据库实例

STANDBYDB =

   (DESCRIPTION =

     (ADDRESS_LIST =

       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.172)(PORT = 1521))

     )

     (CONNECT_DATA = (UR = A)

       (SERVICE_NAME = standbydb)

       (INSTANCE_NAME= racdb1)

     )

   )

 

2.3、复制密码文件到standby端

主库:

拷贝密码文件到备端

SCP $ORACLE_HOME/dbs/oraracdb1 oracle@racdb1:/$ORACLE_HOME/dbs

SCP $ORACLE_HOME/dbs/oraracdb1 oracle@racdb1:/$ORACLE_HOME/dbs/oraracdb2

 

2.5、primary数据库运行在force logging模式下

查看数据库是否运行在force logging模式下,运行以下命令:

SQL> select FORCE_LOGGING from v$database

 

如果是NO那么修改一下命令修改:

SQL> alter database force logging;

 

2.6、配置DataGuard参数

--备份spifle文件,失败后可以重新启动数据库

SQL>create pfile='/home/oracle/initold.ora' from spfile;

 

--

SQL> alter system set log_archive_config='DG_CONFIG=(racdb,standbydb)' scope=both sid='*';

 

--本地归档文件存放目录

1、ALL_LOGFILES

为该目标位置归档联机的和备用数据库的重做日志。

2、PRIMARY_ROLE

只在是主数据库角色时归档到该目标位置 

3、ALL_ROLES

无论是主数据库角色还是备用数据库角色,均归档到该目标位置

当处于主数据库角色时,我们只将联机的重做日志归档到目标位置1。

因为备用数据库的重做日志处于主数据库角色时是不被激活的。

同时会将联机重做日志归档到目标位置2。

SQL> alter system set log_archive_dest_1='location=/archivelog valid_for=(all_logfiles,primary_role) db_unique_name= racdb' scope=both sid='*';

 

--当本地有归档日志发生时,这个日志会被传送到standby这个service所指向的数据库所在的主机。 (service=standbydb,standbydb是在tnsnames.ora中创建的网络服务名)

SQL> alter system set log_archive_dest_2='service=standbydb lgwr sync valid_for=(online_logfiles,primary_role) db_unique_name=standbydb' scope=both sid='*';

 

SQL> alter system set log_archive_dest_3='location=/standby_log valid_for=standby_logfile,standby_role db_unique_name=racdb' scope=both sid='*'

SQL> alter system set fal_client='racdb' scope=both sid='*'

SQL> alter system set fal_server='standbydb' scope=both sid='*'

SQL> alter system set standby_file_management=auto scope=both sid='*'

SQL>alter system set log_archive_max_processes=5 scope=both sid='*'

2.6.1、创建pfile文件

1):主库创建pfile

SQL> create pfile='/home/oracle/init.ora' from spfile;

 

2): 拷贝init.ora参数文件到standby端

scp init.ora oracle@racdb1:/home/oracle

 

 

2.7、创建standby日志组文件

节点1:

SQL> alter database add standby logfile group 7 size 50M;

SQL> alter database add standby logfile group 8 size 50M;

SQL> alter database add standby logfile group 9 size 50M;

SQL> alter database add standby logfile group 10 size 50M;

 

节点2:

SQL> alter database add standby logfile group 11 size 50M;

SQL> alter database add standby logfile group 12 size 50M;

SQL> alter database add standby logfile group 13 size 50M;

SQL> alter database add standby logfile group 14 size 50M;

 

2.8、创建standby控制文件

SQL>alter database create standby controlfile as '/home/oracle/standctl01.ctl

2.9、备份源端数据库

因直接duplicate报一下错误:

ORA-17627: ORA-12577: Message 12577 not found;  product=RDBMS; facility=ORA

所以采取备份恢复方式

 

---已解决:原因是没有设置参数log_file_name_conver,db_file_name_convert

2.9.1、备份脚本(第一种方法)

备份数据库:

#!/bin/bash

bk_date=`date +%Y_m%_d%`

 

rman target / log='/home/oracle/rmanlog/$bk_date.log' append <

run{

allocate channel c1 type disk connect sys/oracle@racdb1;

allocate channel c2 type disk connect sys/oracle@racdb2;

crosscheck backup;

crosscheck archivelog all;

delete noprompt expired backup;

delete noprompt obsolete;

sql 'alter system switch logfile';

backup database skip inaccessible format '/rman/db_$bk_date_%T_%s';

sql 'alter system switch logfile';

backup archivelog all delete input format '/rman/arch$bk_date_%T_%s';

backup current controlfile format '/rman/ctl$bk_date_%T_%s';

release channel c1;

release channel c2;

}

EOF

 

2.9.2、备份完成后传输到备库

两个节点都需要把备份传输到备库指定目录下

主库节点1:

scp * oracle@racdb1:/rman

 

主库节点2:

scp * oracle@racdb1:/rman

 

2.9.3、克隆数据库(第二种方法)

1):primary端:

先连接primary数据库,然后再连接standby数据库

rman target sys/oracle@primary auxiliary sys/oracle@racdb

 

执行以下命令:

rman>duplcate target database for standby from active database dorecover nofilenamecheck

 

执行完该条命令以后,如果需要可以把备库open

三、standby端配置

3.1、pfile参数修改

修改如下参数:

racdb1.__oracle_base='/opt/app/oracle'#ORACLE_BASE set from environment

racdb2.__oracle_base='/opt/app/oracle'#ORACLE_BASE set from environment

*.audit_file_dest='/opt/app/oracle/admin/racdb/adump'

*.control_files='+ADATA/STANDBYDB/CONTROLFILE/standctl01.ctl'

*.db_block_size=8192

*.db_create_file_dest='+ADATA'

racdb1.db_file_name_convert='+ASMDATA','+ADATA'

racdb2.db_file_name_convert='+ASMDATA','+ADATA'

*.db_name='racdb'

*.db_unique_name='standbydb'

*.diagnostic_dest='/opt/app/oracle'

racdb1.fal_server='standbydb'

racdb2.fal_server='standbydb'

*.log_archive_config='DG_CONFIG=(standbydb,racdb)'

racdb1.log_archive_dest_1='location=/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=standbydb'

racdb2.log_archive_dest_1='location=/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=standbydb'

racdb1.log_archive_dest_2='service=primarydb lgwr sync valid_for=(online_logfiles,primary_role) db_unique_name=racdb'

racdb2.log_archive_dest_2='service=primarydb lgwr sync valid_for=(online_logfiles,primary_role) db_unique_name=racdb'

racdb1.log_archive_dest_3='location=/standby_log valid_for=standby_logfile,standby_role db_unique_name=standby'

racdb2.log_archive_dest_3='location=/standby_log valid_for=standby_logfile,standby_role db_unique_name=standby'

*.remote_listener='racdb-scan:1521'

racdb1.service_names='standbydb','racdb'

racdb2.service_names='standbydb','racdb'

 

 

第二种方法需要添加以下参数

----增加log_file_name_conver和db_file_name_convert参数

 

格式: db_file_name_convert='主库路径','备库路径',db_file_name_convert='主库路径','备库路径'

 

racdb1. log_file_name_conver='+ASMDATA','ADATA'

racdb2.log_file_name_conver='+ASMDATA','ADATA'

racdb1. db_file_name_conver='+ASMDATA','ADATA'

racdb2.db_file_name_conver='+ASMDATA','ADATA'

 

3.2、启动到nomount

mkdir -p $ORACLE_BASE/admin/racdb/adump

 

sqlplus / as sysdba

startup nomount pfile='/home/oracle/init.ora'

 

 

3.3、恢复standby数据库(第一种方法)

standby端:

oracle用户:

rman target sys/oracle@primarydb auxiliary /

duplicate target database for standby nofilenamecheck;

 

3.4、启动redo应用

--启动日志实时应用
sql>alter database open
sql> alter database recover managed standby database using current logfile disconnect from session;

 

此时数据库是READ ONLY WITH APPLY 状态

观察日志传输情况:

primary端的alert*.log:

Wed Dec 11 06:46:43 2013

LGWR: Standby redo logfile selected for thread 1 sequence 152 for destination LOG_ARCHIVE_DEST_2

Thread 1 advanced to log sequence 152 (LGWR switch)

  Current log# 1 seq# 152 mem# 0: +ASMDATA/racdb/onlinelog/group_1.262.825044607

Wed Dec 11 06:46:46 2013

Archived Log entry 482 added for thread 1 sequence 151 ID 0x3108c1ff dest 1:

 

standby端的alert*.log:

Media Recovery Waiting for thread 1 sequence 152 (in transit)

Wed Dec 11 14:46:51 2013

RFS[6]: Selected log 7 for thread 1 sequence 152 dbid 800562524 branch 825044606

Recovery of Online Redo Log: Thread 1 Group 7 Seq 152 Reading mem 0

  Mem# 0: +ADATA/standbydb/onlinelog/group_7.266.83381979

 

3.5、修改控制文件路径

alter system set control_files='+ADATA/standbydb/controlfile/standctl01.ctl' sid='*'

 

3.6、创建spfile参数文件

create spfile='+ADATA' from '/home/oracle/init.ora'

 

编辑spfile指向,如果不知道spfile的具体位置,可以用grid用户通过asmcmd命令查找

 

节点1:

vi $ORACLE_HOME/dbs/initracdb1.ora

spfile='+adata/standbydb/parameterfile/spfileracdb.ora'

 

节点2:

vi $ORACLE_HOME/dbs/initracdb2.ora

spfile='+adata/standbydb/parameterfile/spfileracdb.ora'

 

3.7、注册数据库到集群

oracle:用户

 

1):注册数据库:

srvctl add database -d standbydb -o $ORACLE_HOME

 

2):添加实例:

srvctl add instance -d standbydb -i racdb1 -n racdb1

srvctl add instance -d standbydb -i racdb2 -n racdb2

 

3.8、恢复控制文件到ASM磁盘

3.8.1、关闭数据库

sqlplus / as sysdba

1):停止日志应用

SQL> alter database recover managed standby database cancel;
2):关闭数据库

SQL>shutdown immdiate;

 

3.8.2、启动数据库到nomount

sqlplus / as sysdba

startup nomount

 

3.8.3、恢复controlfile到+ADATA盘

rman target /

rman>resotre controlfile to '+ADATA/standbydb/controlfile/standctl01.ctl' from '/home/oracle/ standctl01.ctl'

 

3.8.4、打开数据库

1):启动到mount

sql>alter database mount;

 

2):启动到open

sql>alter database open;

 

3.8.5、启动日志实时应用

sql>alter database recover managed standby database using current logfile disconnect from session;

 

3.8.6、删除静态监听

grid用户:

cd $ORACLE_HOME/network/admin

删除之前添加的:

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

     (GLOBAL_DBNAME = standbydb)

     (ORACLE_HOME = /opt/app/oracle/product/11.2.0/db_1)

     (SID_NAME = racdb1)

    )

   )

 

3.8.7、重启监听

grid

1):lsnrctl reload

 

2):查看监听状态

[oracle@racdb1 ~]$ lsnrctl status

Services Summary...

Service "+ASM" has 1 instance(s).

  Instance "+ASM1", status READY, has 1 handler(s) for this service...

Service "racdb" has 1 instance(s).

  Instance "racdb1", status READY, has 1 handler(s) for this service...

Service "racdbXDB" has 1 instance(s).

  Instance "racdb1", status READY, has 1 handler(s) for this service...

Service "standbydb" has 1 instance(s).

  Instance "racdb1", status READY, has 1 handler(s) for this service...

The command completed successfully

 

3.9、节点2网络配置

3.9.1、tnsnames.ora

拷贝standby节点1的tnsnames.ora到节点2的$ORACLE_HOME/network/admin目录下修改IP地址

3.9.2、启动节点2数据库

grid:用户

 

1):srvctl start instance -d standbydb -i racdb2

 

3.9.3、启动日志实时应用:

sqlplus / as sysdba

sql>alter database recover managed standby database using current logfile disconnect from session;

此时2节点不会应用日志,恢复进程在节点1上,节点2为休眠状态

select * from v$archive_gap;

select process, client_process, sequence#, status from v$managed_standby;

select sequence#, first_time, next_time, applied from v$archived_log;

select archived_thread#, archived_seq#, applied_thread#, applied_seq# from v$archive_dest_status;

select thread#, max (sequence#) from v$log_history group by thread#;

select thread#, max (sequence#) from v$archived_log where APPLIED='YES' group by thread#;

 

四、配置DataGuard Broker(未完成)

 

SQL> alter system set dg_broker_config_file1='+asmdata/racdb/DATAGUARDCONFIGURE/dr1racdb.dat' scope=both sid='*';

 

 

SQL> alter system set dg_broker_config_file2='+asmdata/racdb/DATAGUARDCONFIGURE/dr2racdb.dat' scope=both sid='*';

 

System altered.

 

 

SQL> alter system set dg_broker_config_file1='+adata/standbydb/DATAGUARDCONFIGURE/dr1standbydb.dat' scope=both sid='*';

 

System altered.

 

SQL> alter system set dg_broker_config_file2='+adata/standbydb/DATAGUARDCONFIGURE/dr2standbydb.dat' scope=both sid='*';

 

System altered.

 

SQL>exit

 

 

[oracle@dbrac1 ~]$ dgmgrl

DGMGRL for Linux: Version 11.2.0.1.0 - Production

 

Copyright (c) 2000, 2009, Oracle. All rights reserved.

 

Welcome to DGMGRL, type "help" for information.

DGMGRL> connect sys/oracle@racdb

Connected.

DGMGRL>

DGMGRL>

DGMGRL>

DGMGRL> CREATE CONFIGURATION 'DG_Config' AS PRIMARY DATABASE IS 'racdb' CONNECT IDENTIFIER IS 'racdb';

Configuration "DG_Config" created with primary database "racdb"

 

DGMGRL> show configuration;

Configuration - DG_Config

 

  Protection Mode: MaxPerformance

  Databases:

    racdb - Primary database

 

Fast-Start Failover: DISABLED

 

Configuration Status:

DISABLED

 

DGMGRL> ADD DATABASE 'standbydb' AS CONNECT IDENTIFIER IS standbydb;

Database "standbydb" added

DGMGRL> show configuration;

 

Configuration - DG_Config

 

  Protection Mode: MaxPerformance

  Databases:

    racdb     - Primary database

    standbydb - Physical standby database

 

Fast-Start Failover: DISABLED

 

Configuration Status:

DISABLED

 

DGMGRL> enable configuration;

Enabled.

 

 

 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13634698/viewspace-1273972/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13634698/viewspace-1273972/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值