RAC dataguard切换演练实录

RAC dataguard切换演练实录

环境 primary是两个节点的rac  standby是两个节点rac

1.检查参数是否支持主备互切换

SQL> show parameter log_archive_dest_2
NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
log_archive_dest_2                   string
service=STANDBYORCL valid_for=
(ALL_LOGFILES,ALL_ROLES) db_un
ique_name=orcldg
检查网络
SQL> !
[oracle@orclrac1 ~]$ tnsping standbyorcl
TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 07-8鏈?-2014 13:24:56
Copyright (c) 1997, 2013, Oracle.  All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.19.0.112)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcldg)))
OK (0 msec)
[oracle@orclrac1 ~]$ exit
exit
SQL> !
停掉其他节点的时候只留一个
[oracle@orclrac1 ~]$ srvctl stop instance -d orcl -i orcl2
[oracle@orclrac1 ~]$ exit
exit
需要检查主数据库是否可以进行转换
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
------------------------------------------------------------
RESOLVABLE GAP
发现有日志没有传输到standby端,执行日志切换
SQL> alter system switch logfile;
System altered.
再次检查,发现主库可以切换
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
------------------------------------------------------------
TO STANDBY
主库执行角色转换
SQL>  ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY
  2  ;
Database altered.
把主库启动到mount 状态
SQL> shutdown immediate;
ORA-01012: not logged on
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
[oracle@orclrac1 ~]$ sqlplus "/as sysdba"
SQL*Plus: Release 11.2.0.4.0 Production on 鏄熸湡鍥?8鏈?7 13:30:14 2014
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to an idle instance.
SQL> startup mount
ORACLE instance started.
Total System Global Area 2.2448E+10 bytes
Fixed Size                  2263296 bytes
Variable Size            9126807296 bytes
Database Buffers         1.3288E+10 bytes
Redo Buffers               31277056 bytes
Database mounted

检查切换前的standby库
SQL> show parameter log_archive_dest_2

NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
log_archive_dest_2                   string
service=primaryorcl valid_for=
(ALL_LOGFILES,ALL_ROLES) db_un
ique_name=orcl
SQL> !
[oracle@orclsty1 ~]$ tnsping primaryorcl
TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 07-8鏈?-2014 13:24:34
Copyright (c) 1997, 2013, Oracle.  All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.19.0.107)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))
OK (0 msec)
[oracle@orclsty1 ~]$ exit
exit
关闭standby库其他实例
[oracle@orclsty1 ~]$ srvctl stop instance -d orcl -i orcl2
[oracle@orclsty1 ~]$ exit
检查standby 库是否可以转换为主库发现为NOT ALLOWED有问题
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
------------------------------------------------------------
NOT ALLOWED
直接执行切换报错
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN
*
ERROR at line 1:
ORA-16139: 闇€瑕佷粙璐ㄦ仮澶?
可能原因是应为原来standby备库日志没有应用,执行应用
SQL> alter database recover managed standby database disconnect from session;
Database altered.
然后再次检查状态,执行切换为primay库
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
------------------------------------------------------------
TO PRIMARY
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
Database altered.
打开数据库并开启实时应用
SQL> alter database open;
Database altered.
SQL>  ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
Database altered.
测试在新主库建表,并查询数据
SQL> create table test(id number);
create table test(id number)
*
ERROR at line 1:
ORA-01109: 鏁版嵁搴撴湭鎵撳紑
SQL> alter database open; 
Database altered.
SQL>  create table test(id number);
Table created.
SQL> insert into test values(1);
1 row created.
SQL> commit;
Commit complete.
在新standby库中查询,发现数据实时同步过来了,测试成功
SQL> select * from test;
        ID
----------
         1

