风哥教程

培训 . 交流 . 分享
Make progress together!

在Oracle DataGuard环境中使用Broker-角色转换Switchover

[复制链接]
内容发布:风哥| 发布时间:2013-12-24 14:15:23
一、环境介绍

Data Guard 环境:

Primary数据库:oracle 10.2.0.5.0
操作系统: redhat 4.4
主机名:source
IP地址:192.168.10.101
数据库SIDsource
DB_UNIQUE_NAMEsource_pr

Standby数据库:oracle 10.2.0.5.0
操作系统: redhat 4.4
主机名:target
IP地址:192.168.10.102
数据库SIDsource
DB_UNIQUE_NAMEsource_st


二、dataguard启停


注意Data Guard 启动顺序:

启动顺序:先standby ,primary;
关闭顺序:先primary standby;

在备库将实例启动到mount 状态:
SQL>startup nomount;
SQL>alter database mount standby database;
SQL>alter database recover managed standby database disconnect from session;
如果要取消恢复:alter database recover managed standby database cancel;

在备库启动监听:
$lsnrctl start

在主库启动实例:
SQL> startup;

在主库启动监听:
$lsnrctl start

在主库验证归档目录是否有效:

SQL> select dest_name,status,error from v$archive_dest;

如果有错误,要排查原因。

SQL> alter system switch logfile;
SQL> select max(sequence#) from v$archived_log;

查看数据库模式
SQL>select dest_name,status,database_mode,recovery_mode,protection_mode from v$archive_dest_status;
SQL>select status,database_mode from v$archive_dest_status;
SQL>select OPEN_MODE, PROTECTION_MODE, ACTIVATION#,DATABASE_ROLE, SWITCHOVER# ,SWITCHOVER_STATUS from v$database;


三、角色转换的类型

数据库之间的转换有switchoverfailover两种方式。

switchover
switchoverprimary数据库和它的一个standby数据库之间角色的切换,通常是有计划的数据库转换,保证不会有数据丢失。
failover
failover发生在primary数据库失败之后,它的一个standby接替它成为primary数据库。failover通常发生primary数据库不可恢复的情况下,根据数据库保护模式的不一样failover可能会有数据丢失。

2、转换目标的选择

对于switchover操作来说,遵循以下的步骤:
首先选择未应用的redostandby,这个可以通过SHOW DATABASE db_unique_name RecvQEntries看到。
对于物理和逻辑standby同时存在时,优先选择redo apply queue最小的物理standby,因为物理standby在转换之后所有的standby都能正常工作,而转换到逻辑standby之后同一组里面的物理standby将要重建。

failover操作来说,遵循以下的步骤:
为降低数据丢失的数量,首先要选择应用日志最多的standby
对于物理和逻辑standby同时存在时,优先选择物理standby,因为物理standby在转换之后所有的standby都能正常工作,而转换到逻辑standby之后同一组里面的standby将要重建。另外一个如果逻辑standby使用DBMS_LOGSTDBY.SKIP忽略了一部分数据库话也会造成数据丢失。


3Data Guard转换的三个层次

第一个层次是在没有配置broker的环境中,在这种环境下,如果要进行数据库的角色却换的话通常需要3个步骤:

首先是检查data guard环境中的数据库是否满足转换的条件。
然后登陆到primary数据库运行sql转换角色,再重启primary数据库使其变成standby
再登录到要转换的standby数据库上,运行sql转换角色,再重新启动standby以变成新的primary

第二个层次是配置了broker但是没有配置FSF(fast-start failover)的环境中,在这里做switchoverfailover都只需要一个简单的命令,剩下的重启primarystandby的操作就交给broker去做了。

第三个层次是配置了FSF的机器,这时候数据库的状态由FSF Observer监控着,一旦primary数据库出现了问题需要failover操作,FSF会自动进行数据库的转换,根本就不需要人来参与了。


broker管理下的switchover的过程:

1)检查primarystandby是否online,是否有错误,如果有错误则switchover失败。
2)如果primaryRAC,则关掉RAC中所有不参与switchoverinstance
3)将primary数据库转换成standby数据库,然后将目标standby数据库转换成新的primary数据库。
4)更新broker控制文件记录转换之后的数据库角色信息。
5)如果新的standby是物理standby的话将会重启之,然后开始redo log应用。RAC环境中将会重启那些被关闭的instance
6)如果是物理standby环境的话重启新的primary数据库然后开始rodo log的传送到其他的standby中。
最后broker会确认转换之后的新primarystandby都工作正常,redo log传送和应用都正常。对于那些没有参与switchoverstandby将会保持不变。

1、切换主库到备库
DGMGRL> switchover to source_st;   --这个source_st是我的环境中的备库的名字

Performing switchover NOW, please wait...
Operation requires shutdown of instance "source" on database "source_pr"
Shutting down instance "source"...
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.
Operation requires shutdown of instance "source" on database "source_st"
Shutting down instance "source"...
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.
Operation requires startup of instance "source" on database "source_pr"
Starting instance "source"...
ORACLE instance started.
Database mounted.
Operation requires startup of instance "source" on database "source_st"
Starting instance "source"...
ORACLE instance started.
Database mounted.
Switchover succeeded, new primary is "source_st"

2、切换后的观察与日志检查

略。

3、切回主库到备库

DGMGRL> switchover to source_pr;   --这个source_pr是我的环境中的主库的名字

Performing switchover NOW, please wait...
Operation requires shutdown of instance "source" on database "source_st"
Shutting down instance "source"...
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.
Operation requires shutdown of instance "source" on database "source_pr"
Shutting down instance "source"...
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.
Operation requires startup of instance "source" on database "source_st"
Starting instance "source"...
ORACLE instance started.
Database mounted.
Operation requires startup of instance "source" on database "source_pr"
Starting instance "source"...
ORACLE instance started.
Database mounted.
Switchover succeeded, new primary is "source_pr"


4、切换后的观察与日志检查

略。



上一篇:在Oracle DataGuard环境中使用Broker-自动Fast Start Failove
下一篇:oracle dataguard主备库切换后出现FAL[server]: Fail to queue the whole FAL ...
专业提供Oracle/MySQL/NoSQL/Linux数据库培训与技术支持服务,QQ号:113257174
关注风哥教程微信公众号itpux_com  ,了解本站最新技术资料的分享.

欢迎加QQ群,提供超多高质量Oracle/Unix/Linux技术文档与视频教程的下载。

Oracle/MySQL/Linux群4-5:189070296  150201289  
Oracle/MySQL/Linux群6-8:244609803   522261684   522651731
备注:请勿重复加群,另请注明 from itpux
回复

使用道具 举报

1框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门文章教程

  • Oracle19c数据库发布与下载地址
  • 风哥Oracle数据库巡检工具V1.0(附2.6网页
  • Oracle Database 12c 数据库100个新特性与
  • Oracle 12cR2 九大新功能全面曝光_详解云数
  • 实战PHP与MySQL权威指南PDF电子书下载
  • 大数据技术与应用入门培训教程(电子版下载
快速回复 返回顶部 返回列表