在有些场景下我们需要激活standby为primary,使用激活的standby完成一些的需求。

如:

- 拿激活后的standby做应用测试。

- primary宕掉,极端的情况下不得不采用standby替代primary.

激活standby database为primary角色后,数据库可以打开至read write模式,DG架构将不可用,此时需要清除主备库相关DG参数。

1.完成日志传输

SQL> recover managed standby database finish force;

finish会在最后传输的redo log 打上End-Of-Redo的标记,标记redo data传输完成,force用来强制停止RFS进程而不用等待tcpip网络连接超时。

2.激活物理standby

SQL> alter database activate physical standby database;

3.查看数据库状态

SQL> select name,database_role,protection_mode,open_mode from v$database;

NAME      DATABASE_ROLE    PROTECTION_MODE      OPEN_MODE

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

STEPHENPRIMARY          MAXIMUM PERFORMANCE  MOUNTED

如果保护模式不为MAXIMUM PERFORMANCE,则修改为MAXIMUM PERFORMANCE.

SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;

4.打开数据库

SQL> alter database open;

5.清除DG相关参数

log_archive_config

log_archive_dest_n

log_file_name_convert

db_file_name_convert

standby_file_management

fal_server

6.查看数据库状态

SQL> select name,database_role,protection_mode,open_mode from v$database;

NAMEDATABASE_ROLEPROTECTION_MODE     OPEN_MODE

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

STEPHENPRIMARY          MAXIMUM PERFORMANCE READ WRITE