Oracle 12C 物理Standby 主备切换switchover

Oracle 12C 物理Standby 主备切换switchover

1 简述

Oracle 12C 为DG 的运维提供了很多的改进。这里提到的就是其中之一的:物理DG 主备的一键切换。 所谓的一键就是一条命令。该命令会执行相关的检查,并将11g 的切换步骤进行封装执行。如果不符合 切换条件,会在命令行窗口及日志中给出相应的提示。

2 切换检查

Oracle 为DG 切换提供了的专门的检查命令:

alter database switchover to <target standby db_unique_name> verify;

以上命令会验证如下信息:

  • 验证数据库的版本至少为 12.1
  • 主库 REDO 传输正常。
  • 备库 MRP 进程正常运行并且与主库同步。

如果一切正常,数据库会反馈以下消息

SQL> alter database switchover to chicago verify;

Database altered.

主库日志:

SWITCHOVER VERIFY: Send VERIFY request to switchover target CHICAGO

SWITCHOVER VERIFY COMPLETE

Completed: alter database switchover to chicago verify

如果不正常,会有报错信息,一般是 ORA-16470 或者 ORA-16475.

3 问题及解决方法

由于某些原因,可能我们的dataguard配置并不支持切换。这里列出对常见两个错误的 解决思路。

3.1 ORA-16470

示例:

SQL>alter database switchover to chicago verify;

ORA-16470: Redo Apply is not running on switchover target

这种情况说明数据没有正常同步,需要同步完成后,再进行切换。 在备库执行以下命令:

alter database recover managed standby  database disconnect;

3.2 ORA-16475

ORA-16475 错误是一个入口性质的错误,只反馈给我们检查成功,但是可能还会存在问题。 具体问题, 在primary 或者 standby 的alert日志中会有提示。命令行窗口的错误如下:

SQL> alter database switchover to chicago verify;

ERROR at line 1:

ORA-16475: succeeded with warnings, check alert log for more details

3.2.1 dirty redo log

如果redo log 中存在脏数据,需要清除,会遇到如下错误: 主库日志:

-----Primary Alert log-----------

SWITCHOVER VERIFY WARNING: switchover target has dirty online redo logfiles that require clearing.

It takes time to clear online redo logfiles. This may slow down switchover process.
检查 redo 日志路径转换设置
show parameter logfile_name_convert

如果没有设置使用如下命令进行设置:

alter system set LOG_FILE_NAME_CONVERT='本地路径','目标端路径' scope=spfile;
注意
重启备库并且启动 MRP。当重启备库并且启动 MRP,将清除所有备库的 log_file_name_convert 参数设置的日志。
检查临时文件

确认主库和备库的临时数据文件匹配
临时数据文件在创建备库之后,不会同时创建临时数据文件,用如下的命令查询临时数据文件,并且在备库进行创建。

col name for a45
select ts#,name,ts#,status from v$tempfile;
注意
对于多个备库的环境,确保每个备库与主库同步。

3.2.2 log_archive_dest_n

standby 端*log_archive_dest_n* 参数配置不正确或者没有配置时也会出现 ORA-16475 错误,alert日志如下:

SWITCHOVER VERIFY: Send VERIFY request to switchover target S1202
SWITCHOVER VERIFY COMPLETE
SWITCHOVER VERIFY WARNING: switchover target has no standby database definedin LOG_ARCHIVE_DEST_n parameter. If the switchover target is converted to
a primary database, the new primary database will not be protected.ORA-16475 signalled during: ALTER DATABASE SWITCHOVER TO S1202 VERIFY...
  • 检查log_archive_dest_n 是否设置 对于一个standby的情况下,我们一般设置的是 log_archive_dest_2.

    show parameter log_archive_dest
    

    检查除了log_archive_dest_1 外是否有配置其他参数。如果没有配置,使用如下命令进行配置:

    alter system set log_archive_dest_2='SERVICE=&tnsname ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=&standby_db_unique_name;
    
  • 检查switchover_status

    select switchover_status from v$database;
    

    switchover_status 的值为 UNRESOLVABLE GAP(RAC 或者非 RAC),通过以下方法解决:

    • 检查是否有些线程已关闭但是仍存在

      col instance for a10
      set lines 32767
      select thread#,instance,status from v$thread;

      结果示例如下:

         THREAD# INSTANCE   STATUS
      ---------- ---------- ------
      1 gsboss OPEN
      2 gsboss2 OPEN

      将存在的线程disable:

      ALTER DATABASE DISABLE THREAD &thread#;
      
    • 检查 log_archive_destination 是否是否可用

      select status,DEST_ID,TYPE,ERROR,GAP_STATUS,SYNCHRONIZED,SYNCHRONIZATION_STATUS,RECOVERY_MODE from V$ARCHIVE_DEST_STATUS where STatus <> 'INACTIVE';
      

      如果存在路径不可用的情况,修改为可用路径。或者解决路径权限等问题。

