DG主数据库有三种保护模式
最大保护Maximum Protection
此保护模式可确保在主数据库发生故障时不会发生数据丢失。为了提供这种级别的保护,必须在事务提交之前将恢复事务所需的重做数据写入至少一个同步备用数据库上的联机重做日志和备用重做日志中。为了确保不会发生数据丢失,如果主数据库无法将其重做流写入至少一个同步备用数据库,则它将关闭而不是继续处理事务。
一旦Data Guard将重做数据写入备用重做日志文件中的持久性存储中,主数据库上的事务即被视为受保护。完成此操作后,将迅速将确认信息发回主数据库,以便它可以继续进行下一个事务。这样可以最大程度地减少同步传输对主数据库吞吐量和响应时间的影响。为了充分利用备用数据库上完整的Data Guard验证,请确保以实时应用模式运行,以便将重做更改尽快地接收到备用数据库。Data Guard会发出检测到的任何损坏的信号,以便可以立即采取纠正措施。
因为此数据保护模式将数据保护的优先级设置为高于主数据库的可用性,所以Oracle建议至少使用两个备用数据库来保护以最大保护模式运行的主数据库,以防止单个备用数据库故障导致主数据库关闭。
最高性能Maximum Performance
这种保护模式提供了可能的最高级别的数据保护,而不会影响主数据库的性能。这是通过允许事务在将这些事务生成的所有重做数据写入在线日志后立即提交来实现的。重做数据也被写入一个或多个备用数据库,但是这相对于事务承诺是异步完成的,因此主数据库性能不受写入重做数据到备用数据库的延迟的影响。
与最大可用性模式相比,此保护模式提供的数据保护略少,并且对主数据库性能的影响最小。
这是默认的保护模式。
最大可用性Maximum Availability
这种保护模式可提供最高级别的数据保护,而不会影响主数据库的可用性。在至少一个同步的备用数据库上,将恢复这些事务所需的所有重做数据写入在线重做日志和备用重做日志之前,事务不会提交。如果主数据库无法将其重做流写入至少一个同步的备用数据库,则它将在最大性能模式下运行以保留主数据库的可用性,直到它再次能够将其重做流写入同步的备用数据库。
此模式确保在主数据库发生故障时不会发生任何数据丢失,而仅在第二次故障不能阻止将完整的重做数据集从主数据库发送到至少一个备用数据库时才会发生数据丢失。
MAXIMIZE AVAILABILITY最高可用性
首先查看主库当前保护模式
select protection_mode from v$database;
alter database recover managed standby database cancel;
show parameter log_archive_dest_2;
修改初始化参数
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2=‘SERVICE=shanghai SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=shanghai’ scope=both;
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY;
alter database recover managed standby database using current logfile disconnect from session;
select protection_mode from v$database;
MAXIMIZE PROTECTION
alter database recover managed standby database cancel;
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PROTECTION;
alter database recover managed standby database using current logfile disconnect from session;
select protection_mode from v$database;
MAXIMUM PERFORMANCE最大性能模式
alter database recover managed standby database cancel;
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2=‘SERVICE=shanghai ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=shanghai’ scope=both;
alter database recover managed standby database using current logfile disconnect from session;
select protection_mode from v$database;
最大保护模式(Maximum Protection)
select protection_mode from v$database;
alter database recover managed standby database cancel;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2=‘SERVICE=shanghai SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=shanghai’ scope=both;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PROTECTION;
ALTER DATABASE OPEN;
alter database recover managed standby database using current logfile disconnect from session;
select protection_mode from v$database;