DataGuard

Failover:
alter database set standby database to maximize availability;
1.主从数据库都要使用spfile
show parameter spfile

2.主从数据库都要指定local_listener参数
lsnrctl status
alter system set local_listener='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.25.0.11)(PORT=1521)))';

lsnrctl status
alter system set local_listener='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.25.0.10)(PORT=1521)))';

3.主从数据库都要打开闪回数据库功能
select flashback_on from v$database;
shutdown immediate
startup mount
alter database flashback on;
alter database open;

4.主从数据库都要启用broker
alter system set dg_broker_start=true;

主从数据库都要配置连接自身和远程的服务命名!!!!!!!!!
aux1srv =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.0.11)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = aux1)
)
)

db01srv =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.0.10)(PORT = 7788))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = db01)
)
)

*主从节点的tnsnames.ora内容完全相同!!!

5.在从库启动broker连接主库
dgmgrl
DGMGRL> connect sys/oracle@aux1srv

6.创建中介配置
DGMGRL> create configuration 'testdg' as primary database is 'aux1' connect identifier is aux1srv;

7.在中介配置中添加从库
DGMGRL> add database 'db01' as connect identifier is db01srv maintained as physical;

8.查看broker配置
DGMGRL> show configuration verbose;

9.查看主从数据库配置
DGMGRL> show database verbose aux1;
DGMGRL> show database verbose db01;

10.启用broker配置
DGMGRL> enable configuration;

11.修改快速故障转移延迟时间
DGMGRL> edit configuration set property FastStartFailoverThreshold=10;

12.启动快速故障转移
DGMGRL> enable fast_start failover;

13.在从库启动监视器
dgmgrl
DGMGRL> connect sys/uplooking@aux1srv
DGMGRL> start observer;

14.在新的broker窗口查看broker配置
dgmgrl
DGMGRL> connect sys/uplooking@aux1srv
DGMGRL> show configuration verbose;

15.主库abort,到从库节点的broker窗口看切换状态

SYS> select STANDBY_BECAME_PRIMARY_SCN from v$database;

STANDBY_BECAME_PRIMARY_SCN
--------------------------
1386443

FLASHBACK DATABASE TO SCN 1386443;
alter database convert to physical standby;

SQL> alter system set log_archive_dest_state_2='enable';