资讯专栏INFORMATION COLUMN

Oracle 18C&19c ADG切换流程

IT那活儿 / 715人阅读
Oracle 18C&19c ADG切换流程

点击上方“IT那活儿”,关注后了解更多精彩内容!!!

先决条件

主备库需要更新到最新补丁。
配置验证

step1 主备数据库补丁要一致,
step2 查看alert log 日志是否有报错,要确保没有报错;
step3 通过在主备库查看v$database_
block_corruption & v$nonlogged_block 视图确保没有损坏;
step4 确保主库和备库是正常的,切redo日志传输及应用正常;
step5 可以选择使用以下查询来检查重做传输和应用状态。
  • 主库操作

SQL> col DEST_NAME for a20
SQL> col DESTINATION for a25
SQL> col ERROR for a15
SQL> col ALTERNATE for a20
SQL> set lines 1000
SQL>select DEST_NAME,DESTINATION,ERROR,ALTERNATE,TYPE,status,VALID_TYPE,VALID_ROLE from V$ARCHIVE_DEST where STATUS <>INACTIVE;
在主库检查创建的最后一个归档日志:
SQL> select thread#, max(sequence#) "Last Primary Seq Generated"
              from gv$archived_log val, gv$database vdb
              where val.resetlogs_change# = vdb.resetlogs_change#
              group by thread# order by 1;


  • 备库操作

使用以下查询,检查从主数据库接收到的最后一个归档日志;
查看备库从主库收到的最后一个归档日志:


SQL> select   thread#, max(sequence#) "Last Standby Seq Received" 
              from     gv$archived_log val, gv$database vdb
              where    val.resetlogs_change# = vdb.resetlogs_change#
              group by thread# order by 1;


  • 验证初始化参数

验证下面参数配置是否争取:
log_archive_config
fal_server
db_unique_name
log_archive_dest_n


预切换

  • 确保先决条件得到完全验证,同时遵循以下指导以成功切换,这些步骤应在真正的计划中断开始之前执行,并确保没有问题。

  • 验证重做/归档日志应用良好并且没有GAP。

  • 在备数据库中运行以下查询以检查从所有线程接收和应用的最后一个归档日志序列,这将不包括当前序列,因为 SQL 正在从 v$archived_log 中提取详细信息。

SQL> select thread#, max(sequence#) "Last Standby Seq Applied"
from gv$archived_log val, gv$database vdb
where val.resetlogs_change# = vdb.resetlogs_change#
and val.applied in (YES,IN- MEMORY)
group by thread# order by 1
;


  • 检查 MRP 进程状态(它应该开始运行并应用日志):


SQL> select * from gv$dataguard_process;


  • 停止和启动托管恢复过程的命令:


SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;


无论出于何种原因,如果备库恢复 (MRP) 延迟启动,或者如果备用数据库始终保持滞后,则切换将消耗时间来应用要同步的日志。


在切换之前,尽量保持最小的归档日志应用延迟,这将减少总切换时间窗口。


检查数据文件和临时文件状态。


预计所有数据文件在主备库中都应该在线,如果有文件离线(或)不在在线状态,则恢复文件并恢复以确保备库文件与主库文件相同。


如果有离线文件和切换后的文件,如果切换后需要在线,则将文件在线。

SQL> SELECT NAME FROM V$DATAFILE WHERE STATUS=OFFLINE;
SQL> ALTER DATABASE DATAFILE datafile-name ONLINE;


  • 于临时文件:

SQL> select tf.name filename, bytes, ts.name tablespace from 
v$tempfile tf, v$tablespace ts where tf.ts#=ts.ts#;


列出的临时文件对于应用程序来说已经足够好了,应该没问题。

如果需要添加更多临时文件,请同时签入主文件并添加其他文件。
  • 联机和备用重做日志文件配置

在线重做日志文件:
set lines 150
col member for a50
select a.thread#,a.group#,a.bytes,a.blocksize,b.type,a.status,b.member from v$log a,v$logfile b where a.group#=b.group#;


从primary执行上述命令时,可能会得到:


a.status in (INACTIVE,ACTIVE,CURRENT)
Expected a.status from Standby is UNUSED, CLEARING or CLEARING_CURRENT,


如果输出有不同的结果,则需要手动清除redo logfiles。


  • 对于备库redo日志文件(SRL):


select s.thread#,s.group#,s.status,s.bytes,l.type,l.member 
from v$logfile l,v$standby_log s where s.group#=l.group#;


备用重做日志文件状态将处于UNASSIGNED 或ACTIVE状态。


  • 清除 ORL 组的命令:


SQL> ALTER DATABASE CLEAR LOGFILE GROUP # >;


如果需要在备用数据库中清除 ORL 或 SRL,则必须停止恢复过程。

如果在切换时间之前 ORL 未被清除,则 SWITCHOVER 命令将清除 ORL 并启动数据库。但是切换会耗费时间来完成。
如果等待时间较长(超过 15 分钟),那么由于超时,oracle 进程的会话将被终止,如果由于超时而终止切换,请重试,直到切换成功。
如果数据库配置为将 OMF 文件用于重做日志文件或设置了 log_file_name_convert,则在线重做日志文件将在恢复过程启动时自动清除。
  • 检查警报日志文件

