2013年(350)
分类: Oracle
2013-04-25 10:28:19
关于有三模同学的光荣事迹大家应该都听说了,有不认识的请自觉重温"名词先混个脸熟"篇,下面让三思就有三模同学的高超本领为大家做个展示。
为了便于大家更好的理解,我们先画一个表,表中描述了不同保护模式下LOG_ARCHIVE_DEST_n参数应该设置的属性:
|
最大保护 |
最高可能用 |
最高性能 |
REDO写进程 |
LGWR |
LGWR |
LGWR或ARCH |
网络传输模式 |
SYNC |
SYNC |
LGWR进程时SYNC或ASYNC,ARCH进程时SYNC |
磁盘写操作 |
AFFIRM |
AFFIRM |
AFFIRM或NOAFFIRM |
是否需要standby redologs |
YES |
YES |
可没有但推荐有 |
提示:
上面中的各项需求都是满足该保护模式的最低需求,这些需求都是据其特性而定的,同时你也一定要理解,这些需求仅只是保证你完成data guard保护模式的设置,如果你真正理解其特性的需求所希望满足的原因,你还需要做不少其它必要的工作。比如对于最高可用性而言,其根本目地是为了在某一台甚至多台主或备库瘫痪时,仍能够在极短时间内恢复服务,这就不仅需要你将最高可用性保护模式的参数配置正确,还需要你拥有足够多的standby数据库。听明白了没?啥,木有?555555555,你在打击俺语言描述的能力~~~
另外再强调一遍:最大保护和最高可用性都要求standby数据库配置standby redo logs(当然如果考虑角色切换的话,主库肯定也是需要配置的),关于standby redo logs的故事你可以参考第二部分的第一章1.3。
下面我们进入实践将一个data guard配置从最高性能模式改为最高可用性模式:
1、首先查看当前的保护模式 ---primary数据库操作
SQL> select protection_mode,protection_level from v$database;
PROTECTION_MODE PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
2、修改初始化参数 --primary数据库操作
SQL> alter system set log_archive_dest_2='SERVICE=jsspdg
2 OPTIONAL LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
3 DB_UNIQUE_NAME=jsspdg';
系统已更改。
3、设置新的数据保护模式并重启数据库 --primary数据库操作
语句非常简单,如下:
SQL> alter database set standby database to maximize availability;
数据库已更改。
提示:maximize后可跟{PROTECTION | AVAILABILITY | PERFORMANCE},分别对应最大保护,最高可用性及最高性能。
Down掉数据库,重新启动
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1289484 bytes
Variable Size 121635572 bytes
Database Buffers 37748736 bytes
Redo Buffers 7098368 bytes
数据库装载完毕。
数据库已经打开。
4、看一下当前的保护模式 --primary数据库操作
SQL> select protection_mode,protection_level from v$database;
PROTECTION_MODE PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY
5、修改standby初始化参数设置(主要考虑角色切换,如果只测试的话本步可跳过) ---standby数据库操作
SQL> alter system set log_archive_dest_2='SERVICE=jssweb OPTIONAL LGWR SYNC AFFIRM
2 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jssweb';
系统已更改。
查看当前的保护模式
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
jsspdg
SQL> select protection_mode,protection_level from v$database;
PROTECTION_MODE PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY
配置成功,正面顺便再测试一下。
6、停掉standby数据库,再查看primary数据库状态
SQL> select protection_mode,protection_level from v$database;
PROTECTION_MODE PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY RESYNCHRONIZATION
Standby数据库shutdown后,primary数据库保护级别切换为待同步。