热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

关于OracleDataGuard的角色切换

Oracle数据库通过其DataGuard技术通过网络将数据实时异地的Oracle数据库中,实现其数据的异地安全机制。在异地建立一样的环境,

Oracle数据库通过其 Data Guard技术通过网络将数据实时异地的Oracle数据库中,实现其数据的异地安全机制。在异地建立一样的环境,

1.概述

Oracle数据库通过其 Data Guard技术通过网络将数据实时异地的Oracle数据库中,实现其数据的异地安全机制。

它的实现过程是一般是这样:

首先,在异地建立一样的环境,包括主机操作系统,数据库版本和数据文件存储方式,先模拟建个库,,后在此库基础上创建physical standby。

其次,在主库和备库节点上修改一下init.ora,listener.ora和tnsnames.ora文件配置,及主库的v$database的protection_mode修改为MAXIMUMAVAILABILITY(最大可用)。

再次,在主库上备份一下控制文件,当然是for standby方式。

最后,在备库上创建一下standby logfile,启动到recover managed standbydatabase 状态;并在主库上将指向该备库的log_archive_dest_state_*做一下defer和enable,即激活一下。

这样,整个过程就此完成。

好吧,这不是重点。

重点是,在DataGuard环境搭建完成后备库能切换吗?如何切换呢?

2.主备库相互切换

其实,OracleData Guard的切换有两种,其专业术语称为switchover和failover。

正常切换switchover的操作步骤简单明了,如下:

第一步,关掉主库上的监听,再将主库上的所有连接也关掉。可以直接kill -9 local=no的oracle进程,我就是这么干的。

第二步,在主库上将数据库角色设置为PHYSICAL STANDBY,切换状态设置为TO PRIMARY。

操作的SQL为:alter database commit to switchover to physical standby;

结果检查:

SQL>select database_role,switchover_status from v$database;



DATABASE_ROLE SWITCHOVER_STATUS

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

PHYSICALSTANDBY TO PRIMARY

主库已经变成一个standby库了。但该库的切换状态设置是TO PRIMARY,如果你这个时候反悔,就可以再切换回去。

切换操作完成后,数据库实例需要重启,init.ora文件需要更换,实例设置为实时恢复状态。

操作的SQL为:

startupnomount force;

alterdatabase mount standby database;

alterdatabase recover managed standby database using current logfile disconnect fromsession;

第三步,在备库上将数据库角色设置为PRIMARY。

操作的SQL为:alter database commit to switchover to primary;

结果检查:

先检查数据库角色和切换状态,决定备库能不能切换。

SQL>select database_role,switchover_status from v$database;



DATABASE_ROLE SWITCHOVER_STATUS

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

PHYSICALSTANDBY TO PRIMARY



SQL>alter database commit to switchover to primary;

Databasealtered.

切换操作完成后,数据库实例需要重启,init.ora文件需要更换。

SQL>conn / as sysdba

Connected.

SQL>startup open force;

ORACLEinstance started.

Databasemounted.

Databaseopened.

SQL>select database_role,switchover_status from v$database;

DATABASE_ROLE SWITCHOVER_STATUS

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

PRIMARY TO STANDBY



通过这三步,切换操作就完成了。这个切换操作可以用来做数据迁移。比以前使用RMAN的backup/restore简单多了。更重要的是,它还可以再切换回去。

这三步操作,看上去很简单,但是涉及到了主库角色转换的问题。如果在主库的角色转换后,备库因某些原因如硬件不能转换为主库了,又该怎么办?

没有了主库,对于任何应用系统都是灾难啊。

好吧,我承认,这才是我想说的重点。


推荐阅读
  • 本文详细介绍了Socket在Linux内核中的实现机制,包括基本的Socket结构、协议操作集以及不同协议下的具体实现。通过这些内容,读者可以更好地理解Socket的工作原理。 ... [详细]
  • 面对众多的数据分析工具,如何选择最适合自己的那一个?对于初学者而言,了解并掌握几种核心工具是快速入门的关键。本文将从数据处理的不同阶段出发,推荐三种广泛使用的数据分析工具。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 数据输入验证与控件绑定方法
    本文提供了多种数据输入验证函数及控件绑定方法的实现代码,包括电话号码、数字、传真、邮政编码、电子邮件和网址的验证,以及报表绑定和自动编号等功能。 ... [详细]
  • 美团安全响应中心推出全新配送业务测试活动,带来双重福利,邀您共同参与! ... [详细]
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • Hibernate全自动全映射ORM框架,旨在消除sql,是一个持久层的ORM框架1)、基础概念DAO(DataAccessorOb ... [详细]
  • 七大策略降低云上MySQL成本
    在全球经济放缓和通胀压力下,降低云环境中MySQL数据库的运行成本成为企业关注的重点。本文提供了一系列实用技巧,旨在帮助企业有效控制成本,同时保持高效运作。 ... [详细]
  • 在Android应用开发过程中,开发者经常遇到诸如CPU使用率过高、内存泄漏等问题。本文将介绍几种常用的命令及其应用场景,帮助开发者有效定位并解决问题。 ... [详细]
  • 解决ADODB连接Access时出现80004005错误的方法
    本文详细介绍了如何解决在使用ADODB连接Access数据库时遇到的80004005错误,包括错误原因分析和具体的解决步骤。 ... [详细]
  • 过去我习惯使用百度空间来记录个人的生活琐事,但随着需求的增长,我发现它的功能略显不足,特别是在代码分享和图片管理方面存在诸多不便。因此,我决定寻找一个更适合技术分享的平台,最终选择了博客园。 ... [详细]
  • ASP.NET 进度条实现详解
    本文介绍了如何在ASP.NET中使用HTML和JavaScript创建一个动态更新的进度条,并通过Default.aspx页面进行展示。 ... [详细]
  • 本文探讨了如何在 Spring MVC 框架下,通过自定义注解和拦截器机制来实现细粒度的权限管理功能。 ... [详细]
  • 本文详细介绍了如何在Oracle数据库中使用SQL进行分页查询,通过嵌套查询和ROWNUM函数的应用,实现数据的高效分页展示。 ... [详细]
  • hlg_oj_1116_选美大赛这题是最长子序列,然后再求出路径就可以了。开始写的比较乱,用数组什么的,后来用了指针就好办了。现在把代码贴 ... [详细]
author-avatar
CC小乖2502924425_929
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有