ASM例項出現ORA-04031導致Instance terminated by ASMB

kunlunzhiying發表於2017-01-04

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/28211342/viewspace-2131891/,如需轉載,請註明出處,否則將追究法律責任。

相關文章