环境:windows 2008 32bit,oracle db 10.2.0.1 32bit 单机,32GB的物理内存
问题:实例启动报错:ORA-00064: object is too large to allocate on this O/S (1,4004280)
现象如下:
H:\oracle\product\10.2.0\db_1\BIN>sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 5月 25 14:40:15 2014 Copyright (c) 1982, 2005, Oracle. All rights reserved. 已连接到空闲例程。 SQL> startup nomount; ORA-00064: object is too large to allocate on this O/S (1,4004280) SQL>
问题分析:
instance 无法进入nomount状态,肯定是某些初始化参数有问题,于是检查alert日志中初始化参数的修改记录,发现如下命令:
alter system set processes=2000 scope=spfile;
于是尝试建立pfile:
H:\oracle\product\10.2.0\db_1\BIN>set nls_lang=american_america.ZHS16GBK H:\oracle\product\10.2.0\db_1\BIN>sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Sun Apr 25 15:00:45 2014 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to an idle instance. SQL> create pfile='H:\pfile20140525.ora' from SPFILE='H:\oracle\product\10.2.0\db_1\dbs\spfileorcl.ora'; File created. 修改H:\pfile20140525.ora 中的processes为1500,以该pfile启动: SQL> startup nomount pfile='H:\pfile20140525.ora'; ORACLE instance started. Total System Global Area 612368384 bytes Fixed Size 1250428 bytes Variable Size 234883972 bytes Database Buffers 369098752 bytes Redo Buffers 7135232 bytes SQL>
于是确认是processes设置过大导致的问题。后续的修改spfile中processes为1500不再描述。
总结:
1.本案例引出一个问题:
32bit windows 平台下, Oracle db 初始化参数processes最大能设置为多大?这个问题我从mos尚未找到答案。
ORA-00064: Object Is Too Large To Allocate On This O/S (Doc ID 1232463.1) 文章说,可以用ulimit -a命令查看限制,不过windows平台无此命令。
2.从本案例看来,32bit的os,不仅仅是对oracle 在sga大小上的有限制,也是对oracle 在processes参数上有限制。