天天看点

11GR DATAGRUAD环境BROKER配置Fast-Start Failover

 FAST-START failover 就是在当主数据库出现故障时,能快速与可靠的把standby切换成主数据库,在整个过程中不需要人来干预。fast-start failover只能通过dgmgrl与Enterprise Managerg来配置。

  只有maximum availability mode or maximum performance mode才能启用fast-start failover模式。在maximum availability模式下面,在切换时可以保证无数据丢失,在maximum performance mode下面,会有数据丢失,丢失多少数据由 <code>FastStartFailoverLagLimit这个参数来配置。</code>

<code> 只要observer进程启动过,我们就不需要人为的</code>干预。当observer与指定的备数据库与主数据库失去连接的时间超过<code>FastStartFailoverThreshold后,observer就会启动fast-start failover 到备数据库。如果配置了<code>FastStartFailoverPmyShutdown为true,此时原来的主数据库将会自动的shutdown。如果配置<code>FastStartFailoverAutoReinstate为true,当failover完成后,启动数据库时,会自动的执行<code>Reinstate database,把原来的主数据库变成备库,并与新主库进行同步。 </code></code></code></code>

<code>  fast-start failover包含3个过程</code>,如下图:

<a target="_blank" href="http://blog.51cto.com/attachment/201209/102721516.gif"></a>

测试开始:

   环境:OS REDHAT 5.6 X86_64 ,DB 11.2.0.2

1,DG环境的搭建。

见11GR2 搭建活动的物理DG/DATAGRUAD (READ ONLY模式)

<a href="http://luoping.blog.51cto.com/534596/983952" target="_blank">http://luoping.blog.51cto.com/534596/983952</a>

2,broker的配置

3,配置保护模式与日志传递方式

之前已经说了FAST-START FAILOVER只 maximum availability mode与maximum performance mode

下面我们看一下每一种保护模式对应的日志传递方式。

<a target="_blank" href="http://blog.51cto.com/attachment/201209/103432292.png"></a>

3.1修改保护模式:

[oracle@test admin]$ dgmgrl 

DGMGRL for Linux: Version 11.2.0.2.0 - 64bit Production 

Copyright (c) 2000, 2009, Oracle. All rights reserved. 

Welcome to DGMGRL, type "help" for information. 

DGMGRL&gt; connect sys/oracle@htz  

Connected. 

#通过help查看命令的帮忙。 

DGMGRL&gt; help edit 

Edits a configuration, database, or instance 

Syntax: 

  EDIT CONFIGURATION SET PROTECTION MODE AS  

    {MaxProtection|MaxAvailability|MaxPerformance}; 

  EDIT CONFIGURATION SET PROPERTY &lt;property name&gt; = &lt;value&gt;; 

  EDIT DATABASE &lt;database name&gt; SET PROPERTY &lt;property name&gt; = &lt;value&gt;; 

  EDIT DATABASE &lt;database name&gt; RENAME TO &lt;new database name&gt;; 

  EDIT DATABASE &lt;database name&gt; SET STATE = &lt;state&gt; 

    [WITH APPLY INSTANCE = &lt;instance name&gt;]; 

  EDIT INSTANCE &lt;instance name&gt; [ON DATABASE &lt;database name&gt;] 

    SET AUTO PFILE [ = {&lt;initialization file path&gt;|OFF} ]; 

    SET PROPERTY &lt;property name&gt; = &lt;value&gt;; 

  EDIT INSTANCE * ON DATABASE &lt;database name&gt; 

DGMGRL&gt; edit configuration set protection mode as maxavilability; 

Syntax error before or at "maxavilability" 

DGMGRL&gt; show configuration; 

Configuration - htz 

#最大可用的保护模式 

  Protection Mode: MaxAvailability 

  Databases: 

    htzb - Primary database 

    htz  - Physical standby database 

Fast-Start Failover: DISABLED 

Configuration Status: 

SUCCESS 

3.2 修改日志传递方式

DGMGRL&gt; edit database htz set property logxptmode=sync; 

Property "logxptmode" updated 

DGMGRL&gt; edit database htzb set property logxptmode=sync; 

DGMGRL&gt; show database htz logxptmode 

  LogXptMode = 'sync' 

DGMGRL&gt; show database htzb logxptmode 

  LogXptMode = 'sync 

4 配置数据库的flashback

4.1 主库上面

SQL&gt; select open_mode,database_role,log_mode,flashback_on from v$database; 

OPEN_MODE            DATABASE_ROLE    LOG_MODE     FLASHBACK_ON 

-------------------- ---------------- ------------ ------------------ 

READ WRITE           PRIMARY          ARCHIVELOG   NO 

#配置flashback 