a. 从主要警报日志文件:
    * 检查是否有任何重做传输报告的问题?
    * 没有密码文件的问题?
    * 没有 TNS 或连接问题
b.  从备用数据库确保:
    * 没有与托管恢复相关的错误
    * 通过应用存档日志/重做日志向前恢复
    * 没有 TNS 或连接问题
    * 没有I/O 问题或损坏问题
select * from v$database_block_corruption; -- 它不返回任何行
select * from v$nonlogged_block; -- 它不返回任何行


  • 检查归档日志 GAP 和redo延迟应用

您必须为每个备库配置 LOG_ARCHIVE_DEST_n 和 LOG_ARCHIVE_DEST_STATE_n 参数,以便在发生切换或故障转移时,所有备站点继续从新的主库接收重做数据。
  • 库执行以下命令:

考虑到 log_archive_dest_2 是为重做传送配置的。
SQL> SELECT STATUS, GAP_STATUS FROM V$ARCHIVE_DEST_STATUS 
WHERE DEST_ID = 2;
STATUS 应该是Valid。
GAP_STATUS 应该是 NO GAP。
如果报告了不同的结果,则不应尝试切换。
如果配置了延迟,则停止恢复进程并立即启动该过程。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY;


果延迟没有消除,那么切换将需要更长的时间。


验证切换

切换时,如果需要保持备用连接不断开,则将参数:
STANDBY_DB_PRESERVE_STATES设置为SESSION或ALL。
如果此操作成功,则应返回一条 Database Altered 消息(在主数据库中执行以下 SQL)。
SQL> ALTER DATABASE SWITCHOVER TO  VERIFY;


果出现错误,请修复问题,然后重新运行切换验证命令。

示例:“ORA-16475:警告成功,检查警报日志以获取更多详细信息”,在这种情况下,请检查警报日志文件,然后解决所有错误/警告。
切换步骤

如果切换验证成功,则执行命令切换数据库。
step1 在当前primary中执行
SQL> ALTER DATABASE SWITCHOVER TO ;


如果步骤1成功,则按照步骤2启动新的primay库到open模式

step2 在新的主库中执行
SQL> ALTER DATABASE OPEN;
step3 旧主(当前/新备用)应安装或打开取决于情况。
如果备用是 Oracle Active dataguard 物理备用:
SQL> STARTUP;
如果备库不是 Oracle Active data guard 物理备用:
SQL> STARTUP MOUNT;
step4 在新的备库中启动重做应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE 
DISCONNECT from SESSION;


切换后


  • 在主库:

检查归档日志是否正在传输到备用数据库并得到应用
SQL> alter system archive log current;
SQL>select dest_id,error,status from v$archive_dest where dest_id=>;
SQL>select max(sequence#),thread# from v$log_history group by thread#;
如果远程 log_Archive_destination 为 2,即 log_archive_dest_2。
SQL>select max(sequence#) from v$archived_log where applied=YES and dest_id=2;


  • 在备库:

验证归档日志的可用性和归档日志文件的应用
SQL>select max(sequence#),thread# from v$archived_log group by thread#;
SQL> select name,role,instance,thread#,sequence#,action from gv$dataguard_process;



END


更多精彩干货分享

点击下方名片关注

IT那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129737.html

相关文章

  • RAC补丁日常更新成功反遇异常处理

    RAC补丁日常更新成功反遇异常处理 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; m...

    IT那活儿 评论0 收藏2488
  • 应用Docker制做Python自然环境联接Oracle镜像系统

      本文主要是给大家介绍了应用Docker制做Python自然环境联接Oracle镜像系统实例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽快涨薪  Python联接Oracle本地检测  依靠安装使用提前准备  Python、连接Oracle必须Python依靠和当地Oracle客户端,接口测试Oracle版本号12.1.0.2.0,开发和测试自然环境为l...

    89542767 评论0 收藏0
  • 19C DG Broker配置和测试

    19C DG Broker配置和测试 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ...

    IT那活儿 评论0 收藏2941
  • MySQL集群MGR升级实施测试方案

    MySQL集群MGR升级实施测试方案 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ...

    IT那活儿 评论0 收藏1318
  • linux安装mysql

    摘要:设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。可以看到只允许访问更新用户表强制刷新权限再次查看用户表。查看端口监听状态,修改配置文件这里可以看到表示所有均可访问。1.准备① 检测系统是否自带安装 MySQLrpm -qa | grep mysql如有,类似mysql-libs-5.1.52-1.el6_0.1.x86_64那可以选择进行卸载:rpm -e mysql-li...

    Tecode 评论0 收藏0
  • 如何随机&amp;&amp;去重返回新数组

    摘要:问题起因姐毫无征兆的在我们的水群里发来一段代码她的目的是想从中随机抽取个不重复的值组成一个新数组问我代码是否有问题很遗憾因为我刚睡醒随便贴了一下代码运行了一下就说没问题很快我就被打脸了也是如果没问题的话她问个毛大家可以先找一下问题下面先 1.问题起因 W姐毫无征兆的在我们的水群里发来一段代码: var arr = [{q:1+1=?,a:2,b:3,c:1},{q:1+2=?,a:2,...

    Apollo 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<