ORACLE Physical Standby DG 之switch over
DG架构图如下:

计划,切换之后的架构图:

DG切换:
主备切换:
这里所有的数据库数据文件、日志文件的路径是一致的
【旧主库】主库primarydb切换为备库standby3
主库检查switchover_status列的状态,是否支持switchover操作:如果该列值为"TO STANDBY"则表示primary 数据库支持转换为standby 角色
prod> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO STANDBY
SQL> alter database commit to switchover to physical standby ;
SQL> select instance_name,status from v$instance;
SQL> shutdown immediate
【新建备库】新建备库standby3切换为主库
检查v$database视图的switchover_status列的状态,是否支持switchover操作:
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO PRIMARY
SQL> alter database commit to switchover to primary ; --------此时此库可以处于mount模式或open read only模式
SQL> alter database open; -----至此该库转换成为Primary库
SQL> alter system switch logfile; 切日志
SQL> select max(sequence#) from v$archived_log;
新主库spfile修改:
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(primarydb,standby1,standby2,standby3,cascade)'
alter system set log_archive_dest_1 = 'location=/data/app/oracle/arch valid_for=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primarydb';
alter system set log_archive_dest_2 = 'SERVICE=standby1 SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby1';
alter system set log_archive_dest_3 = 'SERVICE=standby2 SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby2';
alter system set log_archive_dest_4 = 'SERVICE=standby3 SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby3';
alter system set log_archive_dest_5 = 'SERVICE=cascade SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=cascade';
alter system set FAL_CLIENT='primarydb';
alter system set FAL_SERVER='standby1','standby2','standby3','cascade';
在主备库创建静态listener和tnsnames.ora,远程连接测试
将新主库密码文件拷贝到各个新备库,并改名为orapwinstance_name
备库1:
修改密码文件cd $ORACLE_HOME/dbs mv orapwprimarydb orapwstandby1
alter system set FAL_SERVER=primarydb;
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(primarydb,standby1)'
alter system set log_archive_dest_2 = 'SERVICE=primarydb SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primarydb';
备库2:
修改密码文件cd $ORACLE_HOME/dbs mv orapwprimarydb orapwstandby2
alter system set FAL_SERVER=primarydb;
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(primarydb,standby2)'
alter system set log_archive_dest_2 = 'SERVICE=primarydb SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primarydb';
备库3:
备库3为先前主库:修改密码文件cd $ORACLE_HOME/dbs mv orapwprimarydb orapwstandby3
启动数据库到mount
SQL>startup mount
开启备库为应用日志模式状态
alter database recover managed standby database using current logfile disconnect from session;
alter system set FAL_SERVER=primarydb;
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(primarydb,standby3)'
alter system set log_archive_dest_2 = 'SERVICE=primarydb SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primarydb';
#指向级联备库的参数LOG_ARCHIVE_DEST_3='SERVICE=cascade SYNC VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=cascade’;
#因为之前的DG架构为一主三备库,所以应将不需要的归档日志路径log_archive_dest_state_3设置为defer
alter system set log_archive_dest_state_3=defer;
备库4:cascade
修改密码文件cd $ORACLE_HOME/dbs mv orapwprimarydb orapwcascade
alter system set FAL_SERVER=primarydb;
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(primarydb,cascade)'
alter system set log_archive_dest_2 = 'SERVICE=primarydb SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primarydb';
采坑:
一:主备库日志缺口:
FAL[client]: Failed to request gap sequence
GAP - thread 1 sequence 10894-10894
DBID 1016818008 branch 918555866
FAL[client]: All defined FAL servers have been attempted.
------------------------------------------------------------
Check that the CONTROL_FILE_RECORD_KEEP_TIME initialization
parameter is defined to a value that's sufficiently large
enough to maintain adequate log switch information to resolve
archivelog gaps.
------------------------------------------------------------
这里的解决方式是:
在主库拷贝相应的日志到备库,然后在备库注册:
alter database register logfile '/data/app/oracle/arch/1_3120_948067048.dbf';
二:主库可以远程连接备库,但是主库报错ORA16191
Error 1017 received logging on to the standby
------------------------------------------------------------
Check that the primary and standby are using a password file
and remote_login_passwordfile is set to SHARED or EXCLUSIVE,
and that the SYS password is same in the password files.
returning error ORA-16191
------------------------------------------------------------
密码文件需要在主库生成,然后拷贝之备库,然后在备库重命名。注意orapw文件的权限。
三:主库不能往新建的备库传日志
log_archive_dest_state_3默认是enable,但是也需要重新配置一下
alter system set log_archive_dest_state_3=enable;
ORACLE Physical Standby DG 之switch over的更多相关文章
- ORACLE Physical Standby DG 之fail over
SQL> select thread#, low_sequence#, high_sequence# from v$archive_gap;确认下是否存在日志间隙,发现gap现象,说明failo ...
- ORACLE Physical Standby DG搭建
主库: 一:强制force logging: alter database force logging; 二:开启主库的归档模式 三:主库添加standby redo log,比redo日志组多一组: ...
- ORACLE Physical Standby 级联备库搭建
搭建oracle 级联DG 现有架构:physical standby 一主二备,在此基础上,在主库下新建备库standby3.级联备库cascade 数据库版本 11.2.0.4 db_name=p ...
- ORACLE 11gR2 DG(Physical Standby)日常维护02
环境:RHEL 6.5 + Oracle 11.2.0.4 三.监控DG的状态 3.1监控DG备库的状态 3.2监控主库传输日志链路的状态 四.备库切换为snapshot standby 4.1备库切 ...
- ORACLE 11gR2 DG(Physical Standby)日常维护01
环境:RHEL 6.4 + Oracle 11.2.0.4 一.主备手工切换 1.1 主库,切换成备库并启动到mount 1.2 备库,切换成主库并启动到open 1.3 新的备库启动日志应用 二.重 ...
- 【原】Configuring Oracle Data Guard In Physical Standby Database
作者:david_zhang@sh [转载时请以超链接形式标明文章] http://www.cnblogs.com/david-zhang-index/p/5042640.html参照文档:https ...
- ORACLE 11.2.0.4 Single To Single Data Guard 安装 physical standby
[root@ORACLE ~]# su - oracle [oracle@ORACLE ~]$ sqlplus / as sysdba . 查看主库归档模式: SQL> select log_m ...
- DG - physical standby switchover切换过程
一.切换前检查1.检查备库已经全部接收到主库的redo如果是最大可用性.最大保护性模式,可以在primary端查看v$archive_dest_status,确认是否所有的redo已经传送到备库#在主 ...
- [Oracle][DATAGUARD] PHYSICAL STANDBY环境里,使用CATALOG管理Primary和Standby
1.先使用控制文件构筑好PHYSICAL STANDBY环境(Primary:Single 11.2.0.4,Standby Single 11.2.0.4) 2.构筑好Catalog用的服务器(Ca ...
随机推荐
- 使用git命令删除branch
使用git删除server上的一个branch注意事项: 1. 使用命令:git push origin –delete 分支名 (分支名称需要去掉origin,如果有), git branch ...
- 目标检测(三) Fast R-CNN
引言 之前学习了 R-CNN 和 SPPNet,这里做一下回顾和补充. 问题 R-CNN 需要对输入进行resize变换,在对大量 ROI 进行特征提取时,需要进行卷积计算,而且由于 ROI 存在重复 ...
- Python 数据分析:Pandas 缺省值的判断
Python 数据分析:Pandas 缺省值的判断 背景 我们从数据库中取出数据存入 Pandas None 转换成 NaN 或 NaT.但是,我们将 Pandas 数据写入数据库时又需要转换成 No ...
- TApplication,TForm,TControl,TComponent,TWinControl研究(博客索引)good
TApplication,TForm,TControl,TComponent,TWinControl研究 http://blog.csdn.net/suiyunonghen/article/detai ...
- 编写的Java第一个程序
没什么好介绍的,嘻嘻 package head; public class ee { public static void main(String[] args) { System.out.print ...
- ASP.net解析JSON
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- jQuery之排他思想
使用的方法:click() css() siblings() <button>快速</button> <button>快速</button> ...
- pycharm链接数据库以及连接时候出现错误的集合
1.pycharm如何直接连接数据库? 作用:这是一种管理数据库的方式而已,因为在开发过程中结合使用还是不错的!当然,还有有很多管理数据库的工具和方法. 比如:navicat工具 1.1 如何找到管 ...
- iOS开发之详解剪贴板
关于UIMenuController的用法例子 今天终于搞明白了UIMenuController显示的相关内容,把源代码分享给大家! 要正常显示菜单,必须做到以下几点:1. -(BOOL)canBec ...
- 以当前时间作为GUID的方法
在C#中,系统提供了GUID类,用户可以通过该类来获得128位的唯一标识,但是该标识不具有可读性,很难把该GUID显示在界面上,以当前时间精确到毫秒来作为GUID是一个比较不错的做法,但是DateTi ...