4 切换角色

在主库和备库同时开启 trace,用于发生问题时候的诊断。

alter system set log_archive_trace=8191 sid=’*’;

4.1 切换备库角色为主库

主库 - Boston, 备库为chicago.

alter database switchover to chicago;

以下是主库(BOSTON)和备库(CHICAGO)的 alert 输出:

  • 主库日志:

    Fri Aug 23 11:05:23 2013
    
    ALTER SYSTEM SET log_archive_trace=8191 SCOPE=BOTH;
    
     alter database switchover to chicago
    
    Fri Aug 23 11:05:43 2013
    
    Starting switchover [Process ID: 3340]
    
    Fri Aug 23 11:05:43 2013
    
    ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY [Process Id: 3340] (boston)
    
    .
    
    Fri Aug 23 11:05:44 2013
    
    Active, synchronized Physical Standby switchover target has been identified
    
    Preventing updates and queries at the Primary
    
    Generating and shipping final logs to target standby
    
    Switchover End-Of-Redo Log thread 1 sequence 11 has been fixed   <--------- 序列号 11 是日志的终止序号
    
    Switchover: Primary highest seen SCN set to 0x0.0x229306
    
    ARCH: Noswitch archival of thread 1, sequence 11
    
    .
    
    Switchover: Primary controlfile converted to standby controlfile succesfully.
    
    Switchover: Complete - Database shutdown required
    
    Sending request (convert to primary database) to switchover target CHICAGO
    
    OCISessionBegin with PasswordVerifier succeeded
    
    Switchover complete. Database shutdown required
    
    USER (ospid: 3340): terminating the instance
    
    Fri Aug 23 11:05:51 2013
    
    Instance terminated by USER, pid = 3340
    
    Completed:  alter database switchover to chicago
    
  • 备库日志:

    Fri Aug 23 11:05:47 2013
    
    SWITCHOVER: received request 'ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY' from primary database.
    
    Fri Aug 23 11:05:47 2013
    
    ALTER DATABASE SWITCHOVER TO PRIMARY (chicago)
    
    Maximum wait for role transition is 15 minutes.
    
    .
    
    Standby became primary SCN: 2265860
    
    Switchover: Complete - Database mounted as primary
    
    SWITCHOVER: completed request from primary database.
    
    注意
    备库一端只最多只等待15分钟,实现备库与主库的同步。

4.2 打开新的主库

alter database open;

4.3 重启新的备库

shutdown abort
startup
-- 开启数据同步
alter database recover managed standby database disconnect;

5 切换后的后续步骤

  • 关闭 trace
