案例环境:
服务器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