DATAGUARD failover切换及配置范例


今天给客户演示了虚拟机上的switchover和failover的切换过程。客户关心的重点自然是failover,我们直接关掉虚拟存储的开关来模拟阵列故障。failover步骤如下

1. 

  1. select NAME,RESETLOGS_TIME,LOG_MODE,OPEN_MODE,PROTECTION_MODE,REMOTE_ARCHIVE,   
  2. DATABASE_ROLE,SWITCHOVER_STATUS,FORCE_LOGGING   
  3. from v$database;  

2. 停止日志应用
  1. alter database recover managed standby database cancel;  
3. 关闭standby日志传输
  1. alter database recover managed standby database finish force;  
4. 切换到primary
  1. alter database commit to switchover to primary with session shutdown;  

做这一步的时候,若存在gap,则会报ORA-16139    :Switchover: Media recovery required - standby not in limbo 错误。做测试的时候,若先起主库再起备库,且未等待备库相关日志传输完毕,就会出现这个问题。此时需要强制切换

  1. alter database activate physical standby database;  
5. 重启数据库到open状态

附上单机到单机的linux下dataguard实施过程。


准备环境

PRIMARY: RHEL 4.7 + Oracle 10.2.0.4单机+文件系统  主机名:zhbqdb1

STANDBY: RHEL 4.7 + oracle 10.2.0.4单机 + 文件系统  主机名:zhbqdb2

主机上创建一个库名为zhdydb1的数据库,开启归档模式。备机装好数据软件,版本升级到与主机一致

在主机和备机上配好/etc/hosts并创建数据存放路径

# Do not remove thefollowing line, or various programs
#that require network functionality will fail.
127.0.0.1               localhost.localdomain localhost
172.17.42.29            zhbqdb1
172.17.42.30            zhbqdb2
 

创建存放数据文件和归档的目录

  1. mkdir /u01/flash_recovery_area  
  2. mkdir /u01/oradata  
  3. chown oracle:oinstall/u01/flash_recovery_area  
  4. chown oracle:oinstall/u01/oradata  

主机的配置

打开force logging

SQL> alter database force logging;

查看当前数据库是否置于force logging 下:

selectforce_logging from v$database;

创建归档目录

  1. mkdir /u01/flash_recovery_area/ZHDYDB1/arch  
  2. mkdir/u01/flash_recovery_area/ZHDYDB2  
  3. mkdir/u01/flash_recovery_area/ZHDYDB2/arch  
  4. mkdir/u01/flash_recovery_area/ZHDYDB2/archivelog  

配置tnsnames

在zhbqdb1上

vi$ORACLE_HOME/network/admin/tnsnames.ora

ZHDYDB1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =zhbqdb1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = zhdydb1)
    )
  )
 
ZHDYDB2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =zhbqdb2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = zhdydb2)
    )
  )
 

  • 1
  • 2
  • 3
  • 4
  • 下一页

相关内容