您的位置:首页 > 其它

DataGuard保护模式介绍及切换示例

2012-06-07 15:11 405 查看
三大保护模式

最大保护(Maximumprotection):

这种模式能够确保绝无数据丢失。要实现这一步当然是有代价的,它要求所有的事务在提交前其redo不仅被写入到本地的onlineredolog,还要同时提交到standby数据库的standbyredolog,并确认redo数据至少在一个standby数据库可用(如果有多个的话),然后才会在primary数据库上提交。如果出现了什么故障导致standby数据库不可用的话,primary数据库会被shutdown。

最高性能(Maximumperformance):

这种模式提供在不影响primary数据库性能前提下最高级别的数据保护策略。事务可以随时提交,当前primary数据库的redo数据也需要至少写入一个standby数据库,不过这种写入可以是不同步的。如果网络条件理想的话,这种模式能够提供类似最高可用性的数据保护而仅对primary数据库有轻微的性能影响。

最高可用性(Maximumavailability):

这种模式提供在不影响primary数据库可用前提下最高级别的数据保护策略。其实现方式与最大保护模式类似,也是要求所有事务在提交前必须保障redo数据至少在一个standby数据库可用,不过与之不同的是,如果出现故障导入无法同时写入standby数据库redolog,primary数据库并不会shutdown,而是自动转为最高性能模式,等standby数据库恢复正常之后,它又会再自动转换成最高可用性模式。

最大保护及最高可用性需要至少一个standby数据库redo数据被同步写入。三种模式都需要指定LOG_ARCHIVE_DEST_n初始化参数。

最高性能->最高可用保护模式切换

1、查看当前数据库保护模式 ---主库(sms01)

SQL> select protection_mode,protection_level from v$database;

PROTECTION_MODE      PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE

2、修改初始化参数 ---主库(sms01)

SQL> alter system set log_archive_dest_2='SERVICE=sms02
2  OPTIONAL LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
3  DB_UNIQUE_NAME=sms02';

System altered.

3、设置新的保护模式-最高可用,并重启主库 ---主库(sms01)

SQL> alter database set standby database to maximize availability;

Database altered.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup

ORACLE instance started.

Total System Global Area 3290345472 bytes
Fixed Size          2217832 bytes
Variable Size        1795164312 bytes
Database Buffers     1476395008 bytes
Redo Buffers           16568320 bytes
Database mounted.
Database opened.

4、查看新的保护模式是否设置成功 ---主库(sms01)

SQL> SQL> select protection_mode,protection_level from v$database;

PROTECTION_MODE      PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY

5、修改备库的初始化参数 ---备库(sms02)

SQL> alter system set log_archive_dest_2='SERVICE=sms01
2  OPTIONAL LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
3  DB_UNIQUE_NAME=sms01';

System altered.

6、查看备库的保护模式 ---备库(sms02)

SQL> select protection_mode,protection_level from v$database;

PROTECTION_MODE      PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY

7、验证”最高可用性“效果

关闭备库 ---备库(sms02)
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

查看备库关闭后主库状态 ---主库(sms01)
SQL> select protection_mode,protection_level from v$database;

PROTECTION_MODE      PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY RESYNCHRONIZATION

重新启动备库 ---备库(sms02)
SQL> startup mount
ORACLE instance started.

Total System Global Area 3290345472 bytes
Fixed Size          2217832 bytes
Variable Size        1795164312 bytes
Database Buffers     1476395008 bytes
Redo Buffers           16568320 bytes
Database mounted.
SQL> alter database open read only;

Database altered.

SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

查看备库恢复后的主库状态 ---主库(sms01)
SQL> select protection_mode,protection_level from v$database;

PROTECTION_MODE      PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY


---END---

备注:

最大保护最高可能用最高性能
RedoLGWRLGWRLGWR或ARCH
网络传输模式SYNCSYNCLGWR进程时SYNC或ASYNC,ARCH进程时SYNC
磁盘写操作AFFIRMAFFIRMAFFIRM或NOAFFIRM
是否需要standby redologsYESYES可没有但推荐有
本文出自 “鼠标爱上键盘” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: