Oracle Data Guard常用命令

--查询数据库角色和保护模式
select database_role,switchover_status from v$database;
--切换备库为主库(切换后,主库为mount状态)
--TO PRIMARY
alter database commit to switchover to primary; 
--SESSIONS ACTIVE
alter database commit to switchover to primary with session shutdown; 
--切换主库为备库(切换后,备库为shutdown状态)
--TO STANDBY
alter database commit to switchover to physical standby;
--SESSIONS ACTIVE
alter database commit to switchover to physical standby with session shutdown;
 
--查询数据库打开模式
select open_mode from v$database;
--开启数据同步(mount模式执行READ ONLY,open模式执行READ ONLY WITH APPLY)
alter database recover managed standby database using current logfile disconnect from session;
--关闭数据同步(必须先关闭,才可以执行alter database open打开数据库)
alter database recover managed standby database cancel;
--主库异常无法恢复时,异常切换时备库需执行下列命令
alter database recover managed standby database finish;
alter database recover managed standby database finish force;
 
--查询数据库保护模式
select protection_mode from v$database;
--更改数据库保护模式
alter database set standby database to maximize protection; --最大保护
alter database set standby database to maximize performance; --最高性能
alter database set standby database to maximize availability; --最高可用

DataGuard角色切换 数据库切换状态

主库状态(switchover_status)

NOT ALLOWED:未找到备库。

TO STANDBY:当前主机已就绪,可切换为备机。

SESSIONS ACTIVE:当前主机存在活动会话,但也可切换为备机。

RESOLVABLE GAP:备库未开启数据同步,导致主备数据有差异。

备库状态(switchover_status)

NOT ALLOWED:主库还未执行switchover,不允许切换为主。

TO PRIMARY:当前备机已就绪,可切换为主机。

SESSIONS ACTIVE:当前备机存在活动会话,但页可切换为主机。

RECOVERY NEEDED:当前未开启数据同步。

正常切换(switchover)

主备切换

1.主库切换为备库,如下图:

--1.查询主库状态为TO STANDBY或SESSIONS ACTIVE
select database_role,switchover_status from v$database;
--2.切换主库角色为备库
alter database commit to switchover to physical standby;
alter database commit to switchover to physical standby with session shutdown;
--3.重启数据库到open模式
startup
--4.开启redo同步
alter database recover managed standby database using current logfile disconnect from session;
--5.查询数据库状态已经是TO PRIMARY(主库成功切换为备库)
select database_role,switchover_status from v$database;
--6.查询数据库打开模式为READ ONLY WITH APPLY(读写分离,redo实时同步)
select open_mode from v$database;

此时,主库已经切换为备库,下面可以在所有备库选择一个切换为主库。

2.备库切换为主库,如下图:

--1.查询备库状态为TO PRIMARY或SESSIONS ACTIVE
select database_role,switchover_status from v$database;
--2.切换备库角色为主库
alter database commit to switchover to primary;
alter database commit to switchover to primary with session shutdown;
--3.打开数据库(切换完后为mount状态)
alter database open;
--4.查询数据库状态为TO STANDBY(表示切换完成)
select database_role,switchover_status from v$database;

至此,正常切换完成,可在主库insert/update数据看是否实时可在备库中select到。

应急切换(failover)

1.模拟主库不可用,如下图,直接关闭主数据库:

shutdown immediate;
  1. 切换备库为主库,如下图:

    --1.查询备库状态NOT ALLOWED
    select database_role,switchover_status from vdatabase; --2.执行sql停止同步并应用所有redo alter database recover managed standby database cancel; alter database recover managed standby database finish; --3.切换备库为主库 alter database commit to switchover to primary; alter database commit to switchover to primary with session shutdown; --4.打开数据库(切换完后为mount状态) alter database open; --5.查询数据库状态为TO STANDBY(表示切换完成) select database_role,switchover_status from vdatabase;

至此,应急切换完成,备库可正常使用了。

3.若原主库故障解决,利用RMAN将主库恢复到备库。

相关推荐
a_安徒生14 分钟前
linux安装TDengine
linux·数据库·tdengine
程序员学习随笔17 分钟前
PostgreSQL技术内幕19:逻辑备份工具pg_dump、pg_dumpall
数据库·postgresql
尘浮生1 小时前
Java项目实战II基于微信小程序的校运会管理系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
偶尔。5351 小时前
什么是事务?事务有哪些特性?
数据库·oracle
安迁岚1 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验六 视图
数据库·sql·mysql·oracle·实验报告
喵叔哟1 小时前
16. 【.NET 8 实战--孢子记账--从单体到微服务】--汇率获取定时器
微服务·oracle·.net
xoxo-Rachel1 小时前
(超级详细!!!)解决“com.mysql.jdbc.Driver is deprecated”警告:详解与优化
java·数据库·mysql
JH30732 小时前
Oracle与MySQL中CONCAT()函数的使用差异
数据库·mysql·oracle
蓝染-惣右介2 小时前
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
java·数据库·tomcat·mybatis
冷心笑看丽美人2 小时前
Spring框架特性及包下载(Java EE 学习笔记04)
数据库