DBA共享内存无法正常释放的处理

上传人:m**** 文档编号:56435074 上传时间:2018-10-12 格式:DOCX 页数:4 大小:15.18KB
返回 下载 相关 举报
DBA共享内存无法正常释放的处理_第1页
第1页 / 共4页
DBA共享内存无法正常释放的处理_第2页
第2页 / 共4页
DBA共享内存无法正常释放的处理_第3页
第3页 / 共4页
DBA共享内存无法正常释放的处理_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《DBA共享内存无法正常释放的处理》由会员分享,可在线阅读,更多相关《DBA共享内存无法正常释放的处理(4页珍藏版)》请在金锄头文库上搜索。

1、DBADBA 共享内存无法正常释放的处理共享内存无法正常释放的处理在数据库启动之后,需要从操作系统上分配共享内存和信号量(Semaphore)资源,而在某些情况下,数据库异常关闭后,这些资源有可能无法正常释放,则在下次启动时,数据库可能遭遇错误,无法正常启动。 在一个客户环境(操作系统为 SUN Solaris 平台)中出现了 ORA-04031 错误之后,使用了shutdown abort 选项关闭了数据库: Sun Jul 19 19:20:23 2009 Errors in file /ora9i/oracle/admin/ora9i/bdump/ora9i1_j000_14337.tr

2、c: ORA-12012: error on auto execute of job 721 ORA-04031: unable to allocate 4088 bytes of shared memory (“shared pool“,“STANDARDSYS“,“PL/SQL MPCODE“,“BAMIMA: Bam Buffer“) Sun Jul 19 19:24:24 2009 Errors in file /ora9i/oracle/admin/ora9i/bdump/ora9i1_j000_17497.trc: ORA-12012: error on auto execute

3、of job 721 ORA-04031: unable to allocate 4088 bytes of shared memory (“shared pool“,“STANDARDSYS“,“PL/SQL MPCODE“,“BAMIMA: Bam Buffer“) Sun Jul 19 19:26:56 2009 Shutting down instance (abort) License high water mark = 1012 Instance terminated by USER, pid = 19157 接下来的尝试启动失败,告警日志记录了如下所示的错误信息: Sun Jul

4、 19 19:35:27 2009 棋牌评测网 http:/Errors in file /ora9i/oracle/admin/ora9i/udump/ora9i1_ora_25055.trc: ORA-27154: post/wait create failed ORA-27300: OS system dependent operation:semget failed with status: 28 ORA-27301: OS failure message: No space left on device ORA-27302: failure occurred at: sskgpsem

5、sper 注意以上信息中,提示失败的操作是 semget,其实如果仔细阅读这个提示,就可以获知错误的真正原因,在操作系统可以通过 man semget 查看手册,了解出错的真实原因。以下输出告诉我们,semget 的任务是获得信号量集(get set of semaphores),所以也就可以知道之前的提示 No space left on device 并不是指存储空间,而是信号量资源: oracledb-server # man semget NAMEsemget - get set of semaphores SYNOPSIS #include #include #include int

6、 semget(key_t key, int nsems, int semflg); DESCRIPTION The semget() function returns the semaphore identifier associated with key. 知道了这个原因以后,就可以通过 ipcs 命令来找到数据库的信号量资源占用,该主机上有三个数据库,Oracle 用户的信号量集就是没有正常释放的那个: oracledb-server # ipcs -sa IPC status from as of Sun Jul 19 22:01:09 CST 2009 T ID KEY MODE O

7、WNER GROUP CREATOR CGROUP NSEMS OTIME CTIME Semaphores: s 851977 0x462fcb40 -ra-r- orabil9 dbabil9 orabil9 dbabil9 604 22:07:58 12:54:47 s 1769482 0x6b997db0 -ra-r- oracle9 dba9 oracle9 dba9 2004 22:07:15 17:03:39 s 1245195 0x8ea0d4d4 -ra-ra- oracle dba oracle dba 2004 no-entry 19:27:06 接下来就可以通过操作系统

8、的 ipcrm 命令来移除信号量集: oracledb-server # man ipcrm 移动电玩城 http:/NAMEipcrm - remove a message queue, semaphore set or shared memory id 执行过程如下所示: oracledb-server # ipcrm -s 1245195 oracledb-server # ipcs -sa IPC status from as of Sun Jul 19 22:09:01 CST 2009 T ID KEY MODE OWNER GROUP CREATOR CGROUP NSEMS OTIME CTIME Semaphores: s 851977 0x462fcb40 -ra-r- orabil9 dbabil9 orabil9 dbabil9 604 22:07:58 12:54:47 s 1769482 0x6b997db0 -ra-r- oracle9 dba9 oracle9 dba9 2004 22:07:15 17:03:39 完成这个操作之后,数据库就可以正常启动了。这个案例告诉我们的是,如果采用特殊手段来进行维护和管理,那么必须清楚这些操作可能带来的影响和后果。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 数据库

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号