一个备库中ORA错误信息的分析

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 最近也在处理一些遗留的问题,所以对于使用orabbix的报警还是心怀敬畏之心,一方面是我们让它能够做全方位的监控,另一方面也让我发现我们还是存在不少的小问题,小问题虽小,但是放大了,就是大麻烦,甚至数据库事故。
最近也在处理一些遗留的问题,所以对于使用orabbix的报警还是心怀敬畏之心,一方面是我们让它能够做全方位的监控,另一方面也让我发现我们还是存在不少的小问题,小问题虽小,但是放大了,就是大麻烦,甚至数据库事故。
自从上次在社群分享了DB time的抖动案例之后,有不少的朋友似乎对这个工具很感兴趣,我做这个分享的一个主要原因就是希望大家在有些细节中发现问题,至于我分享的问题原因,都是各种各样的小问题,有些朋友也纳闷这种错误似乎还是比较低级的,通过一般的监控都应该解决,但是确实存在,发现了解决了,就是我们的最终目的。
前几天又收到一条报警短信,提示某个备库报了ora错误,但是短信中也没有提到更多的ora信息,首先连接到主库看看是否dg出了问题,使用dgmgrl进行验证,没有发现任何问题。
然后登录到备库,查看ora日志,发现了这么一段错误内容。
Redo Shipping Client Connected as PUBLIC
-- Connected User is Valid
RFS[1873]: Assigned to RFS process 3095
RFS[1873]: Identified database type as 'physical standby'
RFS[1873]: Archived Log: '/opt/app/oracle/fra/SEXTDB3/archivelog/2015_09_22/o1_mf_1_2997_c016jv19_.arc'
Tue Sep 22 08:00:31 2015
Media Recovery Log /opt/app/oracle/fra/SEXTDB3/archivelog/2015_09_22/o1_mf_1_2997_c016jv19_.arc
Media Recovery Waiting for thread 1 sequence 2998
Tue Sep 22 09:18:01 2015
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL
Tue Sep 22 09:18:06 2015
MRP0: Background Media Recovery cancelled with status 16037
Tue Sep 22 09:18:06 2015
Errors in file /opt/app/oracle/admin/extradb/bdump/extdb_mrp0_3067.trc:
ORA-16037: user requested cancel of managed recovery operation
Recovery interrupted!
Tue Sep 22 09:18:08 2015
Errors in file /opt/app/oracle/admin/extradb/bdump/extdb_mrp0_3067.trc:
ORA-16037: user requested cancel of managed recovery operation
Tue Sep 22 09:18:08 2015
MRP0: Background Media Recovery process shutdown (extdb)
Tue Sep 22 09:18:09 2015
Managed Standby Recovery Canceled (extdb)
Tue Sep 22 09:18:09 2015
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL
Tue Sep 22 09:18:11 2015
ALTER DATABASE OPEN READ ONLY
Tue Sep 22 09:18:11 2015
从错误信息来看,似乎是日志应用的mrp终止了,但是查看后面的日志发现最新的日志已经成功应用了,如果没有其他人的操作,那么这个操作就是自动触发的了。
首先可以排除人为的操作。
我通过下面的脚本从alert日志中抓取最近几天的ORA错误情况,发现每天早晨的8点,9点左右,数据库都会启动到read only状态,然后稍过几分钟,又会切换回日志应用状态。
tail -10000 alert_extradb.log| grep -A1 -B1 "READ ONLY"
--
Sun Sep 20 09:18:05 2015
ALTER DATABASE OPEN READ ONLY
Sun Sep 20 09:18:05 2015
--
Physical standby database opened for read only access.
Completed: ALTER DATABASE OPEN READ ONLY
Sun Sep 20 09:18:05 2015
--
Sun Sep 20 16:00:05 2015
ALTER DATABASE OPEN READ ONLY
Sun Sep 20 16:00:05 2015
--
Physical standby database opened for read only access.
Completed: ALTER DATABASE OPEN READ ONLY
Sun Sep 20 16:00:05 2015
--
Mon Sep 21 08:00:10 2015
ALTER DATABASE OPEN READ ONLY
Mon Sep 21 08:00:10 2015
--
Physical standby database opened for read only access.
Completed: ALTER DATABASE OPEN READ ONLY
Mon Sep 21 08:00:11 2015
--
Mon Sep 21 09:18:10 2015
ALTER DATABASE OPEN READ ONLY
Mon Sep 21 09:18:10 2015
--
Physical standby database opened for read only access.
Completed: ALTER DATABASE OPEN READ ONLY
Mon Sep 21 09:18:10 2015
好了,基本可以定位问题不是人为触发。应该是crontab或者scheduler来触发的了。
查看crontab,查看时间点相近的配置,就发现了两条相关的记录,时间戳和ORA的时间戳是一致的。

