测试版-逻辑switchover

1.检查primary数据库是否配置了standby redologs :
SQL> select * from v$standby_log;
no rows selected
对于逻辑standby数据库,standby redologs是必须的,因此我们需要为当前的primary创建几个standby redologs。
2.为当前的primary创建几个standby redologs:
SQL> alter database add standby logfile group 4 ('/oracle/oradata/test/standbyrd01.log') size 20m;
     alter database add standby logfile group 5 ('/oracle/oradata/test/standbyrd02.log') size 20m;
     alter database add standby logfile group 6 ('/oracle/oradata/test/standbyrd03.log') size 20m;
     alter database add standby logfile group 7 ('/oracle/oradata/test/standbyrd04.log') size 20m;
     alter database add standby logfile group 8 ('/oracle/oradata/test/standbyrd05.log') size 20m;
Database altered.
3.检查primary数据库状态
  在当前的primary数据库查询v$database视图中的switchover_status列,查看当前primary数据库状态。
SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
TO STANDBY

说明:如果该查询返回TO STANDBY 或SESSIONS ACTIVE则表示状态正常,可以执行转换操作,如果否的话,就需要你先检查一下当前的dataguard配置。
4.准备转换primary为逻辑standby
  执行下列语句,将primary置为准备转换的状态:
SQL>alter database prepare to switchover to logical standby;
Database altered.

5.查看一下switchover_status的状态
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
PREPARING SWITCHOVER

6.准备转换逻辑standby为primary
SQL>  alter database prepare to switchover to primary;
Database altered.
7.查看一下standby的switchover_status的状态
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
PREPARING SWITCHOVER

8.再次检查primary数据库状态
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO LOGICAL STANDBY

注意:这步虽然不做什么操作,但检查结果却非常重要,它直接关系到switchover转换是否能够成功。逻辑standby执行完prepare命令之后,
      就会生成相应的LogMiner字典数据(就像我们前面创建逻辑standby时,primary会生成LogMiner字典数据一样),只有它正常生成并发
      送至当前的primary,转换操作才能够继续下去。不然当前的primary数据库在转换完之后,可能就失去了从新的primary接收redo数据的能力了。
      因此,如果上述查询的返回结果不是:TO LOGICAL STANDBY的话,你可能就需要取消此次转换,检查原因,然后再重新操作了。
提示:
    取消转换可以通过下列语句:
SQL> alter database prepare to switchover cancel;
需要分别在primary和逻辑standby执行。
9.转换primary为逻辑standby
  执行下列语句:
SQL> alter database commit to switchover to logical standby;
Database altered.
注意:该语句需要等待当前primary所有事务全部结束。同时该语句也会自动拒绝用户发布的新事务或修改需求。为确保该操作尽可能快的执行,
      最好自开始切换操作起就禁止所有用户的操作。
      该命令执行完之后,这个primary就已经成为新的逻辑standby了。不过在新primary执行完转换之前,不要关闭当前这个数据库。
10.再次检查逻辑standby状态
   逻辑standby在接收到前primary的转换消息,并应用完相关的redo数据之后,会自动暂停sql应用,然后查询switchover_status的状态,应该为:TO PRIMARY
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO PRIMARY
11.转换逻辑standby为primary
   最后的工作总会在逻辑standby上操作,通过上列语句,将该逻辑standby转换为新的primary。
SQL>  alter database commit to switchover to primary;
Database altered.
到此switchover切换完成。
12.启动新逻辑standby的sql应用 
SQL> alter database start logical standby apply;
Database altered.
如果想取消sql应用,执行如下命令:
SQL> alter database stop logical standby apply;
Database altered.
假如为standby库创建了standby redologs日志文件,可以通过如下命令应用和取消日志应用:
SQL> alter database start logical standby apply immediate;
SQL> alter database stop logical standby apply immediate;
到此逻辑standby的switchover完成。

你可能感兴趣的:(oracle,sql,工作)