代码改变世界

ORA-00821: Specified value of sga_target 3072M is too small, needs to be at least 12896M

2016-12-15 10:23  潇湘隐者  阅读(13496)  评论(1编辑  收藏  举报

    在测试PlateSpine克隆的数据库服务器时,由于资源有限,克隆过来的数据库服务器只给了9G的内存,结果在测试时,老是会出现OOMkiller导致宕机,即out of memory killer,是linux下面当内存耗尽时的的一种处理机制。当内存较少时,OOM会遍历整个进程链表,然后根据进程的内存使用情况以及它的oom score值最终找到得分较高的进程,然后发送kill信号将其杀掉。 于是调整了一下sga_target和sga_max_size这两个参数,结果重启的时候悲剧了:

 

[oracle@mylnx01 ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 10.2.0.5.0 - Production on Thu Dec 15 09:28:11 2016
 
Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
 
Connected to an idle instance.
 
SQL> startup
ORA-00821: Specified value of sga_target 3072M is too small, needs to be at least 12896M
SQL> startup nomount
ORA-00093: _shared_pool_reserved_min_alloc must be between 4000 and 0
SQL>

clip_image001

 

出现这个这个错误,突然想起来这个服务器设置过shared_pool_size参数,于是生成pfile,检查initGSP.ora,如下所示,

 

SQL> create pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initGSP.ora' from spfile;

File created.

clip_image002

 

手工将.shared_pool_size设置为0, 然后启动数据库实例,问题解决。如下所示:

 
SQL> startup pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initGSP.ora'
ORACLE instance started.
 
Total System Global Area 3221225472 bytes
Fixed Size                  2099752 bytes
Variable Size             637535704 bytes
Database Buffers         2533359616 bytes
Redo Buffers               48230400 bytes
Database mounted.
Database opened.
SQL> exit