在有些场景下我们需要激活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