alter system set log_archive_trace=0;
  • 确认DG同步

    • 在主库侧执行

      alter system switch logfile;
      select dest_id,error,status from v$archive_dest where dest_id=<your remote log_archive_dest_<n>>;
      select max(sequence#),thread# from v$log_history group by thread#;
    • 在备库侧

      select thread#,sequence#,process,status from gv$managed_standby;
      select max(sequence#),thread# from v$archived_log group by thread#;
  • 在 12.2 中使用 v$dataguard_process 替代 v$managed_standby
select name,role,instance,thread#,sequence#,action from gv$dataguard_process;

Author: halberd.lee

Created: 2019-06-19 Wed 14:19

Validate

Oracle 12C 物理Standby 主备切换switchover的更多相关文章

  1. Oracle DataGuard主备切换(switchover)

    Oracle DataGuard主备切换可以使用传统的手动命令切换,也可以使用dgmgr切换,本文记录手动切换. (一)将主库切换为物理备库 STEP1:查看主库状态 SQL> SELECT O ...

  2. (摘)DataGuard物理standby管理 - 主备切换

    DataGuard物理standby管理 - 主备切换 Dataguard的切换分为两种,switchover和failover. switchover一般用于数据库或硬件升级,这时只需要较短时间中断 ...

  3. 物理DG主备库切换时遇到ORA-16139: media recovery required错误

    在物理DG主备库切换时遇到ORA-16139: media recovery required错误 SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRI ...

  4. Oracle 11.2.0.4.0 Dataguard部署和日常维护(5)-Datauard 主备切换和故障转移篇

    1. dataguard主备切换   1.1. 查看当前主备库是否具备切换条件 on slave select sequence#,first_time,next_time,archived,appl ...

  5. oracle11g ADG主备切换

    oracle11g ADG主备切换 1.主库 SQL> select name,open_mode,switchover_status from v$database; NAME OPEN_MO ...

  6. 使用broker进行Datagurd主备切换报ORA-12514异常

    在使用Datagurd broker进行Datagurd主备切换时报ORA-12514监听异常, 详细信息如下: DGMGRL> switchover to xiaohe; Performing ...

  7. Spark系列(五)Master主备切换机制

    Spark Master主备切换主要有两种机制,之中是基于文件系统,一种是基于Zookeeper.基于文件系统的主备切换机制需要在Active Master挂掉后手动切换到Standby Master ...

  8. 测试redis+keepalived实现简单的主备切换【转载】

    转自: 测试redis+keepalived实现简单的主备切换 - Try My Best 尽力而为 - ITeye技术网站http://raising.iteye.com/blog/2311757 ...

  9. Postgres主备切换

    主备查询 主备不会自动切换(即需要实现线上环境主数据库宕掉之后,从数据库能够自动切换为主数据库,需要借用第三方软件,例如heartbeat等) (1)如何查看是primary还是standby 方法1 ...

随机推荐

  1. php迭代器Iterator接口

    以前也看过迭代器Iterator接口,感觉不如yied好用,因此实际工作中并没有用到过. 今天看了一篇网上的博客(https://www.cnblogs.com/wwjchina/p/7723499. ...

  2. 第三章·MySQL版本区别及管理

    一.MySQL5.6与MySQL5.7安装的区别 1.cmake的时候加入了bostorg 2.初始化时 使用mysqld --initialize 替代mysql_install_db,其它参数没有 ...

  3. spring-02

    spring-02 1.谈谈你对 Spring 的理解 Spring 是一个开源框架,为简化企业级应用开发而生.Spring 可以是使简单的 JavaBean 实现以前只有 EJB 才能实现的功能.S ...

  4. 十三,k8s集群web端管理工具dashboard部署

    目录 部署 dashboard 由于会被墙, 所以要加一步拉取镜像 正式开始安装dashboard 查看 开放访问 配置dashboard用户 1. token 令牌认证 创建一个 serviceAc ...

  5. 浅谈apidoc的使用

    使用前提:服务器已经安装好apidoc了 1.项目根目录建立 apidoc.json ,文件基础信息如下 { "name": "项目名称", "ver ...

  6. JMeter 问题整理

    1. 远程连接出现错误: java.net.connectexception: connection refused: connect -解决办法: 编辑jmeter.bat(windows OS), ...

  7. 【input】标签去除默认样式

    input{-webkit-appearance: none; -moz-appearance: none; -o-appearance: none; appearance: none;}

  8. IIS 调试配置

  9. Eclipse指定jdk启动

    在eclipse.ini文件中加入这一句话: -vm D:/Java/jdk/jdk1.8/jre/bin/server/jvm.dll

  10. Web界面开发必看!Kendo UI for jQuery编辑功能指南第一弹

    Kendo UI for jQuery最新试用版下载 Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support f ...