Oracle Data Guard物理备库的正常切换

2014-11-24 18:54:07 · 作者: · 浏览: 0

它分成为逻辑备库(logical standby )和物理备库(physical standby) ,分别用在不同的应用场景中。


在Oracle 10g 物理备库中,使用正常切换操作,可以将备库切换主库,而主库切换成备库,然后还能再切换回去。


它的应用场景包括数据库灾备的验证、数据库硬件维护的无缝切换、数据库换服务器的数据迁移等等。


这里顺便提一个案例,在以前数据迁移工作中,我使用数据库的备份和异地恢复,这样可以实现大数据库的异地迁移,并且切换时间也就几分钟。但该方案有一个缺点,如切换完成后,新环境出现其他故障如网络导致不能用,要再迁移回去则不可能了,因为新环境数据库已经写入数据。


但如果使用data gauard 来进行数据迁移,如果新环境不可用,则是可以快速切换回去的。


下面我就这种案例介绍一下物理备库的实现和切换过程。


第一部分,创建物理备库,实现 physical standby 模式
在主库上修改初始化参数,保护级别采用默认值即最大性能,重做日志传输方式采用ARCH 。这里是做数据迁移,如果是灾备需求,则需要设置成最大可用或最大保护,传输重做日志的方式为LGWR SYNC AFFIRM 。


alter system set log_archive_config='dg_config=(mikidb,mikidg)' scope=memory;


alter system set log_archive_dest_2='SERVICE=MIKIDB_STANDBY ARCH ASYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=MIKIDG' scope=memory;


主库的tnsnames.ora 文件中需要增加一个tnsname ,即log_archive_dest_2 中指定的mikidb_standby 。


mikidb_STANDBY =


(DESCRIPTION =


(ADDRESS_LIST =


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


)


(CONNECT_DATA =


(SID = mikidb)


)


)


在备库上修改初始化参数,设置db_unique_name ,fal_client 和fal_server 。


如下:


*.db_unique_name='mikidg'


*.fal_client='mikidb_standby'


*.fal_server='mikidb_primary'


fal 用于探测主库和备库之间归档日志文件的间隔,称之为fetch archive log 。


另外,归档路径也做一个简单设置,用于保存从主库上传输过来的归档日志文件。


*.log_archive_config='dg_config=(mikidb,mikidg)'


*.log_archive_dest_1='LOCATION=+VG1/ valid_for=(all_logfiles,all_roles) db_unique_name=mikidg'


备库的tnsnames.ora 文件中需要增加两个tnsname ,即fal_client 和fal_server 的值,分别是mikidb_standby 和mikidb_primary 。


mikidb_STANDBY =


(DESCRIPTION =


(ADDRESS_LIST =


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


)


(CONNECT_DATA =


(SID = mikidb)


)


)


mikidb_primary =


(DESCRIPTION =


(ADDRESS_LIST =


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


)


(CONNECT_DATA =


(SID = mikidb)


)


)


在主备库的初始化参数都设置好以后,我们在备库上恢复主库的备份,恢复使用控制文件需要主库特别生成,专门用于data guard 的备库应用。