Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24855777
  • 博文数量: 271
  • 博客积分: 10025
  • 博客等级: 上将
  • 技术积分: 3358
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-12 15:28
文章分类

全部博文(271)

文章存档

2010年(71)

2009年(164)

2008年(36)

我的朋友

分类:

2009-02-20 16:40:58

        数据库总喜欢在放假的时候出问题,上个周末一个CP方平台又毫不客气的当掉。以前这些事情有老大主动处理,现在只能指望自己了。
       所有的业务程序提示错误是"ORA-24324: service handle not initialized",看来oracle服务挂了,到数据服务器上ps一下,发现还残留有几个oracle进程。用sqlplus连接失败,提示“ORA-04031: unable to allocate 4200 bytes of shared memory ("sharedpool","TRIGGER$","sga heap","state objects")”。执行svrmgrl打算用shutdown immediate强行中断oracle,居然无效。
        好歹还有互联网可以用吧,得到以下参考文选:
       

       看来很幸运,ORA-04031确实是个很常见的问题。根据提示在svrmgrl里用shutdown abort中断服务,再用startup启动oracle,短信平台暂时又正常运行了。不过这只是治标,我总得知道问题的原因吧。于是又找到以下文章:
      
http://afy.itpub.net/post/81/102599  这位先驱很详细的罗列了导致ORA_04031的几个原因。我对号入坐。
      SQL> show parameter shared_pool_size;
      查看到shared_pool_size=31457280,果然是默认的初始值。看来是因为shared_pool_size太小?那就来扩充吧。

     SQL> alter system set shared_pool_size=100m scope=spfile;
     ERROR at line 1:
     ORA-02095: specified initialization parameter cannot be modified
     这个参数不能修改?来看一下shared_pool_size参数的属性

    SQL> select * from v$parameter where name ='shared_pool_size';
    得到ISMODIFIED=false

       看来是没指望通过sqlplus来修改这个参数了。好歹可以修改配置脚本吧?本数据库实例的配置脚本名字叫init*.ora,其中*用实例名替代
       #locate init*.ora    找到配置文件,将其中的shared_pool_size = 104857600,保存。
      通过svrmgrl重新启动oracle,shared_pool_siz新参数值生效
      具体效果,有待继续观察。

阅读(3068) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~