ITPub博客

首页 > 数据库 > Oracle > Dataguard物理Standby Switchover 角色转换

Dataguard物理Standby Switchover 角色转换

原创 Oracle 作者:梓沐 时间:2016-02-15 08:55:45 0 删除 编辑

无损转换,通常是用户手动触发或者有计划的让其自动触发,比如硬件升级啦,软件升级啦之类的。通常它给你带来的工作量非常小并且都是可预计的。其执行分两个阶段,第一步,primary数据库转换为standby角色,第二步,standby数据库(之一)转换为primary角色,primary和standby只是简单的角色互换,这也印证了我们前面关于角色转换是primary/standby互动的猜测。

--primary数据库操作

1.检查是否支持switchover操作

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

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

TO STANDBY

2.启动switchover,将primary转换为standby的角色

SQL> alter database commit to switchover to physical standby;

Database altered.

语句执行完毕后,primary数据库将会转换为standby数据库,并自动备份控制文件到trace。

--standby数据库操作

1.如果备库启动先关闭数据库,并重启到mount阶段

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount

ORACLE instance started.

2.检查备库是否支持switchover操作

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

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

TO PRIMARY

3.执行转换standby到primary角色语句

SQL> alter database commit to switchover to primary;

alter database commit to switchover to primary

*

ERROR at line 1:

ORA-00344: unable to re-create online log '/u01/oracle/oradata/orcl/redo01.log'

ORA-27040: file create error, unable to create file

Linux-x86_64 Error: 2: No such file or directory

Additional information: 1

--这里报了一个错,是因为备库中在/u01/oracle/oradata下没有orcl的执行目录和权限,创建orcl目录并赋予对应权限后:

SQL> alter database commit to switchover to primary;

Database altered.

4.打开数据库

SQL> alter database open;

Database altered.

5.打开原primary数据库

SQL> alter database open;

Database altered.

6.将原primary数据库打开恢复模式

SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

--验证结果

新primary数据库

SQL> show parameter db_unique

NAME                                 TYPE        VALUE

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

db_unique_name                       string      dg

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

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

            30

SQL> alter system switch logfile;

System altered.

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

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

            31

新的standby数据库

SQL>  show parameter db_unique

NAME                                 TYPE        VALUE

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

db_unique_name                       string      orcl

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

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

            30

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

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

            31

转换成功

```

```

2.备库在转换为主库时状态为:NOT ALLOWED--可能需要恢复或者退出恢复模式。

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

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

NOT ALLOWED

SQL> alter database commit to switchover to primary;

alter database commit to switchover to primary

*

ERROR at line 1:

ORA-16139: media recovery required

或者如下:--RECOVERY NEEDED

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

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

RECOVERY NEEDED

###############

SQL> alter database recover managed standby database disconnect from session;

Database altered.

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

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

TO PRIMARY

SQL> alter database commit to switchover to primary;

Database altered.


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29812844/viewspace-1988751/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Linux时间同步
请登录后发表评论 登录
全部评论
擅长PLS/QL开发,SQL调优和改写,数据库设计

注册时间:2014-08-18

  • 博文量
    161
  • 访问量
    1204431