DG怎样手动切主从-用普通命令方式(不用dg broker)

2024-04-16 19:36

本文主要是介绍DG怎样手动切主从-用普通命令方式(不用dg broker),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里主库是orcl,从库是orclstd

一 将主库降为从库

1.1查看主库SWITCHOVER_STATUS的状态

#确认主库是否可以做switchover

#不能切换的情况

SQL>SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS

------------------

SESSIONS ACTIVE

在这种情况下,说明还有活动session,需要先kill掉,只留下当前sys进程

select sid,SERIAL# from v$session;

SID SERIAL#

---------- ----------

12 14

17 3

查出当前连接session

SQL> select distinct ss.sid from v$mystat ss;

杀掉其他session ,示例

SQL> alter system kill session '12,14';

#可以切换的情况:

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS

--------------------

TO STANDBY

1.2 将主库切换至备用模式

SQL> alter database commit to switchover to physical standby with session shutdown;

假如报错:

ORA-16416: 没有可行的 Physical Standby切换目标

则检查下主从的log_archive_dest_2值是否为空,如果为空,需要设置

示例:

show parameter log_archive_dest_2;

alter system set  log_archive_dest_2='service=orclstd valid_for=(online_logfiles,primary_role) db_unique_name=orclstd' scope=both ;

1.3关闭主数据库将其启动到mount状态

SQL> shutdown abort;

SQL> startup mount;

二 将从库提升为主库

2.1 查看备库SWITCHOVER_STATUS状态

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS

-----------------

TO PRIMARY

注:如果是TO PRIMARY表示可以正常切换,不过还会遇到NOT ALLOWED和PENDING或者LATENT,实际操作下来如果备库的switchover_status为not allowed或者to primary都可以正常切换。假如是RECOVERY NEEDED,则执行下alter database recover managed standby database using current logfile disconnect from session;否则后面切换至主库的时候会报错:

ORA-16139: 需要介质恢复

2.2 将备库切为主库

SQL> alter database commit to switchover to primary with session shutdown;

2.3 打开新的主数据库

SQL> ALTER DATABASE OPEN;

#查看状态,确保open_mode是READ WRITE,DATABASE_ROLE是primary

select open_mode,database_role from v$database;

OPEN_MODE            DATABASE_ROLE

-------------------- ----------------

READ WRITE           PRIMARY

原主库/新的备库上启动 REDO apply

SQL> alter database recover managed standby database using current logfile  disconnect from session;

假如报错:

ORA-01153: 激活了不兼容的介质恢复,则先启动数据库到open状态,再执行该命令,试下。

#启动数据库

alter database open;

#检查状态,确保open_mode值是READ ONLY WITH APPLY,database_role是PHYSICAL STANDBY

select open_mode,database_role from v$database;

假如open_mode值是read only,不是read only with apply,则再应用一次redo试下:

SQL> alter database recover managed standby database using current logfile  disconnect from session;

select open_mode,database_role from v$database;

四 检查主从的log_archive_dest_2是否为空

#检查主从的log_archive_dest_2值是否为空,如果为空,需要设置

示例:

show parameter log_archive_dest_2;

alter system set  log_archive_dest_2='service=orclstd valid_for=(online_logfiles,primary_role) db_unique_name=orclstd' scope=both ;

五 验证数据同步

在主库插入一条数据,看能否同步到从库上。

如果不能,则做以下检查。

5.1 检查主从log_archive_dest_state_nlog_archive_dest_2状态

需要确保log_archive_dest_state_1/2的状态是ENABLE。我遇到过一次状态是RESET,导致主库的归档日志无法传输到备库上。

show parameter log_archive_dest_state_1;

show parameter log_archive_dest_state_2; 

#检查主从的log_archive_dest_2值是否为空,如果为空,需要设置

示例:

show parameter log_archive_dest_2;

alter system set  log_archive_dest_2='service=orclstd valid_for=(online_logfiles,primary_role) db_unique_name=orclstd' scope=both ;

5.2 检查从库standby log的状态是否正常

SQL> select group#,sequence#,first_change#,next_change#,status,used from  v$standby_log;

如果都为UNASSIGNED,则说明备库异常,是active状态方为正常。

5.3 检查告警日志有何报错

假如报FAL[client]: Error fetching gap sequence, no FAL server specifie,则需要配置fal_server

5.4 检查主库中归档位置配置是否有误

select error from v$archive_dest where target='STANDBY';

5.5 检查DG状态

SELECT MESSAGE FROM V$DATAGUARD_STATUS;

5.6 检查主库的switchover_status

SQL> select switchover_status from v$database ;

SWITCHOVER_STATUS

----------------------------------------

TO STANDBY

如果结果为FAILED DESTINATION,则不正常,需要检查下主备的告警日志,排查下原因。

5.7 检查主库归档日志能否实时同步到备库

5.7.1 查看备库现有归档日志

SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME  FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

 SEQUENCE# FIRST_TIME NEXT_TIME

---------- ------------ ------------

 6 08-NOV-19 08-NOV-19

 7 08-NOV-19 08-NOV-19

 8 08-NOV-19 08-NOV-19

 8 08-NOV-19 08-NOV-19

5.7.2 在主库上切换日志

SQL> ALTER SYSTEM SWITCH LOGFILE;

5.7.3 检查备库是否能接收到新产生的归档日志并应用

SQL>  SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG  ORDER BY SEQUENCE#;

SEQUENCE# APPLIED

---------- ------------------

 6 YES

 7 YES

 8 YES

 8 YES

最近收到的日志文件的APPLIED列的值将是IN-MEMORY,如果该日志文件已应用,则为YES。

六 确保程序里连接的是新主库

这篇关于DG怎样手动切主从-用普通命令方式(不用dg broker)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/909711

相关文章

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

Springboot整合Redis主从实践

《Springboot整合Redis主从实践》:本文主要介绍Springboot整合Redis主从的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言原配置现配置测试LettuceConnectionFactory.setShareNativeConnect

Mybatis的分页实现方式

《Mybatis的分页实现方式》MyBatis的分页实现方式主要有以下几种,每种方式适用于不同的场景,且在性能、灵活性和代码侵入性上有所差异,对Mybatis的分页实现方式感兴趣的朋友一起看看吧... 目录​1. 原生 SQL 分页(物理分页)​​2. RowBounds 分页(逻辑分页)​​3. Page

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.