案例環境:
服務器A:
操作系統 : Red Hat Enterprise Linux ES release 4 (Nahant Update 6)
數據庫版本: Oracle Database 10g Release 10.2.0.4.0 32bit Production
服務器B:
操作系統 : Oracle Linux Server release 5.7
數據庫版本: Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
案例介紹:
使用RMAN將服務器A的備份還原到服務器B過程中,從備份還原了spfile後,啟動數據庫時遭遇如下錯誤信息
SQL> startup nomount pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initepps.ora';
ORA-32006: PARALLEL_AUTOMATIC_TUNING initialization parameter has been deprecated
ORA-27102: out of memory
Linux-x86_64 Error: 12: Cannot allocate memory
SQL>
出現這個錯誤是因為在服務器A的數據庫實例中開啟了這個參數,但是這個參數在ORACLE 10g中已經過時了,所以只需要在initepps.ora中將其刪除即可。如下所示
那麼另外出現ORA-27102: out of memory Linux-x86_64 Error: 12: Cannot allocate memory,這個是因為服務器A的數據庫實例中設置了lock_sga為true值
Linux操作系統對每一個任務在物理內存中能夠鎖住的最大值做了限制。服務器A的max locked memeory值為2097152
服務器B的max locked memeory值為64kb,
一個任務可以鎖住的物理內存最大值是64kbytes,這麼小的值根本無法滿足我們SGA的幾G大小需求,所以解決上面問題有兩種方法:
1:如果是為了快速解決這個問題, 可以在initepps.ora中將lock_sga設置為false,然後使用start nomout 啟動。
2: 修改操作系統的max locked memory參數,將其修改為足夠大到能容納sga大小或為無限大
參考資料:
http://blog.itpub.net/519536/viewspace-623128
http://blog.itpub.net/26015009/viewspace-1176889