继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Data Guard保护模式解析及演示

PIPIONE
关注TA
已关注
手记 1071
粉丝 147
获赞 702


    在一些场合,一些业务是不能容忍丢失数据的。而在另外的场合,数据库的可用性可能比数据的丢失更加重要。一些应用要求数据库的性能最大化,并且可以容忍少许数据的丢失。以下是三种不同数据保护模式的描述总结。

以下两张图三种模式的特点,下面将逐一进行分析:

wKiom1LT1Pmwy9DYAAGCLd7SykM307.jpg

wKioL1LT1OzjMuLkAADkV-6UrWM349.jpg

 

1、最大保护模式(Maximum protection)

这个保护模式确保在主库发生故障的时候,没有数据的丢失。为了提供这种级别的保护,重做日志涉及的事务必须写入本地online redo log和standby database的standby redo log之后(假设有多个备库,至少写入其中的一个即可),才可以提交事务。为了保证数据的不丢失,如果发生了一个故障阻止了redo流可以写入至少一个事务一致的standby database,主数据库将关闭。

由以上即可知,要配置最大保护模式,我们需要在备库建立standby redo log,使用LGWR写日志,SYNC同步日志,AFFIRM。

参数配置实例:

alter system set log_archive_dest_2='SERVICE=db_phystdby LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY AFFIRM ';

2、最高可用性(Maximum availability)

这种保护模式在不影响主库的可用性情况下,提供最高级别的数据保护。与最大保护模式一样,重做日志涉及的事务必须写入本地online redo log和standby database的standby redo log之后(假设有多个备库,至少写入其中的一个即可),才可以提交事务。不过与最大保护模式不同的是,如果发生故障阻止redo流写入远程的standby redo log中,主库不会关闭。取而代之的是,主库运转在最高性能模式下,直到故障消除以及redo log 文件的gaps(裂缝)解决掉。当所有的gaps解决掉,主库自动恢复运行至最高可用模式。

这种模式保证在主库故障的时候不会发生数据丢失,但是仅仅在第二个故障没有阻止完整的redo data从主库发送至最少一个备库中。

采用这种模式,同最大保护模式一样,需要在备库建立standby redo log,使用LGWR写日志,SYNC同步日志,AFFIRM。

参数配置实例:

alter system set log_archive_dest_2='SERVICE=db_phystdby LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY AFFIRM ';

3、最高性能(Maximum performance)

最高性能模式是默认的保护模式,这种模式在不影响主库性能的前提下提供最高级别的数据保护。这种模式事务提交是不受限制的。主库的redo data流同样要求写入至少一个standby database,但是redo 流与创建redo data的事务相对而言是不同步的。

当网络带宽足够使用时,这种模式提供了类似于最高可用模式的数据库保护,但是对于主库的性能影响最下。

从以上分析即可知,这种模式下,我们可以使用ARCH或LGWR。

当使用ARCH时,则需要SYNC(同步)。

当使用LGWR时,可以是SYNC也可以是ASYNC。

Standby redo这个可有可无。

示例配置:

alter system set log_archive_dest_2 = 'SERVICE=db_phystdby LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY';

4、切换演示

切换为最大保护模式

a、现在备库上做操作,添加standby logfile

[oracle@dg2 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jan 5 01:00:35 2014

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

SQL> alter database add standby logfile group 4 ('/u01/oracle/oradata/ORCLDB/stdby_redo04.log') size 50M;

Database altered.

SQL> alter database add standby logfile group 5 ('/u01/oracle/oradata/ORCLDB/stdby_redo05.log') size 50M;

Database altered.

SQL> alter database add standby logfile group 6 ('/u01/oracle/oradata/ORCLDB/stdby_redo06.log') size 50M;

Database altered.

b、在主库上执行以下的操作

 

[oracle@dg1 bdump]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jan 5 01:10:32 2014

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

SQL> alter database set standby database to maximize PROTECTION;

alter database set standby database to maximize PROTECTION

*

ERROR at line 1:

ORA-01126: database must be mounted in this instance and not open in any instance

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount

ORACLE instance started.

Total System Global Area 390070272 bytes

Fixed Size 2021024 bytes

Variable Size 142608736 bytes

Database Buffers 243269632 bytes

Redo Buffers 2170880 bytes

Database mounted.

SQL> alter database set standby database to maximize PROTECTION;

Database altered.

SQL> select PROTECTION_MODE,OPEN_MODE,DB_UNIQUE_NAME,DATABASE_ROLE,SWITCHOVER_STATUS from v$database;

PROTECTION_MODE OPEN_MODE DB_UNIQUE_NAME DATABASE_ROLE SWITCHOVER_STATUS

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

MAXIMUM PROTECTION MOUNTED WENDING PRIMARY TO STANDBY

分别将FLASHBACK_ON开启。

SQL> select FLASHBACK_ON from v$database;

FLASHBACK_ON

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

NO

SQL> alter database flashback on;

Database altered.

主库上操作

SQL> alter system set log_archive_dest_2 = 'SERVICE=db_phystdby LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY AFFIRM ';

System altered.

SQL> alter database open;

Database altered.

SQL> select PROTECTION_MODE,OPEN_MODE,DB_UNIQUE_NAME,DATABASE_ROLE,SWITCHOVER_STATUS from v$database;

PROTECTION_MODE OPEN_MODE DB_UNIQUE_NAME DATABASE_ROLE SWITCHOVER_STATUS

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

MAXIMUM PROTECTION MOUNTED PHYSTDBY PHYSICAL STANDBY SESSIONS ACTIVE

 

©著作权归作者所有:来自51CTO博客作者371690509的原创作品,如需转载,请注明出处,否则将追究法律责任

protectiondg保护模式Data Guard


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP