Dataguard物理Standby Switchover 角色转换

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

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博客 ” ,链接:http://blog.itpub.net/29812844/viewspace-1988751/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29812844/viewspace-1988751/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值