三大保护模式
最大保护(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、验证”最高可用性“效果
- SQL> shutdown immediate
- Database closed.
- Database dismounted.
- ORACLE instance shut down.
SQL> select protection_mode,protection_level from v$database; PROTECTION_MODE PROTECTION_LEVEL -------------------- -------------------- MAXIMUM AVAILABILITY RESYNCHRONIZATION
- 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.
- SQL> select protection_mode,protection_level from v$database;
- PROTECTION_MODE PROTECTION_LEVEL
- -------------------- --------------------
- 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 | 可没有但推荐有 |
本文出自 “鼠标爱上键盘” 博客,转载请与作者联系!