SQL&gt; alter database flashback on; 

Database altered. 

READ WRITE           PRIMARY          ARCHIVELOG   YES 

#flashback的配置目录与大小 

SQL&gt; show parameter recovery 

NAME                                 TYPE        VALUE 

------------------------------------ ----------- ------------------------------ 

db_recovery_file_dest                string      /u01/app/oracle/fast_recovery_ 

                                                 area 

db_recovery_file_dest_size           big integer 4032M 

4.2 备库上面

READ ONLY WITH APPLY PHYSICAL STANDBY ARCHIVELOG   NO 

SQL&gt; recover managed standby database cancel; 

Media recovery complete. 

SQL&gt; recover managed standby database using current logfile disconnect; 

READ ONLY WITH APPLY PHYSICAL STANDBY ARCHIVELOG   YES 

5 配置observer服务器

5.1 配置tnsnames.ora文件。

[oracle@test admin]$ cat tnsnames.ora 

HTZB = 

  (DESCRIPTION = 

    (ADDRESS_LIST = 

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.31)(PORT = 1521)) 

    ) 

    (CONNECT_DATA = 

      (SERVER = dedicate) 

      (SERVICE_NAME = htzb) 

  ) 

HTZ = 

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.30)(PORT = 1521)) 

      (SERVICE_NAME = htz) 

5.2 启动observer进程

[oracle@test admin]$ dgmgrl sys/oracle@htz "start observer" 

Observer started 

6 配置fast-start failover

DGMGRL&gt; edit database htz set property FastStartFailoverTarget=htzb; 

Property "faststartfailovertarget" updated 

DGMGRL&gt; edit database htzb set property  FastStartFailoverTarget=htz; 

于fst-start failove相关的其它几个参数:

<code>FastStartFailoverPmyShutdown</code>

<code>FastStartFailoverLagLimit</code>

<code>FastStartFailoverAutoReinstate</code>

<code>ObserverConnectIdentifier</code>

<code>这里我们都使用默认值;</code>我们来看一下这些值的默认值;

DGMGRL&gt; show configuration verbose; 

    htz  - (*) Physical standby database 

  (*) Fast-Start Failover target 

  Properties: 

    FastStartFailoverThreshold      = '30' 

    OperationTimeout                = '30' 

    FastStartFailoverLagLimit       = '30' 

    CommunicationTimeout            = '180' 

    FastStartFailoverAutoReinstate  = 'TRUE' 

    FastStartFailoverPmyShutdown    = 'TRUE' 

    BystandersFollowRoleChange      = 'ALL' 

Fast-Start Failover: DISABLE

  Threshold:        30 seconds 

  Target:           htz 

  Observer:         test 

  Lag Limit:        30 seconds (not in use) 

  Shutdown Primary: TRUE 

  Auto-reinstate:   TRUE 

<code>7 启用fast-start failover</code>

DGMGRL&gt; show configuration 

DGMGRL&gt; enable fast_start failover 

Enabled. 

DGMGRL&gt;  

8.测试FAST-START FAILOVER是否生效

Fast-Start Failover: ENABLED 

#原主库直接shutdown abort; 

SQL&gt; shutdown abort; 

ORACLE instance shut down. 

SQL&gt;  

#observer进程的日志 

19:03:03.93 Friday, September 07, 2012

Initiating Fast-Start Failover to database "htz"...

Performing failover NOW, please wait...

Failover succeeded, new primary is "htz"

19:03:13.24 Friday, September 07, 2012

#提示已经把主切换到htz 

#在htz上面查看一下 

SQL&gt; select open_mode ,database_role from v$database; 

OPEN_MODE            DATABASE_ROLE 

-------------------- ---------------- 

READ WRITE           PRIMARY 

已经成功

手动启动原主库

DGMGRL&gt; show configuration;

Configuration - htz

Protection Mode: MaxAvailability

Databases:

htz - Primary database

Warning: ORA-16817: unsynchronized fast-start failover configuration

htzb - (*) Physical standby database (disabled)

ORA-16661: the standby database needs to be reinstated

Fast-Start Failover: ENABLED

Configuration Status:

WARNING

DGMGRL&gt; connect sys/oracle@htzb

Connected.

DGMGRL&gt; startup

ORACLE instance started.

Database mounted.

ORA-16649: possible failover to another database prevents this database from being opened

#过一分会后我们再查看一下状态

DGMGRL&gt; connect sys/oracle@htz

DGMGRL&gt; show configuration

htzb - (*) Physical standby database

SUCCESS

查看状态,一切正常。

     本文转自7343696 51CTO博客,原文链接:http://blog.51cto.com/luoping/984294,如需转载请自行联系原作者