0 8,16 * * * (/bin/bash /home/oracle/dbadmin/scripts/query/query_for_xxxxx.sh 2>&1 > /dev/null)
18 9 * * * . $HOME/.extradbprofile;$HOME/dbadmin/scripts/query_data/query_mail.sh 6563
本来问题到此就基本明白了,是因为crontab触发的查询报出的ora错误,那么为什么查询还会需要一次又一次的read only呢,还是因为这是一个10gR2的库。
有时候应用部门有这种查询的需求,但是又不能人工每天去查,就让系统每天定时触发,然后发送邮件即可。
那么我们就默认保持现状吧,查看了一下这几个脚本
dgmgrl / "edit database sextdb3 set state='READ-ONLY'"
查询部分
发送邮件
dgmgrl / "edit database sextdb3 set state='online'"
查看这几个脚本已经有好些年头了。是否业务部门还需要这样的查询,本来想联系一下他们,顺着脚本中的邮箱去查看,但是发现这几个人已经不在通讯录中了,那么这就意味着这种查询可能不再需要了。
简单的讨论和核查后,确认这两个job已经不再需要了,这样这个问题就基本解决了,早上再也没有这两个ORA报警了,想想心里又会少咯噔几下。
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
领域驱动设计(DDD)中的实体,值对象,和聚合
领域驱动设计(DDD)中的实体,值对象,和聚合
|
分布式计算 DataWorks 安全
DataWorks产品使用合集之是否支持直接从API接口采集数据
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
183 0
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
602 4
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
MarS:微软开源金融市场模拟预测引擎,支持策略测试、风险管理和市场分析
MarS 是微软亚洲研究院推出的金融市场模拟预测引擎,基于生成型基础模型 LMM,支持无风险环境下的交易策略测试、风险管理和市场分析。
388 8
MarS:微软开源金融市场模拟预测引擎,支持策略测试、风险管理和市场分析
|
11月前
|
编译器 C语言
【C语言】宏定义详解
在C语言中,宏定义是一种强大的预处理器功能,用于在编译之前对代码进行替换和条件编译。宏定义通过预处理器指令进行定义和使用,能够使代码更加灵活和可维护。本文将对C语言中的宏定义进行全面的讲解,包括各种相关的预处理器指令及其用法。
628 7
|
Linux Windows
Windows查找监听端口对应的进程及其路径
Windows查找监听端口对应的进程及其路径
357 0
|
人工智能 数据挖掘 Sentinel
Google Earth Engine ——Sentinel1/2/3/5p 影像集合介绍
Google Earth Engine ——Sentinel1/2/3/5p 影像集合介绍
302 2
Win系统 - 尚未安装,.NET Framework 4,原因是:HRESULT 0x80240037
Win系统 - 尚未安装,.NET Framework 4,原因是:HRESULT 0x80240037
1603 0
|
安全 开发工具 Python
点播和播放器下载需要的参数的区别(VideoId、AccessKeyId、AccessKeySecret、playKey、playauth)
解答参数VideoId、AccessKeyId、AccessKeySecret、playKey、playauth是什么及如何获取.
11678 0