dataguard之角色转换

查看当前数据库的角色,可以看v$database视图的database_role列。switchover不会丢数据,failover,如果主库不是在最大包含模式或是最高可用性模式,一些数据可能会丢失。

为角色转换做准备

1确认初始化参数设置正确

2验证备库在archivelog模式

3确保备库上的临时文件盒主库上的临时文件匹配

4确保在rac配置中只有1个实例启动,在角色转换完成后,在启动别的实例

为角色转换选择一个目标数据库,dg提供了一个v$dataguard_stats视图,这个视图可以评估每个备库的可用性,角色转换需要的时间。例如:

SQL> COLUMN NAME FORMAT A18
SQL> COLUMN VALUE FORMAT A16
SQL> COLUMN UNIT FORMAT A10
SQL> COLUMN TIME_COMPUTED FORMAT A24
SQL> SELECT * FROM V$DATAGUARD_STATS;
NAME               VALUE            UNIT       TIME_COMPUTED
------------------ ---------------- ---------- ------------------------
apply finish time  +00 00:00:02.4   day(2) to  15-MAY-2005 10:32:49
       second(1)
       interval
apply lag          +00 0:00:04      day(2) to  15-MAY-2005 10:32:49
       second(0)
       interval
transport lag      +00 00:00:00     day(2) to  15-MAY-2005 10:32:49
       second(0)
       interval

这个例子中,没有传输的延迟,日志应用没有应用过去4秒产生的日志,需要花费2.4秒来完成日志的应用。如果在配置中有物理备库与逻辑备库,那么考虑选择一个物理备库来作为目标备库,在转换完成后,对新的主库来说,配置中所有的数据库作为备库都可用。如果是转换到一个逻辑备库上,那么之前的物理备库都不可用了,你需要用新的主库的备份来重新创建物理备库,才使它们能重新可用。

switchover

一个switchover有2个步骤,第一个步骤,主库转成备库,第二部,备库转成主库。下面是一个示例:

这个是转换过程中,此时是有2个备库的,没有主库。

这时候完成了转换

failovers

如果备库当前运行在最大包含模式,首先将备库转变成最大性能模式

ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;

在物理备库上的转换

1确认可以转换

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO STANDBY
1 row selected
2在主库上初始化switchover,在主库上执行下面的语句啦转换成物理备库

 ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;执行该语句后,主库转换成备库,在转换之前当前控制文件备份到当前会话的trace文件中。这样可以重建一个当前控制文件。

3关闭及重启之前的主服务,启动到mount状态

SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;

在这个时间点,2个数据库都是备库

4在v$database 视图中验证转换的状态

在你转换主库到物理备库的角色后,转换的通知被备库接受到,你应该验证转换通知已经被备库处理了,查看下面的语句。

SELECT SWITCHOVER_STATUS FROM V$DATABASE;

5转换物理备库到主库角色

当备库在mount状态或是在只读状态打开状态,你可以转换物理备库到主库角色。在想要转换的物理备库上执行下面的语句:

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

6完成备库到主库的转换过程

1如果物理备库还没有打开,执行下面的语句来打开新的主库

alter database open;

2如果物理备库咋最后一次开始已经打开过了,你必须先关闭,在打开

SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

7在物理备库上重启日志应用服务

对新的物理备库和别的物理备库与逻辑备库,如果日志应用服务之前没有被配置好,那么使用命令来重新启动日志应用服务。

8开始传输日志到备库,在新主库上执行下面的语句。

SQL> ALTER SYSTEM SWITCH LOGFILE;

 

逻辑库上的角色转换

1在主库上验证是否可以switchover

SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO STANDBY
1 row selected

2准备当前的主库来switchover

在主库上执行下面的语句

ALTER DATABASE PREPARE TO SWITCHOVER TO LOGICAL STANDBY;

这个语句通知当前主库很快要变成了逻辑备库,开始在新主库接受redo数据,这步准备接收logminer多版本的数据字典在当前逻辑备库的redo流中。

如果这个操作成功了,在v$database.switchover_status列中显示PREPARING SWITCHOVER 这个值

3为了switchover准备目标逻辑备库

在目标逻辑备库中执行下面的语句来构建logminer 多版本数据字典。

ALTER DATABASE PREPARE TO SWITCHOVER TO PRIMARY;

这个语句是逻辑备库开始传输日志服务,开始传输它的redo数据到当前的主库和别的备库上,但是这些站点只是接受redo数据,但是不会去应用它。

4确认当前主库准备好了未来主库的redo流

确认主库接受到了logminer多版本数据字典,在主库上查询v$database的switchover_status视图,没有接受到数据字典,转换就不能进行,当返回to logical standby值,你可以做第5步。

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO LOGICAL STANDBY
1 row selected
5转换主库到逻辑备库

ALTER DATABASE COMMIT TO SWITCHOVER TO LOGICAL STANDBY;
6确认逻辑被库准备转换成主库

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO PRIMARY
1 row selected
7换成逻辑备库到主库

 ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
8在新逻辑备库上执行sql apply

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值