環境: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參數上有限制。