三大保护模式


    最大保护(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)

  1. SQL> select protection_mode,protection_level from v$database
  2.  
  3. PROTECTION_MODE      PROTECTION_LEVEL 
  4. -------------------- -------------------- 
  5. MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE 

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

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

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

  1. SQL> alter database set standby database to maximize availability; 
  2.  
  3. Database altered. 
  4.  
  5. SQL> shutdown immediate 
  6. Database closed. 
  7. Database dismounted. 
  8. ORACLE instance shut down. 
  9. SQL> startup 
  10.  
  11. ORACLE instance started. 
  12.  
  13. Total System Global Area 3290345472 bytes 
  14. Fixed Size          2217832 bytes 
  15. Variable Size        1795164312 bytes 
  16. Database Buffers     1476395008 bytes 
  17. Redo Buffers           16568320 bytes 
  18. Database mounted. 
  19. Database opened. 

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

  1. SQL> SQL> select protection_mode,protection_level from v$database
  2.  
  3. PROTECTION_MODE      PROTECTION_LEVEL 
  4. -------------------- -------------------- 
  5. MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY 

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

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

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

  1. SQL> select protection_mode,protection_level from v$database
  2.  
  3. PROTECTION_MODE      PROTECTION_LEVEL 
  4. -------------------- -------------------- 
  5. MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY 

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

      关闭备库 ---备库(sms02)
  1. SQL> shutdown immediate 
  2. Database closed. 
  3. Database dismounted. 
  4. ORACLE instance shut down. 
      查看备库关闭后主库状态 ---主库(sms01)
  1. SQL> select protection_mode,protection_level from v$database
  2.  
  3. PROTECTION_MODE      PROTECTION_LEVEL 
  4. -------------------- -------------------- 
  5. MAXIMUM AVAILABILITY RESYNCHRONIZATION 
      重新启动备库 ---备库(sms02)
  1. SQL> startup mount 
  2. ORACLE instance started. 
  3.  
  4. Total System Global Area 3290345472 bytes 
  5. Fixed Size          2217832 bytes 
  6. Variable Size        1795164312 bytes 
  7. Database Buffers     1476395008 bytes 
  8. Redo Buffers           16568320 bytes 
  9. Database mounted. 
  10. SQL> alter database open read only
  11.  
  12. Database altered. 
  13.  
  14. SQL> alter database recover managed standby database using current logfile disconnect from session; 
  15.  
  16. Database altered. 
      查看备库恢复后的主库状态 ---主库(sms01)
  1. SQL> select protection_mode,protection_level from v$database
  2.  
  3. PROTECTION_MODE      PROTECTION_LEVEL 
  4. -------------------- -------------------- 
  5. MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY 

 


---END---

 

备注:


   最大保护  最高可能用  最高性能
 Redo  LGWR  LGWR  LGWR或ARCH
 网络传输模式  SYNC  SYNC  LGWR进程时SYNC或ASYNC,ARCH进程时SYNC
 磁盘写操作  AFFIRM  AFFIRM  AFFIRM或NOAFFIRM
 是否需要standby redologs  YES  YES  可没有但推荐有