资讯专栏INFORMATION COLUMN

物理备库switchover切换的3种操作步骤与常见问题

IT那活儿 / 866人阅读
物理备库switchover切换的3种操作步骤与常见问题

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


  

从oracle 12.1开始引入了新的SQL语法,用于物理备库的switchover切换。

在使用过程严禁混合使用新旧两种用法。除非在切换过程中有明确的提示。

上节文章介绍了《物理备库failover切换的3种方法》,本文将介绍分别使用新旧SQL语法执行switchover切换的两种操作步骤、使用data guard broker的切换方法、以及switchover的常见问题。


switchover前准备工作

1. 检查主备库dataguard参数是否正常
LOG_ARCHIVE_DEST_1

LOG_ARCHIVE_DEST_2

LOG_ARCHIVE_CONFIG

FAL_SERVER

STANDBY_FILE_MANAGEMENT

db_file_name_convert

log_file_name_convert

enabled_PDBs_on_standby

SQL>
select group#,thread#,bytes/1024/1024 MM from v$log;

SQL>
select member from v$logfile;

SQL>
select group#,thread#,bytes/1024/1024 MM,status from v$standby_log;
2. 检查主备库同步是否正常,确保没有任何apply delay
select inst_id,dbid,name,db_unique_name,open_mode,PROTECTION_MODE,database_role,SWITCHOVER_STATUS,DATAGUARD_BROKER from gv$database;
select * from v$dataguard_stats;
SELECT PROCESS, STATUS, THREAD#, SEQUENCE#,BLOCK#, BLOCKS FROM V$MANAGED_STANDBY;
SELECT STATUS, GAP_STATUS FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID = 2;
3. 检查主备库alert日志是否有异常输出。
4. 检查主备库的监听状态、listener.ora、tnsnames.ora文件。
5. 执行切换前,备库最好是处于mounted状态,提高切换速度。
6. 确认主备库的补丁一致,以免切换到备库以后,遇到不可遇知的BUG。
7. 与业务侧沟通好操作时间。
8. 确认备库的硬件(CPU、内存、IO)性能能够支撑切换后的应用连接。

9. 检查主备库的归档空间使用率,切换期间不要删除归档日志。

使用旧语法执行switchover到Physical Standby Database

1. 主库检查switchover_status状态
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO STANDBY
1 row selected
2. 在主库上执行以下SQL语句将其切换到standby
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
3. mount原主库
SQL> STARTUP MOUNT;
4. 在备库上检查switchover_status状态
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
-----------------
TO PRIMARY
1 row selected
5. 在目标备库上执行以下SQL语句将其切换为primary
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
6. 打开新主库
SQL> ALTER DATABASE OPEN;
7. 在新备库上开始redo apply

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

使用新语法执行switchover到Physical Standby Database

1. 检查目前是否具备切换条件
SQL> ALTER DATABASE SWITCHOVER TO 目标备库 VERIFY;
具备切换条件,一切正常的情况下,只会返回“Database altered”的信息。如果有其它的报错返回,一定要处理完成才能继续下面的切换步骤
2. 在主库上执行以后SQL进行switchover
SQL> ALTER DATABASE SWITCHOVER TO 目标备库;
Database altered.
3. open新的主库
SQL> ALTER DATABASE OPEN;
4. open新的备库

SQL> STARTUP MOUNT;
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> ALTER DATABASE OPEN;
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

使用data guard broker执行switchover到Physical Standby Database

1. 使用dg broker检查主备库的同步状态是否正常
show database verbose 目标主库;
show database verbose 目标备库;
show configuration verbose;
返回结果中有报错,一定要处理完成才能继续下面的切换步骤
2. 使用dg broker执行switchover(主备库皆可执行)

switchover to 备库名称。

switchover过程中的常见问题

除了在switchover前准备工作检查出的问题之外,还有一些其它方面的常见问题。
1. 主备库的角色互换失败

解决方法:

检查alert日志中的报错提示,采取必要的措施修复该错误,如有必要,则重新打开主库的一个节点,从switchover第一步重新开始。

2. 主备库的database_role都是standby

解决方法:

  • 在原主库上执行如下SQL
    alter database switchover to 目标备库 force;
  • 在原备库上执行如下SQL
    alter database switchover to 目标主库 force;
  • 如果上面SQL执行失败并伴随着ORA-16473,则先执行如下SQL
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
  • 再次执行强制切换命令
    alter database switchover to 目标主库 force。
3. 最后一次归档日志未传输到备库导致switchover失败
手动把归档日志传输到目标库,使用SQL“ALTER DATABASE REGISTER LOGFILEfile_specification”注册后,应用日志,重新执行切换步骤。
4. switchover失败并报ORA-01102错误
原因是参数文件中未明确指定DB_UNIQUE_NAME参数,解决方法是在备库中初始化参数文件中指定DB_UNIQUE_NAME参数后,重新启动主备库。
5. switchover成功后却新主库报ORA-12514
检查各种配置、参数没有问题。原因是tnsnames.ora中新备库的连接是在切换后新添加的,导致归档进程、lns进程没有加载新的tnsnames.ora,重新新主库实例,即可恢复正常。


本文作者:聂文峰(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

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

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

相关文章

  • 19C DG Broker配置和测试

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

    IT那活儿 评论0 收藏2941
  • DG备库读写测试方案

    DG备库读写测试方案 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; margin:0...

    IT那活儿 评论0 收藏856
  • MySQL 复制 - 性能扩展性基石 4:主备切换

    摘要:一旦使用的复制功能,就很大可能会碰到主备切换的情况。对于主备切换,如果是计划内的操作,较为容易至少比紧急情况下容易。可能有主库上已发生的修改还没有更新到它任何一台备库上的情况。假设是和的主库。 一旦使用 MySQL 的复制功能,就很大可能会碰到主备切换的情况。也许是为了迭代升级服务器,或者是主库出现问题时,将一台备库转换成主库,或者只是希望重新分配容量。不过出于什么原因,都需要将新主库...

    MRZYD 评论0 收藏0
  • MySQL 复制 - 性能扩展性基石 4:主备切换

    摘要:一旦使用的复制功能,就很大可能会碰到主备切换的情况。对于主备切换,如果是计划内的操作,较为容易至少比紧急情况下容易。可能有主库上已发生的修改还没有更新到它任何一台备库上的情况。假设是和的主库。 一旦使用 MySQL 的复制功能,就很大可能会碰到主备切换的情况。也许是为了迭代升级服务器,或者是主库出现问题时,将一台备库转换成主库,或者只是希望重新分配容量。不过出于什么原因,都需要将新主库...

    lk20150415 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

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