今天给客户演示了虚拟机上的switchover和failover的切换过程。客户关心的重点自然是failover,我们直接关掉虚拟存储的开关来模拟阵列故障。failover步骤如下
1.
DATABASE_ROLE,SWITCHOVER_STATUS,FORCE_LOGGING
2. 停止日志应用
3. 关闭standby日志传输
4. 切换到primary
做这一步的时候,,若存在gap,则会报ORA-16139 :Switchover: Media recovery required – standby not in limbo 错误。做测试的时候,若先起主库再起备库,且未等待备库相关日志传输完毕,就会出现这个问题。此时需要强制切换
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
创建存放数据文件和归档的目录
mkdir /u01/flash_recovery_area
mkdir /u01/oradata
chown oracle:oinstall/u01/flash_recovery_area
chown oracle:oinstall/u01/oradata
主机的配置
打开force logging
SQL> alter database force logging;
查看当前数据库是否置于force logging 下:
selectforce_logging from v$database;
创建归档目录mkdir /u01/flash_recovery_area/ZHDYDB1/arch
mkdir/u01/flash_recovery_area/ZHDYDB2
mkdir/u01/flash_recovery_area/ZHDYDB2/arch
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)
)
)