oracle12 共享内存不存在,DBA警世录:Oracle的共享内存段
DBA警世录:Oracle的共享内存段
最近看到ITPUB上有这样一个帖子,觉得有点意思,收录一下,以为借鉴。
这位朋友的Apache和Oracle运行在同一台主机上:平台是redhat as 3 ,oracle 9204.
其他应用是apache,resin等。
因为以前发现apache运行时间长以后会出现共享内存不足的错误,具体错误信息如下:
[Fri Apr 13 06:00:03 2007] [error] shm.create(): error creating shm 2 No such file or directory
[Fri Apr 13 06:00:03 2007] [error] shm.create(): error creating shm /home/apache/logs/shm.file
[Fri Apr 13 06:00:03 2007] [warn] pid file /home/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Fri Apr 13 06:00:03 2007] [emerg] (28)No space left on device: Couldn't create accept lock
为了解决这个问题,这位同学的解决方法是:因此,我写了一个脚本,来定时检测并清理。一直很有效。
当Apache和Oracle跑在同一台主机上时,这个脚本就出现了Bug:前一段时间,新开了一个小应用,也是apache的应用,由于没地方放了,就放到oracle机器上了,一直运行比较好;
今天早上接到信息,说新开的这个apache应用服务停止了,打开log一看,又是共享内存的问题,二话不说,把原来的脚本在系统上跑了一遍,restart apache,ok。系统可以了。
过了几分钟。问题大了,说oracle服务宕了。赶紧检查,ps -ef|oracle 服务都没了
由于脚本中缺少必要的判断,Oracle的共享内存段也别清除,所以Oracle数据库也挂了,alterlog文集中记录了如下信息:Errors in file /opt/oracle/admin/sc1/bdump/sc1_reco_5195.trc:
ORA-27157: OS post/wait facility removed
ORA-27300: OS system dependent operation:semop failed with status: 43
ORA-27301: OS failure message: Identifier removed
ORA-27302: failure occurred at: sskgpwwait1
Fri Apr 13 10:10:46 2007
Errors in file /opt/oracle/admin/sc1/bdump/sc1_smon_5193.trc:
ORA-27157: OS post/wait facility removed
ORA-27300: OS system dependent operation:semop failed with status: 43
ORA-27301: OS failure message: Identifier removed
ORA-27302: failure occurred at: sskgpwwait1
Fri Apr 13 10:10:46 2007
RECO: terminating instance due to error 27157
Fri Apr 13 10:10:46 2007
Errors in file /opt/oracle/admin/sc1/udump/sc1_ora_23824.trc:
ORA-27153: wait operation failed
ORA-27300: OS system dependent operation:semop failed with status: 22
ORA-27301: OS failure message: Invalid argument
ORA-27302: failure occurred at: sskgpwwait2
Fri Apr 13 10:10:46 2007
Errors in file /opt/oracle/admin/sc1/bdump/sc1_lgwr_5189.trc:
Oracle数据库是需要再系统上分配共享内存段的,这个是基本的常识,在故障之后,这位同学才想起来:[root@oracle]# ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
0x00000000 4849664 nobody 600 1
0x00000000 4882433 nobody 600 1
0x00000000 4915202 nobody 600 1
0x00000000 4947971 nobody 600 1
0x00000000 4980740 nobody 600 1
0xbeae576c 5111813 oracle 640 201
0xbeae576d 5144582 oracle 640 201
0xbeae576e 5177351 oracle 640 201
0xbeae576f 5210120 oracle 640 201
0xbeae5770 5242889 oracle 640 201
0x00000000 5275658 nobody 600 1
0x00000000 5308427 nobody 600 1
0x00000000 5341196 nobody 600 1
0x00000000 5373965 nobody 600 1
0x00000000 5406734 nobody 600 1
0x00000000 5439503 nobody 600 1
0x00000000 5472272 nobody 600 1
0x00000000 5505041 nobody 600 1
果然有oracle的共享内存,而我的脚本没有判断。如果只是删除apache用户的共享内存,可以这样
ipcs -s | grep apache | perl -e 'while () { @a=split(/\s+/); print `ipcrm sem $a[1]`}'
如果大家谁的应用和我这个类似,一定注意。
其实这个故障还是一个低价的故障,首先如果我们在不同的服务器上运行同一个脚本,严谨的做法是需要经过检查、测试,以确认其正常运行性,未经过测试靠猜想是不值得信任的。
其次,作为严谨的一个方面,权限及运行脚本的用户身份是需要明确的,root用户执行任何操作都相当危险,应该慎之又慎。我在有些习惯DBA需要养成一文中对这方面曾有探讨。
话又说回来,如果这是一个重要的业务数据库,这样的操作引发的故障将是极为恐怖的(当然重要的系统这样的错误基本上也不会发生),所以作为一个DBA应该对自己的行为三思、多思而后行。
-The End-
By eygle on 2007-04-16 11:59 |
Comments (2) |
Beginner | 1413 |
2 Comments
在apache 上运行该脚本后,仍然需要重新启动apache吧,如果是这样的化,为什么不直接reload apache服务呢,比如凌晨3:00的时候?
ipcs -s 显示的是信号量,不是共享内存吧
ipcs -m才是共享内存
oracle12 共享内存不存在,DBA警世录:Oracle的共享内存段相关推荐
- DBA警世录:备份重于一切
1.备份重于一切我们必需知道,系统总是要崩溃的,没有有效的备份只是等哪一天死!我经常开玩笑的说,唯一会使DBA在梦中惊醒的就是,没有有效的备份. 2.三思而后行 think thrice before ...
- 在Oracle 11g中用看Oracle的共享内存段---------IPCS
很早之前,在一次讲课了,用了命令ipcs,发现oracle的共享内段好小,如下: oracle@mydb ~]$ ipcs -a------ Shared Memory Segments ------ ...
- DBA备录_ORA-24247_网络访问被访问控制列表 (ACL) 拒绝
DBA备录_ORA-24247_网络访问被访问控制列表 (ACL) 拒绝 note-taker:Ethan_Yangrecording time: 2019/06/14number of docs:1 ...
- Delphi7 内存管理及 FastMM 研究 (对于EXE和DLL内存共享很有用) .
[转] Delphi7 内存管理及 FastMM 研究 (对于EXE和DLL内存共享很有用) 故国之晚秋 发表于2010-12-06 19:34 浏览(32) 评论(0) 分类: 我的日记 ...
- [转]Oracle DB管理内存
• 描述SGA 中的内存组件 • 实施自动内存管理 • 手动配置SGA 参数 • 配置自动PGA 内存管理 内存管理:概览 DBA 必须将内存管理视为其工作中至关重要的部分,因为: • 可用内存空间量 ...
- oracle启用amm,【内存管理】Oracle AMM自动内存管理详解
一. Oracle 的三种内存管理方式 oracle 内存管理有三种方式,每一个 instance 只能够选择一种.这三种管理方式分别是 AMM 自动内存管理( Automatic Memory Ma ...
- oracle内存管理模式amm,Oracle 11g自动内存管理(AMM)相关的初始化参数
Oracle对内存的管理越来越趋向智能化.自动化,从9i通过PGA_AGGREGATE_TARGET参数实现PGA的自动管理,10g通过Automatic Shared Memory Manageme ...
- 【Android 内存优化】使用 Memory Analyzer ( MAT ) 工具分析内存 ( MAT 工具使用 | 最大对象 | 类实例个数 | 引用与被引用 | GC Roots 最短链 )
文章目录 一. 内存中最大的对象 二. 查看每个类的对象实例的个数 三. 查看对象的引用与被引用 四. 查看对象到 GC Roots 的最短距离 1. 选择 Merge Shortest Paths ...
- Oracle 自己主动内存管理 SGA、PGA 具体解释
ASMM自己主动共享内存管理: 自己主动依据工作量变化调整 最大程度地提高内存利用率 有助于消除内存不足的错误 SYS@PROD>show parameter sga NAME ...
最新文章
- 开源自动化机器学习框架
- centos上tensorflow一键安装脚本
- android应用程序的混淆打包
- 【python数据挖掘课程】十一.Pandas、Matplotlib结合SQL语句可视化分析
- slf4j介绍以及实现原理窥探
- 论文浅尝 - AAAI2020 | 通过句子级语义匹配和答案位置推断改善问题生成
- Flutter 开发应用第一个页面
- eclipse-阶段四-Server Tomcat v8.5 Server at localhost failed to start.
- 通过反射获取类的完整结构(1)--属性方法
- 个人取得工资、薪金所得应当如何缴纳个人所得税
- keil软件仿真打印输出配置
- 高等数学|微积分(上)知识点总结
- 【学习笔记】seckill-秒杀项目--(6)秒杀功能
- k8s服务器修改ip,k8s的kubeadm的master更换ip
- 斐讯路由器怎么设置虚拟服务器,斐讯无线路由器设置教程图解
- 《MacTalk 跨越边界》一一1.1 40岁了,还有没有路走?
- 数据库:一条sql语句查询每门课程都大于80分的学生姓名
- 专访Women in AI学者黄惠:绘图形之梦,寻突破之门
- [CTSC2016]时空旅行(线段树+凸包)
- 速算24点(C++)