DG日志不应用,GAP,主备切换解决思路与办法
环境ORACLE 10G OS WINDOWS
对于DG故障解决思路,DG日志切换不进行应用,DG出现GAP解决方法,DG主备库切换,
当DG出现故障时,第一时间检测alert日志,服务器OS日志,网络是否通畅。
1、当DG出现日志不能传输到备库
一、TNS配置错误,监听配置错误。
二、主备库初始化参数文件配置错误(如archive_log_dest文件位置错误)。
三、备库控制文件过旧,从主库生成一个STANDBY CONTROL过去。
SQL> alter database create standby controlfile as 'c:\control01.ctl';。
四、备库是否应用了Failovers 。
下面模拟备库应用了Failovers 。
备库执行
SQL> alter database recover managed standby database finish;
Database altered.
备库:
SQL> select PROTECTION_MODE,OPEN_MODE,DB_UNIQUE_NAME,DATABASE_ROLE,SWITCHOVER_STATUS from v$database;
PROTECTION_MODE OPEN_MODE DB_UNIQUE_NAME DATABASE_ROLE SWITCHOVER_STATUS
-------------------- -------------------- ------------------------------ ---------------- --------------------
MAXIMUM PERFORMANCE READ ONLY ccmis2 PHYSICAL STANDBY TO PRIMARY
主库:
SQL> select PROTECTION_MODE,OPEN_MODE,DB_UNIQUE_NAME,DATABASE_ROLE,SWITCHOVER_STATUS from v$database;
PROTECTION_MODE OPEN_MODE DB_UNIQUE_NAME DATABASE_ROLE SWITCHOVER_STATUS
-------------------- -------------------- ------------------------------ ---------------- --------------------
MAXIMUM PERFORMANCE READ WRITE ccmis1 PRIMARY FAILED DESTINATION
主库alert文件:
ARC1: All Archive destinations made inactive due to error 394
ARC1: Failed to archive thread 1 sequence 1 (394)
ARCH: Archival stopped, error occurred. Will continue retrying
Wed Oct 30 10:25:54 2013
Errors in file c:\oracle\product\10.2.0\admin\orcl\bdump\orcl_arc1_1236.trc:
ORA-16038: log 2 sequence# 1 cannot be archived
ORA-00394: online log reused while attempting to archive it
ORA-00312: online log 2 thread 1: 'C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\STANDBY\ONLINELOG\O1_MF_2_96YY5JSW_.LOG'
ARC1: All Archive destinations made inactive due to error 394
*** 2013-10-30 10:25:54.796 58942 kcrr.c
kcrrfail: dest:1 err:394 force:0 blast:1
*** 2013-10-30 10:25:54.828 20146 kcrr.c
ORA-16038: log 2 sequence# 1 cannot be archived
ORA-00394: online log reused while attempting to archive it
ORA-00312: online log 2 thread 1: 'C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\STANDBY\ONLINELOG\O1_MF_2_96YY5JSW_.LOG'
*** 2013-10-30 10:27:54.734
*** 2013-10-30 10:27:54.734 20146 kcrr.c
*** 2013-10-30 10:28:54.765
kcrrwkx: work to do 0x1 (start)
*** 2013-10-30 10:28:54.781 20146 kcrr.c
这个时候导致主库不再向备库传送日志了,我们只需要重建STANDBY控制文件就行
SQL> alter database create standby controlfile as 'c:\control01.ctl';。
其中当真正主库出现故障的Failovers的时候
一.查看是否有日志GAP,没有应用的日志:
SQL> SELECT UNIQUE THREAD#, MAX(SEQUENCE#) OVER(PARTITION BY THREAD#) LAST FROM V$ARCHIVED_LOG;
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
如果有,则拷贝过来并且注册
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE '路径';
重复查看直到没有应用的日志:
二. 然后停止应用归档:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
三. 下面将STANDBY数据库切换为PRIMARY数据库:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
或
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;
SQL> SELECT DATABASE_ROLE FROM V$DATABASE;
DATABASE_ROLE
----------------
PHYSICAL STANDBY
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
2、日志传输到备库不能应用。
一、是否产生了GAP 拷贝缺失的日志重新注册日志,如果GAP缺失的归档日志过多,切归档日志已经删除了,那就必须重新搭建DG。
二、是否设置了REDO延迟
下面就简单说说手工处理日志GAP的步骤:
1、在备库检查是否有日志缺失
SQL> select * from V$ARCHIVE_GAP;
2、在主库中查询缺失的日志的所在路径和名称
SQL> SELECT NAME FROM V$ARCHIVED_LOG
如果把日志移动到其他路径,则把日志所在路径换成当前实际所在路径。
3、把日志拷贝到备库上
4、在备库上手工注册上一步中从主库拷贝来的日志
SQL> ALTER DATABASE REGISTER LOGFILE '路径';
5、观察备库的alert日志信息
6、检查备库是否还有日志GAP
SQL> select * from V$ARCHIVE_GAP;
no rows selected
如果有行返回,则重复2-5步,直到查询结果是"no rows selected"。
如果日志只是临时移动到其他地方,过后会再移回原路径,则不用这么大费周折手工去手工处理了,把日志拷回原处后FAL会自动处理GAP。
3、DG主备库切换
主库:
1. 查看switchover 状态
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
to standby
2 切换成备库
如果上面的结果不是to standby 还有会话运行
SQL>Alter database commit to switchover to physical standby with session shutdown;
否则直接
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
Database altered.
3 启动到mount和应用日志状态
SQL> SHUTDOWN IMMEDIATE
SQL> startup nomount;
SQL> alter database mount standby database;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
4. 查看数据库模式
SQL>select dest_name,status,database_mode,recovery_mode,protection_mode from v$archive_dest_status;
SQL>select status,database_mode from v$archive_dest_status;
备库:
1.查看switchover状态
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
TO PRIMARY
2. 切换成主库
如果上面的结果不是to PRIMARY 还有会话运行
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY with session shutdown
否则
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
Database altered.
SQL> shutdown immediate;
SQL> startup;
SQL> alter system switch logfile;
3. 查看数据库模式
SQL>select dest_name,status,database_mode,recovery_mode,protection_mode from v$archive_dest_status;
SQL>select status,database_mode from v$archive_dest_status;
至此,DG相关简单问题全部以列出。
DG日志不应用,GAP,主备切换解决思路与办法的更多相关文章
- Oracle 12C 物理Standby 主备切换switchover
Oracle 12C 物理Standby 主备切换switchover Oracle 12C 物理Standby 主备切换switchover Table of Contents 1. 简述 2. 切 ...
- 使用broker进行Datagurd主备切换报ORA-12514异常
在使用Datagurd broker进行Datagurd主备切换时报ORA-12514监听异常, 详细信息如下: DGMGRL> switchover to xiaohe; Performing ...
- Nginx+Keepalived主备切换(包含nginx服务停止)
原文地址:http://blog.sina.com.cn/s/blog_79ac6aa80101bmed.html Nginx+Keepalived主备切换(包含nginx服务停止) 环境: VM中4 ...
- (摘)DataGuard物理standby管理 - 主备切换
DataGuard物理standby管理 - 主备切换 Dataguard的切换分为两种,switchover和failover. switchover一般用于数据库或硬件升级,这时只需要较短时间中断 ...
- 测试redis+keepalived实现简单的主备切换【转载】
转自: 测试redis+keepalived实现简单的主备切换 - Try My Best 尽力而为 - ITeye技术网站http://raising.iteye.com/blog/2311757 ...
- Redis安装,主从,主备切换
网络环境: 主:10.187.120.5 从:10.187.69.58 从:10.187.69.59 一.安装 mv redis-2.8.19.tar.gz /export/servers/ cd / ...
- MySQL 复制 - 性能与扩展性的基石 4:主备切换
一旦使用 MySQL 的复制功能,就很大可能会碰到主备切换的情况.也许是为了迭代升级服务器,或者是主库出现问题时,将一台备库转换成主库,或者只是希望重新分配容量.不过出于什么原因,都需要将新主库的信息 ...
- Zookeeper C++编程实战之主备切换
默认zookeeper日志输出到stderr,可以调用zoo_set_log_stream(FILE*)设置输出到文件中还可以调用zoo_set_debug_level(ZooLogLevel)控制日 ...
- 基于zookeeper的主备切换方法
继承CZookeeperHelper即可快速实现主备切换: https://github.com/eyjian/libmooon/blob/master/include/mooon/net/zooke ...
随机推荐
- 2017-2018-1 20179202《Linux内核原理与分析》第六周作业
一.系统调用实验(下): 1.编辑 menu 中的 text.c 文件,给MenuOS增加 rename 和 rename_asm 命令: make rootf 打开 menu 镜像,可以看到Menu ...
- 浅谈三款常用软件 - Chrome、Intellij IDEA、Cygwin
作为一个每天的接触计算机的程序员,肯定也会接触形形色色的软件,不过今天在此介绍的三款软件,则是我每天都要用到的,而且我认为它们非常好用,极大的提高了我的开发效率. 1.Chrome Google的大名 ...
- 【小思考】Python里面有声明和定义分离这一说么?
第一部分: 探究这个问题,还是因为编程的时候碰到了这个错误: 提示tcplink没有定义,tcplink是我自己写的一个给监听到的tcp连接请求分配新线程的函数,不过是写在了下面,就像这样: 如果是C ...
- 给出一列数a1,a2,a3....an,求它们的逆序对数,即有多少个有序对(i,j) 使得iaj,n高达10的6次方
//归并排序 //#include<stdio.h> //#include<string.h> //#include<algorithm> //#include&l ...
- BZOJ4551 HEOI2016树
可以用并查集,记忆化搜索,线段树多种方法实现. 我这里写的是依照dfs序建线段树,维护区间最大值. #include<bits/stdc++.h> using namespace std; ...
- 51nod1819 黑白树V2
简单的题面 给定一棵以1为根的有根树,点可能是黑色或白色,操作如下. 1. 选定一个点x,将x的子树中所有到x的距离为奇数的点的颜色反转.2. 选定一个点x,将点x的颜色反转.3. 选定一个点x,询问 ...
- 【8.30校内测试】【找规律模拟】【DP】【二分+贪心】
对于和规律或者数学有关的题真的束手无策啊QAQ 首先发现两个性质: 1.不管中间怎么碰撞,所有蚂蚁的相对位置不会改变,即后面的蚂蚁不会超过前面的蚂蚁或者落后更后面的蚂蚁. 2.因为所有蚂蚁速度一样,不 ...
- 1089 Intervals(中文版)
开始前先讲几句废话:这个题我开始也没看懂,后来借助百度翻译,明白了大概是什么意思. 试题描述 输入一个n,然后输入n组数据,每个数据有两个数,代表这个闭区间是从几到几.然后看,如果任意两个闭区间有相重 ...
- [转]Android:Activity+Fragment及它们之间的数据交换(一)
2014-05-18 来源:Android:Activity+Fragment及它们之间的数据交换(一) 简介: 为什么要用Fragment?使用Fragment可以在一个Acti ...
- mysql数据库文件简介和应用
存放目录: 用 whereis my.cnf 查看mysql配置文件的目录,查看my.cnf的datadir参数可找到mysql数据库文件的存放目录. 本机存放的目录为/var/lib/mysql,进 ...