1 switch over没有数据丢失。dataguard继续工作。
2 fail over 如果在fail发生前,dataguard不是工作在max protection mode或者max available mode.数据丢失将可能发生。如果在主库和从库上都使用了flashback,那么在造成fail的原因被解决的时候,失败的原数据库将可能被恢复成新的standby数据库。
一 准备工作
1确认配置正确。各项参数设置正确,并且配置了合适的standby log file;
2确认将成为primary的standby db运行在archive log 模式。
3取消所有的redo apply或者sql apply 的delay,
sql>alter database archive managed standby database nodelay;
4如果standby db是rac,那么只能运行一个实例。其他的实例必须全部shutdown
5 确认备库的临时文件与主库的相匹配。
二为 role transition选择一个备用的数据库。
如果有配置了多个standby db,那么选择role transiton的目标standby db需要考虑很多因素。如下:
1standby database 的位置
2standby database的能力 (cpu 个数,i/o能力等等)
3执行role transition所需要的时间。与redo apply应用日志的状态相关。
v$dataguard_stats视图提供了standby数据传播期间standby database的可行性,和如果所有的redo data已经应用后role transaction所需要的时间。例如:
SQL> COLUMN NAME FORMAT A18
SQL> COLUMN VALUE FORMAT A16
SQL> COLUMN TIME_COMPUTED FORMAT A24
SQL> SELECT * FROM V$DATAGUARD_STATS;
NAME VALUE TIME_COMPUTED
------------------ ---------------- ------------------------
apply finish time +00 00:00:02.4 15-MAY-2005 10:32:49
second(1)
interval
apply lag +00 0:00:04 15-MAY-2005 10:32:49
second(0)
interval
transport lag +00 00:00:00 15-MAY-2005 10:32:49
second(0)
interval
这说明在这个standby database中,没有传输滞后。apply延迟为4秒,4秒内产生的redo log还没有得到执行。apply 会在2.4秒内完成日志应用。.统计值计算的时间为time_computed行。如果dataguard配置中有物理的standby db和逻辑的standby db.那么首选物理的standby db,因为在switch over 或者fail over的后,在dataguard中所有的数据库都可以为新的primary db为standby db.无论对logical standby db的fail over 或者switch over 都会造成原来的standby db变成正常的primary db,需要通过备份创建新的standby db.
三switch over
switch over通常为计划的中断减少停机时间。如计划对数据库软件的升级或者打补丁。
一个switch over有两个阶段。第一阶段,将主库改成standby db,第二阶段,将standby db改成主库。
其他的考虑;1如果是physical standby db, standby db 必须是mount,而primary db 必须是open 2 如果是standby db,那么主库必须是open,从库也必须是open,并且sql apply是打开的。3如果primary db是rac,那么在切换前必须保证只有一个实例运行。
在db role transmition期间。产生一个db_role_change事件,可以编写一个与该事件相关的trigger来在switch over后管理任务。db_role_change事件不管新的role是什么,只要是经过了switch over后数据库第一次open就发生。可以通过查询v$database视图的database_role字段来获得当前db的状态。
如下是与物理的physical standby switch over的步骤。
主库上
A sql> select switchover_status from v$database;
如果结果是to standby就ok ,如果是session active,那么需要留意以下几个参数
job_queue_processes,aq_tm_processes将这几个参数置为零。>emctl stop agents;
Bsql>alter database commit to switchover to physical standby;
Csql>shutdown immediate;
D sql>startup mount
E sql>alter database recover managed standby database disconnect from session;
从库上
Fsql>alter database commit to switchover to PRIMARY
G 如果从库未打开,那么只需要alte database open就可以了
如果从库正以read only 模式open,那么需要先shutdown,然后再open,
H必要的话,重新启动redo aplly service;
对于没有role transmit的其他standby db,不需要做任何变更,他们将继续正常工作。
四 fail over
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10522540/viewspace-196028/ ,如需转载,请注明出处,否则将追究法律责任。