ITPUB论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
更多
查看: 3804|回复: 6

清理apache 共享内存引起的oracle宕机,有类似应用的请大家注意 [复制链接]

注册会员

老会员

精华贴数
0
技术积分
1220
社区积分
21
注册时间
2004-2-2
论坛徽章:
1
会员2007贡献徽章
日期:2007-09-26 18:42:10
发表于 2007-4-13 11:16:39 |显示全部楼层
我的平台是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机器上了,一直运行比较好;
今天早上接到信息,说新开的这个apache应用服务停止了,打开log一看,又是共享内存的问题,二话不说,把原来的脚本在系统上跑了一遍,restart apache,ok。系统可以了。
过了几分钟。问题大了,说oracle服务宕了。赶紧检查,ps -ef|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宕机了。想到刚才的操作,怀疑把oracle的共享内存也给误清理了,好在db能正常启动,把数据库启动后,检查共享内存:
[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 (<STDIN> { @a=split(/\s+/); print `ipcrm sem $a[1]`}'

如果大家谁的应用和我这个类似,一定注意。

注册会员

天天向上

精华贴数
0
技术积分
54
社区积分
0
注册时间
2006-10-8
论坛徽章:
0
发表于 2007-4-13 11:36:06 |显示全部楼层
学习...

使用道具 举报

超级版主

天下有雪

精华贴数
66
技术积分
208411
社区积分
6479
注册时间
2001-10-8
论坛徽章:
100
ITPUB元老
日期:2005-02-28 12:57:00ITPUB官方微博粉丝徽章
日期:2011-06-28 19:45:36现任管理团队成员
日期:2011-05-07 01:45:08ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52ITPUB技术丛书作者
日期:2010-09-26 15:00:232010系统架构师大会纪念
日期:2010-09-03 16:39:572010数据库技术大会纪念徽章
日期:2010-05-13 10:04:282009架构师大会纪念徽章
日期:2010-01-18 13:43:21祖国60周年纪念徽章
日期:2009-10-09 08:28:00ITPUB8周年纪念徽章
日期:2009-09-27 10:21:212009日食纪念
日期:2009-07-22 09:30:00参与2009年中国云计算大会纪念
日期:2009-06-05 10:02:28
发表于 2007-4-13 11:55:03 |显示全部楼层
这样的脚本,二话不说就跑,也太大意了。

使用道具 举报

注册会员

老会员

精华贴数
0
技术积分
1220
社区积分
21
注册时间
2004-2-2
论坛徽章:
1
会员2007贡献徽章
日期:2007-09-26 18:42:10
发表于 2007-4-13 13:10:23 |显示全部楼层
是很大意,跑的时候忘记oracle也有共享内存的事情了。

使用道具 举报

版主

版主

精华贴数
11
技术积分
33853
社区积分
3867
注册时间
2001-10-18
论坛徽章:
109
管理团队2006纪念徽章
日期:2006-04-16 22:44:452012新春纪念徽章
日期:2012-01-04 11:49:54灰彻蛋
日期:2011-12-17 23:16:55数据库板块每日发贴之星
日期:2011-03-16 01:01:02月度精华徽章
日期:2011-04-01 02:15:44SQL数据库编程大师
日期:2011-04-13 12:09:01现任管理团队成员
日期:2011-05-07 01:45:08蜘蛛蛋
日期:2011-10-18 13:05:40季节之章:夏
日期:2011-10-21 12:00:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41紫蛋头
日期:2012-01-06 21:49:51ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52
发表于 2007-4-13 13:17:20 |显示全部楼层
至少apache 和 oracle应该运行在不同用户底下,而run clear ipc 的脚本时,应该由apache用户来run,而不是由root来run

使用道具 举报

版主

会员

精华贴数
4
技术积分
21548
社区积分
2095
注册时间
2002-8-31
论坛徽章:
80
2008新春纪念徽章
日期:2008-02-13 12:43:032009新春纪念徽章
日期:2009-01-04 14:52:282010新春纪念徽章
日期:2010-01-04 08:33:082011新春纪念徽章
日期:2011-02-18 11:43:34现任管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-01-04 11:49:54
发表于 2007-4-13 13:24:01 |显示全部楼层
拿来主义的后果!

使用道具 举报

注册会员

老会员

精华贴数
0
技术积分
1220
社区积分
21
注册时间
2004-2-2
论坛徽章:
1
会员2007贡献徽章
日期:2007-09-26 18:42:10
发表于 2007-4-13 15:12:26 |显示全部楼层
最初由 rollingpig 发布
[B]至少apache 和 oracle应该运行在不同用户底下,而run clear ipc 的脚本时,应该由apache用户来run,而不是由root来run [/B]


应该由apache用户来run,而不是由root来run

这是正解。。。一直用root做事。习惯不好

使用道具 举报

相关内容推荐
您需要登录后才可以回帖 登录 | 注册

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 邮箱 虎吧 老博客 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
  
回顶部