再做 Oracle 11gR2 RAC+DG4
第3部分已完成RAC主库到dg备库的日志同步. 这部分将配置dg备库 应用同步过来的日志.
接着完成RAC和dg角色互换.
查看备库是否应用日志
的SQL> 选择序列# ,名称 ,从v $ archived_log应用;
SEQUENCE#名称已应用
———- ———————————————————————- ———
24 +FLASH / phydb / archivelog / 2016_06_23 / thread_1_seq_24.264.915256125否
22 +FLASH/phydb/archivelog/2016_06_23/thread_1_seq_22.262.915256125 否
23 +FLASH/phydb/archivelog/2016_06_23/thread_1_seq_23.263.915256125 否
26 +闪存/phydb/archivelog/2016_06_23/thread_1_seq_26.265.915256129 否
25 +闪存/phydb/archivelog/2016_06_23/thread_1_seq_25.266.915256129 否
27 +闪存/phydb/archivelog/2016_06_23/thread_1_seq_27.267.915256129 否
28 +FLASH/phydb/archivelog/2016_06_23/thread_1_seq_28.268.915256129 否
29 +闪存/phydb/archivelog/2016_06_23/thread_1_seq_29.269.915256129 否
32 +闪存/phydb/archivelog/2016_06_23/thread_1_seq_32.270.915256129 否
30 +FLASH/phydb/archivelog/2016_06_23/thread_1_seq_30.272.915256129 否
31 +闪存/phydb/archivelog/2016_06_23/thread_1_seq_31.271.915256129 否
applied属性为NO,dg备库还没有应用同步过来的重做日志.
的SQL> alter database recover managed standby database using current logfile 断开连接
从会议;
数据库已更改.
再次执行select sequence# ,名称 ,从v $ archived_log应用; 发现已经同步
SEQUENCE#名称已应用
———- ———————————————————————- ———
24 +FLASH/phydb/archivelog/2016_06_23/thread_1_seq_24.264.915256125 是
22 +FLASH/phydb/archivelog/2016_06_23/thread_1_seq_22.262.915256125 是
23 +FLASH/phydb/archivelog/2016_06_23/thread_1_seq_23.263.915256125 是
26 +FLASH/phydb/archivelog/2016_06_23/thread_1_seq_26.265.915256129 是
25 +FLASH/phydb/archivelog/2016_06_23/thread_1_seq_25.266.915256129 是
27 +FLASH/phydb/archivelog/2016_06_23/thread_1_seq_27.267.915256129 是
28 +FLASH/phydb/archivelog/2016_06_23/thread_1_seq_28.268.915256129 是
29 +FLASH/phydb/archivelog/2016_06_23/thread_1_seq_29.269.915256129 是
32 +FLASH/phydb/archivelog/2016_06_23/thread_1_seq_32.270.915256129 是
30 +FLASH/phydb/archivelog/2016_06_23/thread_1_seq_30.272.915256129 是
31 +FLASH/phydb/archivelog/2016_06_23/thread_1_seq_31.271.915256129 是
将dg从mount状态切换到open状态, 但在切换之前必须关闭dg应用这些日志.
的SQL> 更改数据库打开;
数据库已更改.
查看dg状态
的SQL > 选择 dbid,名称,切换状态,数据库唯一名称,database_role,
打开模式,来自 v$ 数据库的 current_scn;
重新应用日志
的SQL> alter database recover managed standby database using current logfile 断开连接
从会议;
数据库已更改.
测试RAC主库和dg备库的数据
node1和gd都执行select file_name,tablespace_name from dba_data_files 发现数据文件是一致的.
的SQL> 选择文件名,来自 dba_data_files 的 tablespace_name;
FILE_NAME TABLESPACE_NAME
———————————————————— ——————————
+DATA/devdb/datafile/users.259.914028331 用户
+DATA/devdb/datafile/undotbs1.258.914028331 UNDOTBS1
+DATA/devdb/datafile/sysaux.257.914028331 SYSAUX
+数据/devdb/datafile/system.256.914028329 SYSTEM
+DATA/devdb/datafile/example.264.914028635 示例
+DATA/devdb/datafile/undotbs2.265.914028947 UNDOTBS2
6 选择的行.
RAC查看原表空间, 创建表空间, 查看表空间路径,验证表空间
的SQL >创建表空间 dg_tbs 数据文件大小 5m;
的SQL >显示参数 db_create_file;
的SQL> 选择文件名,来自 dba_data_files 的 tablespace_name;
的SQL> 选择文件名,来自 dba_data_files 的 tablespace_name;
FILE_NAME TABLESPACE_NAME
———————————————————— ——————————
+DATA/devdb/datafile/users.259.914028331 用户
+DATA/devdb/datafile/undotbs1.258.914028331 UNDOTBS1
+DATA/devdb/datafile/sysaux.257.914028331 SYSAUX
+数据/devdb/datafile/system.256.914028329 SYSTEM
+DATA/devdb/datafile/example.264.914028635 示例
+DATA/devdb/datafile/undotbs2.265.914028947 UNDOTBS2
+数据/devdb/数据文件/dg_tbs.269.265.917493135 DG_TBS
7 选择的行.
dg备库执行 select file_name,来自 dba_data_files 的 tablespace_name;
说明dg备库将表空件同步过来了.
RAC主库删除该表空间
的SQL >删除表空间 dg_tbs,包括内容和数据文件;
表空间下降
dg备库检查一下现有表空间
上图所示,当主库删除表空间后,备库对应的表空间也消失了.
RAC主库和dg备库的角色互换
RAC上执行
的SQL > 改变系统设置 fal_client='devdb' sid='devdb1';
系统变更.
的SQL > 改变系统设置 fal_client='devdb' sid='devdb2';
系统变更.
的SQL > 改变系统设置 fal_server='phydb' sid='*';
系统变更.
node1和node2执行
显示参数 spfile;
RAC主库创建standby logfile;
在创建之前查看一下本地日志组
的SQL> 选择 * 从v $ logfile;
群组# 状态类型成员是_
———- ——- ——- ———————————————————— —
2 在线 +DATA/phydb/onlinelog/group_2.270.915262415 否
2 联机 +FLASH/phydb/onlinelog/group_2.289.915262423 是
1 在线 +DATA/phydb/onlinelog/group_1.269.915262411 否
1 联机 +FLASH/phydb/onlinelog/group_1.288.915262415 是
3 在线 +DATA/phydb/onlinelog/group_3.271.915262423 否
3 联机 +FLASH/phydb/onlinelog/group_3.290.915262429 是
4 在线 +DATA/phydb/onlinelog/group_4.272.915262429 否
4 联机 +FLASH/phydb/onlinelog/group_4.291.915262433 是
可见本地日志组是1,2,3,4 ; 因此创建standby logfile时不能和上述日志重复
的SQL > 改变数据库添加备用日志文件线程 1 团体 5 大小50m, 团体 6 大小50m,
团体 7 大小50m;
数据库已更改.
的SQL > 改变数据库添加备用日志文件线程 2 团体 8 大小50m, 团体 9 大小50m,
团体 10 大小50m;
数据库已更改.
RAC主库修改参数db_file_name_convert和 log_file_name_convert
参数作用是处理主库和备库磁盘结构不一致的问题,比如: 主库磁盘组data备库磁盘组datadg,
将来在data磁盘组创建表空间,
而备库得到这个表空间,表空间含有data磁盘组, 而备库没有data磁盘组, 因此需要这几个参数将旧磁盘组
data转换到新的磁盘组datadg.否则因为备库上没有data磁盘组而不能创建这个表空间.
的SQL >alter system set db_file_name_convert='+DATA/phydb/' , ‘+DATA/devdb/’ sid=’*’ scope=spfile;
数据库已更改.
的SQL >alter system set log_file_name_convert='+DATA/phydb/' , ‘+DATA/devdb/’ sid=’*’ scope=spfile;
数据库已更改.
下面进入主备切换环节
停掉RAC的其中一个节点,这里停止node2
的SQL > 立即关闭;
数据库关闭.
数据库卸载.
ORACLE实例关闭.
将节点1切换成备库
的SQL > 更改数据库提交以通过会话关闭切换到物理备用数据库;
数据库已更改.
查看node1状态
的SQL > 选择 dbid,名称,当前_scn,保护模式,database_role,强制记录,打开模式,
来自 gv$ 数据库的 switchover_status;
目前的情况 RAC和dg都是standby状态了
dg切换成主库
的SQL > 更改数据库提交以切换到主数据库;
数据库已更改.
查看一下dg状态
的SQL > 选择 dbid,名称,当前_scn,保护模式,database_role,强制记录,打开模式,
来自 gv$ 数据库的 switchover_status;
停止node1和node2
的SQL > 立即关闭;
数据库关闭.
数据库卸载.
ORACLE实例关闭.
退出sqlplus ,切换到grid用户,然后停止实例devdb
node1和node2切换到mount状态
节点 1 -> srvctl 启动数据库 -d devdb -o mount;
node1和node2切换到oracle用户,sqlplus
的SQL > 选择 dbid,名称,当前_scn,保护模式,database_role,强制记录,打开模式,
来自 gv$ 数据库的 switchover_status;
发现node1和node2的switchover_status都是session active的; DATABASE_ROLE都变成了
物理备用
RAC备库应用日志
的SQL > alter database recover managed standby database using current logfile 断开连接
从会议;
数据库已更改.
将dg主库从mount状态切换到open状态
的SQL > 更改数据库打开;
数据库已更改.
此时dg主库 OPEN_MODE是READ WRITE, SWITCHOVER_STATUS 是可解决的差距
RAC主库的SWITCHOVER_STATUS状态改为READ ONLY
的SQL > 更改数据库恢复托管备用数据库取消;
数据库已更改.
的SQL > 更改数据库打开;
数据库已更改.
的SQL > 选择 dbid,名称,当前_scn,保护模式,database_role,强制记录,打开模式,
来自 gv$ 数据库的 switchover_status;
RAC备库打开日志应用
的SQL > alter database recover managed standby database using current logfile 断开连接
从会议;
数据库已更改.
最终状态确认
dg主库状态和rac备库状态
至此rac库和dg库角色切换操作成功.
oracle 11gR2 RAC+DG搭建测试完成.