ORA-00445报错问题的处理

简介: 一、问题背景: 操作系统信息:Linux x86-64 数据库信息:ORACLE 11.2.0.3-64 问题出现前系统的变更:由于业务的需要,每天定时把本机的备份传输到本地的另外一台LINUX测试服务器,并在那台服务器上面实现自动恢复,实现测试库的数据保证和正式库的数据同步; 二、问题症状: 在检查alert报告的时候,发现了如下的报错: 虽然数据库并没有宕机,但是MMON停止了工作82800s,停止了AWR报告和ASH的收集的工作,调优一下就抓瞎了。

一、问题背景:

操作系统信息:Linux x86-64

数据库信息:ORACLE 11.2.0.3-64

问题出现前系统的变更:由于业务的需要,每天定时把本机的备份传输到本地的另外一台LINUX测试服务器,并在那台服务器上面实现自动恢复,实现测试库的数据保证和正式库的数据同步;

 

二、问题症状:

在检查alert报告的时候,发现了如下的报错:

 

虽然数据库并没有宕机,但是MMON停止了工作82800s,停止了AWR报告和ASH的收集的工作,调优一下就抓瞎了。

 

三、问题的原因

在metalink上面搜索了一下,找到了问题的原因及方法,现在和大家分享,原因如下:

Recent linux kernels have a feature called Address Space Layout Randomization (ASLR).ASLR is a feature that is activated by default on some of the newer linux distributions.It is designed to load shared memory objects in random addresses.In Oracle, multiple processes map a shared memory object at the same address across the processes.With ASLR turned on Oracle cannot guarantee the availability of this shared memory address.This conflict in the address space means that a process trying to attach a shared memory object to a specific address may not be able to do so, resulting in a failure in shmat subroutine.However, on subsequent retry (using a new process) the shared memory attachment may work.The result is a "random" set of failures in the alert log.

linux有个新特性Address Space Layout Randomization,该特性在最新的linux版本中都是激活的,oracle多个进程在进程上映射一个共享的内存对象,但是在ASLR中ORACLE并不能保证这些共享内存是有效的,在内存紧张的时候就会oracle就会出现相应的报警;

 

四、问题的解决

检查randomize参数值

# /sbin/sysctl -a | grep randomize

kernel.randomize_va_space = 1

 

关闭randomize特性add/modify this parameter in /etc/sysctl.confkernel.randomize_va_space=0kernel.exec-shield=0

修改以上参数后,需要重新启动操作后生效。

 

总结:在alert中发现每次问题出现的时间都是在凌成的3点左右,出现问题的时候数据库的压力应该是很小的,所以应该是操作系统的压力导致的内存分配问题,而操作系统有可能的原因就是定时向测试机传输备份;

 

虽然问题通过修改参数后可以解决,但是修改该参数会不会导致系统其他bug的发生的,也要运行一段时间过后才能知道。

顺便发句牢骚:dba有时候工作看起来挺轻松的,但是一旦出现问题,就要从方方面面去考虑问题,保证系统的安全稳定运行。

 

参考文档、链接:

ORA-00445: Background Process "xxxx" Did Not Start After 120 Seconds (文档 ID 1345364.1)

https://support.oracle.com/epmos/faces/SearchDocDisplay?_adf.ctrl-state=yzplrxcbb_9&_afrLoop=676875434563845#aref_section26

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++本文作者:JOHNORACLE

技术博客:ORACLE 猎人笔记               数据库技术群:367875324 (请备注ORACLE管理 )  

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

相关文章
|
Oracle 关系型数据库 数据库
实战篇:Oracle 数据坏块的 N 种修复方式
实战篇:Oracle 数据坏块的 N 种修复方式
实战篇:Oracle 数据坏块的 N 种修复方式
|
12月前
|
安全 关系型数据库 MySQL
如何将数据从MySQL同步到其他系统
【10月更文挑战第17天】如何将数据从MySQL同步到其他系统
1553 0
|
存储 SQL Oracle
Oracle使用expdp/impdp实现全库导入导出的整体流程
Oracle的全库导入,首先一点必须先创建数据库,创建了数据库,才能往该数据库导入所有数据。相对来说,使用Oracle进行数据导入导出还很有些“麻烦”的,大多数资料上来就是......
12664 0
Oracle使用expdp/impdp实现全库导入导出的整体流程
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
326 2
基于Java+Springboot+Vue开发的服装商城管理系统
|
12月前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
16473 31
|
算法 数据可视化 前端开发
第三代软件开发-加载本地字体库
欢迎来到我们的 QML & C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。 在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件,我们能够迅速开发出丰富多样的界面效果和动画效果。同时,我们利用 QML 强大的集成能力,轻松将 C++ 的底层逻辑和数据模型集成到前端界面中。 在后端方面,我们使用 C++ 编写高性能的算法、数据处理和计算逻辑。C++ 是一种强大的编程语言,能够提供卓越的性能和可扩展性。我们的团队致力于优化代码,减少资
|
Oracle 安全 关系型数据库
Oracle安装部署再也不用头疼了,分享一个实用的一键部署脚本,建议收藏!
Oracle安装部署再也不用头疼了,分享一个实用的一键部署脚本,建议收藏!
316 0
|
存储 Oracle 关系型数据库
RAC创建ASM磁盘组时配置多路径和UDEV
RAC创建ASM磁盘组时配置多路径和UDEV
2888 7
Echarts实战案例代码(42):饼图不同区域的渐变实现的解决方案
Echarts实战案例代码(42):饼图不同区域的渐变实现的解决方案
458 0