Decode360's Blog

业精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

  BlogJava :: 首页 :: 新随笔 :: 联系 ::  :: 管理 ::
  302 随笔 :: 26 文章 :: 82 评论 :: 0 Trackbacks
本文作者: junsansi     转载网址: http://www.5ienet.com/index.shtml
 
 
第四部分Standby之选择数据保护模式  2007.12.18

    关于有三模同学的光荣事迹大家应该都听说了,有不认识的请自觉重温"名词先混个脸熟"篇,下面让三思就有三模同学的高超本领为大家做个展示。
    为了便于大家更好的理解,我们先画一个表,表中描述了不同保护模式下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 MAXIMUMAVAILABILITY

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 MAXIMUMAVAILABILITY

    配置成功,正面顺便再测试一下。

6、停掉standby 数据库,再查看primary 数据库状态

    SQL> select protection_mode,protection_level from v$database;
    PROTECTION_MODE PROTECTION_LEVEL
    -------------------- --------------------
    MAXIMUM AVAILABILITY RESYNCHRONIZATION

    Standby 数据库shutdown 后,primary 数据库保护级别切换为待同步。
 
 
 




-The End-

posted on 2009-02-28 21:02 decode360-3 阅读(645) 评论(0)  编辑  收藏 所属分类: DBA

只有注册用户登录后才能发表评论。


网站导航: