暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

Oracle 11g ADG 快照备库切换步骤

原创 JiekeXu 2020-07-18
2168

有时候为了配合业务部门的演练工作,需要在 ADG 备库进行一些业务模拟演练,这样就需要将备库切换成可以读写的模式,刚好 Oracle 11g 有个新特性就是快照备库,将备库切换成快照备库,这个就可以满足应用要求,实现读写的操作,待应用完成业务演练后,再将快照备库切换成物理备库即可,这样就不会破坏原有备库的结构。

以下备库为 RAC 架构下的 ADG 备库,即 MAA 架构。

第一部分:检查备库同步情况
以 oracle 用户登录到备库数据库主机下执行:
sqlplus / as sysdba
#检查备库状态

select NAME,DATABASE_ROLE,OPEN_MODE,PROTECTION_MODE,REMOTE_ARCHIVE,SWITCHOVER_STATUS,FLASHBACK_ON from v$database;

--看到实例状态为只读物理备库 READ ONLY WITH APPLY,PHYSICAL STANDBY
NAME          DATABASE_ROLE    OPEN_MODE            PROTECTION_MODE      REMOTE_A SWITCHOVER_STATUS    FLASHBACK_ON
------------- ---------------- -------------------- -------------------- -------- -------------------- ------------------
BJZZSKP       PHYSICAL STANDBY READ ONLY WITH APPLY MAXIMUM PERFORMANCE  ENABLED  NOT ALLOWED          NO

复制

#查询同步延迟

set pagesize 20;
column name format a13;
column value format a20;
column unit format a30;
column TIME_COMPUTED format a30;
select name,value,unit,time_computed from v$dataguard_stats where name in ('transport lag','apply lag'); 

--看到以下 VALUE   结果为 0 则实时同步
NAME          VALUE                UNIT                           TIME_COMPUTED
------------- -------------------- ------------------------------ ------------------------------
transport lag +00 00:00:00         day(2) to second(0) interval   05/27/2020 10:43:58
apply lag     +00 00:00:00         day(2) to second(0) interval   05/27/2020 10:43:58 


复制

第二部分:设置快照备库

以 oracle 用户登录到备库数据库主机下执行:
sqlplus / as sysdba

#检查磁盘组ARCH的剩余空间

col PATH for a33                                                                       
col NAME for a15                                                                       
col FAILGROUP for a15                                                                  
select group_number,name,total_mb/1024 total_gb,free_mb/1024 free_gb,TYPE,state        
--,(total_mb-free_mb)/total_mb                                                         
from v$asm_diskgroup; 
 
GROUP_NUMBER NAME              TOTAL_GB    FREE_GB TYPE   STATE
------------ --------------- ---------- ---------- ------ -----------
           1 ARCH                   100 96.6152344 EXTERN CONNECTED
           2 DATA                   200 127.306641 EXTERN CONNECTED
           3 OCR                      3 2.09570313 NORMAL MOUNTED


复制

#检查闪回是否开启

SQL> select flashback_on from v$database; 
FLASHBACK_ON
------------------
NO

复制

根据以上查询到 +ARCH 大小设置 20G-30G 左右的闪回空间,以下节点1指数据库主机1,节点2指数据库主机2 均在 SQLPlus 下运行.

[节点1]
alter system set db_recovery_file_dest_size=30G scope=both; 
2.设置闪回区路径
[节点1]
alter system set db_recovery_file_dest='+ARCH' scope=both; 
3.关闭灾备两个接节点的数据库
[节点1]
shutdown immediate
[节点2]
shutdown immediate
4.一节点启动到mount阶段
[节点1]
startup mount
5.数据库开启闪回
[节点1]
alter database flashback on;
6.将备库改成快照模式(只读变成读写)
[节点1]
alter database convert to snapshot standby;
7.启动数据库
[节点1]
alter database open;
[节点2]
startup

复制

第三部分:快照备库还原为物理备库

灾备业务模拟之后,还原备库(建议三天内还原备库)

[节点1]
shutdown immediate
[节点2]
shutdown immediate
2.启动数据库到mount状态
[节点1]
startup mount
3.将数据库从快照模式转换为物理备库
[节点1]
alter database convert to physical standby;
4.重启数据库至mount
[节点1]
shutdown immediate;
startup nomount;
alter database mount standby database;
5.关闭闪回
[节点1]
alter database flashback off;
alter system set db_recovery_file_dest='' scope=both;
6.打开数据库(如有问题,联系总部oracle技术支持)
[节点1]
alter database open;
shutdown immediate;
startup;
[节点2]
startup
7.启动日志应用进程,同步生产主库数据
[节点1]
alter database recover managed standby database using current logfile disconnect from session;

8.多次重复执行检查主备同步状态,传输日志和应用日志时间
[节点1]
set linesize 150;
set pagesize 20;
column name format a13;
column value format a20;
column unit format a30;
column TIME_COMPUTED format a30;
select name,value,unit,time_computed from v$dataguard_stats where name in ('transport lag','apply lag');

以下时间为 0 则正常
NAME          VALUE                UNIT                           TIME_COMPUTED
------------- -------------------- ------------------------------ ------------------------------
transport lag +00 00:00:00         day(2) to second(0) interval   05/27/2020 11:00:06
apply lag     +00 00:00:00         day(2) to second(0) interval   05/27/2020 11:00:06

9.当然也可查看 MRP0 进程存在且处于 APPLYING_LOG  模式为正常。

SELECT PROCESS, STATUS,SEQUENCE#,thread# FROM V$MANAGED_STANDBY;

PROCESS   STATUS        SEQUENCE#    THREAD#
--------- ------------ ---------- ----------
ARCH      CLOSING            5695          2
ARCH      CLOSING            6131          1
ARCH      CLOSING            5882          2
ARCH      CLOSING            5741          1
ARCH      CLOSING            6061          1
ARCH      CLOSING            5920          1
ARCH      CONNECTED             0          0
ARCH      CLOSING            6052          1
ARCH      CLOSING            5720          1
ARCH      CLOSING            5847          1
RFS       IDLE                  0          0
RFS       IDLE                  0          0
MRP0      APPLYING_LOG       6109          2

13 rows selected.

复制

以下备库为单机文件系统架构下的 ADG 备库。

略有不同的就是第二部分,闪回目录只能设置到本地文件系统,不能设置到 ASM 磁盘组了。第三部分不涉及到节点 2 的操作,只在一个节点完成前面第三部分的内容即可。

以 oracle 用户登录到备库数据库主机下执行:

df -h

#检查 /app 文件系统的的剩余空间

#检查是否开启闪回

sqlplus / as sysdba
 
SQL> select flashback_on from v$database; 
FLASHBACK_ON
------------------
NO

复制

根据以上查询到 /app 大小设置 20G-30G 左右的闪回空间

[节点1]
alter system set db_recovery_file_dest_size=30G scope=both; 
2.设置闪回区路径
注意:如果没有 /app/flash 目录,则需要创建此目录,执行mkdir -p /app/flash 
[节点1]
alter system set db_recovery_file_dest='/app/flash' scope=both; 
3.关闭灾备两个接节点的数据库
[节点1]
shutdown immediate
4.一节点启动到mount阶段
[节点1]
startup mount
5.数据库开启闪回
[节点1]
alter database flashback on;
6.将备库改成快照模式(只读变成读写)
[节点1]
alter database convert to snapshot standby;
7.启动数据库
[节点1]
alter database open;

复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论