修改集群的配置,并把启动节点的rac启动
新standby端:
[oracle@orclrac1 ~]$ export LANG=zh_CN.GBK 
[oracle@orclrac1 ~]$ srvctl config database -d orcl
数据库唯一名称: orcl
数据库名: orcl
Oracle 主目录: /oracle/oracle/app/oracle/product/11.2.0/dbhome_1
Oracle 用户: oracle
Spfile: +DATADG/orcl/spfileorcl.ora
域: 
启动选项: open
停止选项: immediate
数据库角色: PRIMARY
管理策略: AUTOMATIC
服务器池: orcl
数据库实例: orcl1,orcl2
磁盘组: DATADG,SYSTEMDG
装载点路径: 
服务: 
类型: RAC
数据库是管理员管理的
[oracle@orclrac1 ~]$ srvctl modify database -d orcl -n orcl -r PHYSICAL_STANDBY
[oracle@orclrac1 ~]$ srvctl config database -d orcl
数据库唯一名称: orcl
数据库名: orcl
Oracle 主目录: /oracle/oracle/app/oracle/product/11.2.0/dbhome_1
Oracle 用户: oracle
Spfile: +DATADG/orcl/spfileorcl.ora
域: 
启动选项: open
停止选项: immediate
数据库角色: PHYSICAL_STANDBY
管理策略: AUTOMATIC
服务器池: orcl
数据库实例: orcl1,orcl2
磁盘组: DATADG,SYSTEMDG
装载点路径: 
服务: 
类型: RAC
数据库是管理员管理的
[oracle@orclrac1 ~]$ 
[oracle@orclrac1 ~]$ 
[oracle@orclrac1 ~]$ srvctl stop database -d orcl
[oracle@orclrac1 ~]$ srvctl start database -d orcl
新primary端:
[oracle@orclsty1 ~]$ srvctl config database -d orcl
数据库唯一名称: orcl
数据库名: orcl
Oracle 主目录: /oracle/oracle/app/oracle/product/11.2.0/dbhome_1
Oracle 用户: oracle
Spfile: +DATADG/orcl/spfileorcl.ora
域: 
启动选项: open
停止选项: immediate
数据库角色: PHYSICAL_STANDBY
管理策略: AUTOMATIC
服务器池: orcl
数据库实例: orcl1,orcl2
磁盘组: DATADG,SYSTEMDG
装载点路径: 
服务: 
类型: RAC
数据库是管理员管理的
[oracle@orclsty1 ~]$ srvctl modify database -d orcl -n orcl -r primary
[oracle@orclsty1 ~]$ srvctl config database -d orcl
数据库唯一名称: orcl
数据库名: orcl
Oracle 主目录: /oracle/oracle/app/oracle/product/11.2.0/dbhome_1
Oracle 用户: oracle
Spfile: +DATADG/orcl/spfileorcl.ora
域: 
启动选项: open
停止选项: immediate
数据库角色: PRIMARY
管理策略: AUTOMATIC
服务器池: orcl
数据库实例: orcl1,orcl2
磁盘组: DATADG,SYSTEMDG
装载点路径: 
服务: 
类型: RAC
数据库是管理员管理的
再次打开新standby库的实时应用
SQL>  ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
遇到问题:
发现alert日志里报如下错误:
新standby端:
Thu Aug 07 14:04:24 2014
PING[ARC2]: Heartbeat failed to connect to standby 'STANDBYORCL'. Error is 16009.
PING[ARC2]: Heartbeat failed to connect to standby 'STANDBYORCL'. Error is 16009.
Thu Aug 07 14:05:24 2014
PING[ARC2]: Heartbeat failed to connect to standby 'STANDBYORCL'. Error is 16009.
PING[ARC2]: Heartbeat failed to connect to standby 'STANDBYORCL'. Error is 16009.
Thu Aug 07 14:06:24 2014
PING[ARC2]: Heartbeat failed to connect to standby 'STANDBYORCL'. Error is 16009.
PING[ARC2]: Heartbeat failed to connect to standby 'STANDBYORCL'. Error is 16009.
新primary端:
Thu Aug 07 14:04:19 2014
RFS[13]: Assigned to RFS process 4642
RFS[13]: Database mount ID mismatch [0x526af93d:0x5269e114] (1382742333:1382670612)
RFS[13]: Client instance is standby database instead of primary
Thu Aug 07 14:05:19 2014
RFS[14]: Assigned to RFS process 4781
RFS[14]: Database mount ID mismatch [0x526af93d:0x5269e114] (1382742333:1382670612)
RFS[14]: Client instance is standby database instead of primary
Thu Aug 07 14:05:19 2014
RFS[15]: Assigned to RFS process 4783
RFS[15]: Database mount ID mismatch [0x526af93d:0x5269e114] (1382742333:1382670612)
RFS[15]: Client instance is standby database instead of primary
Thu Aug 07 14:06:19 2014
RFS[16]: Assigned to RFS process 4918
RFS[16]: Database mount ID mismatch [0x526af93d:0x5269e114] (1382742333:1382670612)
RFS[16]: Client instance is standby database instead of primary
Thu Aug 07 14:06:19 2014
原因是有由于log_archive_dest_2设置问题valid_for=(ALL_LOGFILES,ALL_ROLES)导致的
SQL> show parameter log_archive_dest_2
NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
log_archive_dest_2                   string
service=STANDBYORCL valid_for=
(ALL_LOGFILES,ALL_ROLES) db_un
ique_name=orcldg
把新备份库的log_archive_dest_state_2设置为defer后者把VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)问题解决,报错日志不再产生
SQL> alter system set log_archive_dest_state_2=defer scope=both ;
至此rac datagurad切换完成
### 回答1: Oracle 19c RAC DataGuard搭建是一种高可用性和容灾解决方案。RAC集群可以提供跨数据中心的集群解决方案。DataGuard技术可以帮助数据库管理员在灾难发生时迅速切换到备份数据库。 Oracle 19c RAC DataGuard搭建可以分为以下步骤: 1. 安装Oracle Grid Infrastructure和RAC数据库实例。 2. 配置RAC集群。这包括网络设置、存储设置和群集设置。确保所有节点能够相互通信,并且使用共享存储。 3. 创建主数据库和备份数据库。主备同步,备份数据库和主数据库位于不同的数据中心。 4. 配置DataGuard物理备份和逻辑备份。 5. 在主数据库和备份数据库之间配置DataGuard次级应用程序。 6. 测试DataGuard配置是否正常工作。测试主数据库的故障转移,确保在主数据库发生故障时可以切换到备份数据库。 Oracle 19c RAC DataGuard搭建需要谨慎计划和操作。在搭建过程中需要确保数据的一致性,并且需要考虑容灾策略,如灾难恢复和演练。只有通过正确的设置和测试,才能确保Oracle 19c RAC DataGuard搭建提供高可用性和容灾保护解决方案。 ### 回答2: Oracle 19c是一种强大的数据库管理系统,可用于构建高可用性环境。对于那些需要可靠数据保护和复制的企业来说,Oracle RACDataGuard功能是非常重要的。 首先,要构建Oracle 19c RAC集群,需要至少两台服务器。可以使用Oracle Grid Infrastructure安装程序轻松地将这些服务器组成集群。RAC集群是可以在多个服务器上运行的数据库实例,它们能够协同工作,处理更多的请求并提供更快的性能。安装后,可以将应用程序连接到集群,并使用透明应用程序故障转移(TAF)来实现应用程序的优化和可用性。 接下来就是使用DataGuard来进行数据保护。DataGuard是Oracle自带的一个功能,它可以实现数据镜像、备份和恢复。它需要在主数据库和备用数据库之间创建物理链接和转发。主数据库通过将其变更记录发送到备用数据库来保持它们同步。如果主库崩溃,则可以立即启动备用数据库来维护业务连续性。 通过上述的步骤,可以构建一个高可用、高性能、高可靠、高安全的Oracle 19c RAC集群和DataGuard数据保护系统。每一个组件的优点都可以为企业提供无可比拟的价值,并将使整个环境更加健壮和不易受到数据故障的影响。 ### 回答3: Oracle 19c RAC DataGuard搭建是一种高可用性和灾备性解决方案,它可以确保企业系统和数据在本地或异地灾害发生时仍能保持可用。 首先,需要建立两个物理服务器,安装Oracle 19c RAC数据库软件并创建RAC实例。然后,需要创建两个DataGuard实例并配置它们之间的数据传输。 在RAC集群环境下,每个节点上都需要安装Oracle软件,并使用Oracle ASM进行存储管理。用户需要创建一个ASM磁盘组来存储Oracle数据库,并为每个节点划分适当的ASM磁盘组。 接下来,建立数据保护服务器,并安装Oracle 19c DataGuard数据库软件。在数据保护服务器上创建一个新的实例,并配置DataGuard属性。 然后,开始配置主数据库和备份数据库的DataGuard。将主数据库设为“主”模式,备份数据库设置为“备份”模式。配置主数据库的重做日志和备份数据库的重做日志的传输顺序,并指定主数据库的网络地址和备份数据库的网络地址及端口号。 最后,在主数据库上设置联机重做日志、数据文件和控制文件自动备份;并在备份数据库上设置数据文件和控制文件自动备份。测试系统中的故障转移、自动重试和网络连接性问题,以确保系统在灾难发生后可以无缝地进行切换和恢复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值