ITPub博客

首页 > 数据库 > Oracle > ASM实例出现ORA-04031导致Instance terminated by ASMB

ASM实例出现ORA-04031导致Instance terminated by ASMB

Oracle 作者:kunlunzhiying 时间:2017-01-04 16:06:47 0 删除 编辑

Oracle11.2.0.1   
使用RMAN备份,恢复了一个 36T 大小的ERP数据库, 在recover database 的时候报错,实例直接崩溃了,alert log文件:
ORA-15064: communication failure with ASM instance
ORA-04031: unable to allocate 3512 bytes of shared memory ("shared pool","unknown object","sga heap(1,0)","ASM file")
ASMB (ospid: 25034828): terminating the instance due to error 15064
ORA-1092 : opitsk aborting process
Instance terminated by ASMB, pid = 25034828

 

使用grid登入查看ASM实例: 
$ sqlplus   /  as sysasm 
SQL> select  name , state  from  v$asm_diskgroup ;
select  name , state  from  v$asm_diskgroup
                             *
ERROR at line 1:
ORA-04031: unable to allocate 3896 bytes of shared memory ("shared
pool","select  name , state  from  ...","sga heap(1,0)","kglsim object batch")


根据查询的资料,检查ASM实例的memory_target 分配。
SQL> show  parameter mem_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
memory_max_target                    big integer 384M
memory_target                           big integer 384M


根据  http://blog.itpub.net/4227/viewspace-742507/ 的说明修改memory_target大小:

根据Oracle的推荐,在11g中使用MEMORY_TARGET参数的话, 那么MEMORY_TARGET至少应该分配256M以上,而且随着DISK GROUP的容量的增长,SHARED_POOL所需要的空间也随着增加。 因此对于磁盘组空间比较大的ASM实例而言,采用默认参数作为MEMORY_TARGET是不够的。

只需要简单的调整ASM实例的MEMORY_TARGET参数,将其扩大到500M以上,就可以避免该错误。

SQL> alter system set  memory_max_target=600M SCOPE=spfile;
SQL> alter system set  memory_target=600M scope=spfile;
关闭后开启使参数生效 :
$ sqlplus   /  as sysasm
SQL> shut immediate 
SQL> startup
之后数据库开启也正常 。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28211342/viewspace-2131891/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
IT搬砖

注册时间:2014-07-28

  • 博文量
    665
  • 访问量
    568694