Loading
0

10gr2 physical dataguard 的创建及切换

1.准备环境

一台已有生产数据库的服务器,并且已开启归档模式

一台只有数据库软件的服务器

主备库相关配置信息如下:

psb

主库listener.ora配置

备库listener.ora配置

主库及备库tnsnames.ora配置

在主/备库服务器上创建相应的目录及设置相应的/etc/hosts,主备库开启监听

 

2.Enable Forced Logging

在主库上开启强制日志

3.在主库设置相应参数

db_file_name_convertlog_file_name_convert需要重启数据库才生效 只在库为备库时才有用

如果两台服务器存放数据文件和日志文件的路径是一样的 可以不用设置这两个参数

 

4.在备库$ORACLE_HOME/dbs下创建密码文件

5.主库创建pfile

6.将/home/oracle/initprodst.ora拷贝到备库服务器的$ORACLE_HOME/dbs下并修改相应参数

添加参数

修改

修改

修改

修改

修改

修改

修改

 

7.全备主库、归档以及controlfile,并将controlfile作为standby来备份

8.将备份文件拷贝至备库服务器的/oradata/rman目录下

9.在备库通过pfile创建spfile,并将备库启动到nomount

10.备库通过主库备份出来controlfile恢复controlfile以及数据库

recover database后可能会报一个找不到下一个sequence日志的错误,不用理会这个错误

 

11.在备库上创建备用日志

备用日志的大小必须跟主库在线日志的大小一致,并且ORACLE建议备用日志的组数要比主库的在线日志每thread的组数多一组,

也就是如果主库为单实例有3组日志,那么备库就是4组备用日志,

如果是两个节点的RAC,每thread有3组日志,那么备库的备用日志也要创建2个thread的备用日志,也就是(3+1)*2=8组备用日志

 

12.备库启动redo apply

使用using current logfile 是日志实时应用

不加using current logfile 是非实时应用

至此,物理备库已创建完成。

 

13.监控、排错

v$dataguard_stats 查看apply的延时

v$managed_standy 查看进程状态 MRP进程 为APPLY就是已经正常应用

若为WAIT_FOR_LOG就是等待日志传送,可将主库log_archive_dest_state_2设置为defer 然后切换一次日志

再将其设置为enable,再切换一次日志,就会激活日志传送

若MRP进程状态为wait_for_gap说明有缺少的日志 一般会自动传送缺少日志然后做应用恢复

select database_role,switchover_status from v$database; 查看数据库当前角色和切换状态

查看主备库的v$log 看当前使用的日志组和sequence是否一致,备库的当前日志组的状态为clearing_current对应主库的current

查看v$standby_log 看备用日志是否被激活使用

切换日志看主备库是否归档一致

切换时可监控主备库alert日志,看归档或日志是否被传送和应用

 

14.主备库switchover

在切换前在主备库执行

确定主备库的切换状态

主库switchover_status一般会有 to standby、session_active两个状态

备库switchover_status一般会有 to primary、NOT ALLOWED 两个状态

在这些状态下主备库是可以直接切换的,备库的状态若为need recover 则需要先将备库与主库同步完成后才可切换

还有其他的一些状态 需要排查原因解决后再进行切换,否则切换很可能会失败。

首先 在主库执行

一般主库都是有会话激活存在的 也就是session_active 所以要加上with session shutdown 强制将会话断开才能切换

主库切换备库完成后执行

将主库关闭

在原备库执行

将原备库切换成新主库

切换完成后 将新主库打开

将新备库(原主库)启动到mount状态

由于原主库之前没有创建过备用日志,要日志实时应用就得有备用日志,所以创建备用日志组

备用日志大小和组数同理步骤11

启动redo apply

至此,主备库切换完成。

请尊重我们的辛苦付出,未经允许,请不要转载 Ask600 的文章!