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博客 ” ,链接:http://blog.itpub.net/35489/viewspace-1180576/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-1180576/