ITPUB??ì3
ITPUB论坛 » Oracle数据库管理 » 清理apache 共享内存引起的oracle宕机,有类似应用的请大家注意

标题: 清理apache 共享内存引起的oracle宕机,有类似应用的请大家注意
离线 shangdi
老会员



精华贴数 0
个人空间 0
技术积分 1158 (1741)
社区积分 21 (8363)
注册日期 2004-2-2
论坛徽章:1
会员2007贡献徽章     
      

发表于 2007-4-13 11:16 
清理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机器上了,一直运行比较好;
今天早上接到信息,说新开的这个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]`}'

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


只看该作者    顶部
离线 yukeqing
天天向上



精华贴数 0
个人空间 0
技术积分 54 (28940)
社区积分 0 (1146494)
注册日期 2006-10-8
论坛徽章:0
      
      

发表于 2007-4-13 11:36 
学习...


__________________
做个有心人,时时超越自我!
只看该作者    顶部
在线/呼叫 eygle
天下有雪


精华贴数 65
个人空间 0
技术积分 207428 (1)
社区积分 6461 (273)
注册日期 2001-10-8
论坛徽章:71
现任管理团队成员ITPUB元老ITPUB维基人参与2009年中国云计算大会纪念ITPUB北京2009年会纪念徽章八级虎吧徽章
生肖徽章2007版:龙生肖徽章2007版:蛇生肖徽章2007版:虎生肖徽章2007版:鼠生肖徽章2007版:猴生肖徽章:蛇

发表于 2007-4-13 11:55 
这样的脚本,二话不说就跑,也太大意了。


__________________
只看该作者    顶部
离线 shangdi
老会员



精华贴数 0
个人空间 0
技术积分 1158 (1741)
社区积分 21 (8363)
注册日期 2004-2-2
论坛徽章:1
会员2007贡献徽章     
      

发表于 2007-4-13 13:10 
是很大意,跑的时候忘记oracle也有共享内存的事情了。


只看该作者    顶部
离线 rollingpig
版主


精华贴数 6
个人空间 103
技术积分 28536 (33)
社区积分 2160 (663)
注册日期 2001-10-18
论坛徽章:33
现任管理团队成员2006年度最佳技术回答ITPUB元老ITPUB北京2009年会纪念徽章ITPUB北京九华山庄2008年会纪念徽章生肖徽章2007版:龙
生肖徽章2007版:鼠生肖徽章2007版:狗生肖徽章2007版:牛生肖徽章2007版:鼠生肖徽章2007版:蛇IT宝贝

发表于 2007-4-13 13:17 
至少apache 和 oracle应该运行在不同用户底下,而run clear ipc 的脚本时,应该由apache用户来run,而不是由root来run


__________________
欢迎访问乐恒的空间(3/15日更新靓照15张)
乐乐半岁了~~

提问的智慧 for Oracle[展开版]
提问的智慧Oracle版
0。尝试在google,论坛,metalink,online document里搜索。
1。写清楚你的执行log,报错信息,写清楚DB version , OS
2。Instance 方面的问题,请贴出alertlog
3。network的问题,贴出server的listener.ora , sqlnet.ora 并运行lsnrctl service, 贴出client的tnsnames.ora , sqlnet.ora ,并运行tnsping
4。DB总体性能问题,请于peak time做statspack,并上传statspack report。同时附上CPU/MEM配置,以及CPU IDLE/free menory的情况
5。SQL性能问题,列出当前SQL,以及PLAN。同时应提供表结构,index情况,Table的record数。CBO/RBO,table是否analyze等信息。
6。确保你的问题是Oracle相关。
欢迎访问乐恒的空间
只看该作者    顶部
离线 Toms_zhang
会员


精华贴数 3
个人空间 12
技术积分 18969 (57)
社区积分 2020 (692)
注册日期 2002-8-31
论坛徽章:56
现任管理团队成员2009新春纪念徽章    
      

发表于 2007-4-13 13:24 
拿来主义的后果!


__________________
托马斯张MSN:toms_zrp@live.cn  我的BLOG:http://tomszrp.itpub.net
只看该作者    顶部
离线 shangdi
老会员



精华贴数 0
个人空间 0
技术积分 1158 (1741)
社区积分 21 (8363)
注册日期 2004-2-2
论坛徽章:1
会员2007贡献徽章     
      

发表于 2007-4-13 15:12 


QUOTE:
最初由 rollingpig 发布
至少apache 和 oracle应该运行在不同用户底下,而run clear ipc 的脚本时,应该由apache用户来run,而不是由root来run

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

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


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰网域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:060528号 联系我们 法律顾问