Failovers:
FAILOVER切换一般是PRIMARY数据库发生故障后的切换,这种情况是STANDBY数据库发挥其作用的情况。这种切换发生后,可能会造成数据的丢失。而且这个过程不是可逆的,DATA GUARD环境会被破坏。由于PRIMARY数据库已经无法启动,所以FAILOVER切换所需的条件并不多,只要检查STANDBY是否运行在最大保护模式下,如果是的话,需要将其置为最大性能模式,否则切换到PRIMARY角色也无法启动。
FailOver后,主库会做一次resetlogs,整个DG环境也就破坏了.
1.查看是否有日志GAP,没有应用的日志:
SQL> select unique thread#, max(sequence#) over(partition by thread#) last from v$archived_log;
SQL> select thread#, low_sequence#, high_sequence# from v$archive_gap;
如果有,则拷贝过来并且注册
SQL> alter database register physical logfile '拷贝过来归档日志路径';
重复查看直到没有应用的日志:
2.然后停止应用归档:
SQL> alter database recover managed standby database cancel;
Database altered.
3.下面将STANDBY数据库切换为PRIMARY数据库:
SQL> alter database recover managed standby database finish;
Database altered.
SQL> select database_role from v$database;
DATABASE_ROLE
----------------
PHYSICAL STANDBY
SQL> alter database commit to switchover to primary;
Database altered.
SQL> alter database open;
Database altered.
检查数据库是否已经切换成功:
SQL> select database_role from v$database;
DATABASE_ROLE
----------------
PRIMARY
4.修改主库,暂停日志传送
通过设置 defer 参数来暂停主库对备库的日志传输
SQL> alter system set log_archive_dest_state_2 = 'defer' scope=both;