Database startup can fail with ORA-00064 Errors with huge sga_target of over 40Gig (Doc ID 886312.1)
Modified: Mar 7, 2012 Type: PROBLEM
In this Document Symptoms Changes Cause Solution References
APPLIES TO:
Oracle Server - Enterprise Edition - Version: 10.2.0.4 to 11.2.0.3 - Release: 10.2 to 11.2This problem can occur on any platform.
SYMPTOMS
Attempting to start the database with SGA_TARGET of 100GB (with a total of about 500GB of physical memory available) can fail with:
ORA-00064: object is too large to allocate on this O/S (1,15429280)
CHANGES
The SGA_TARGET instance parameter has been dynamically increased to a value higher than 40GB, like in:
SQL> alter system set sga_target=100G;
SQL> shutdown
SQL> startup
ORA-00064: object is too large to allocate on this O/S (1,15429280)
CAUSE
The cause of this problem has been identified in Bug:5051962, which has been closed as not-a-bug. It is caused by the granule sizeneeded for the new SGA size to be different than the one currently in use by the instance at the time the ALTER SYSTEM SETSGA_TARGET command is run.
SOLUTION
This is expected behaviour: the granule size is set based on the size of the SGA. If you set a SGA parameter (such as SGA_TARGET) toa value which exceeds the value of the granule size that was calulcated at instance startup, then you must set the _ksmg_granule_sizeinstance parameter as well to choose a larger granule size. As this parameter is not dynamically changeable, an instance restart isrequired.
The following table, shows granule sizes for specific SGA sizes and releases of Oracle:
SGA size 10g granule size 11g granule size 11ggranulesizewith fix8813366installed
<= 1GB 4MB 4MB 4MB
1GB - 4GB 16MB 16MB 16MB
4GB - 8GB 16MB 64MB 16MB
8GB - 16GB 16MB 64MB 32MB
16GB - 32GB 16MB 256MB 64MB
Document 886312.1 https://support.oracle.com/epmos/faces/DocContentDisplay?_adf.ctrl-stat...
1 of 2 6/17/2014 8:32 AM
32GB - 64GB 16MB 256MB 128MB
64GB - 128GB 16MB 512MB 256MB
128GB - 256GB 16MB 512MB 512MB
> 256GB 16MB 512MB 512MB
See also document:947152.1 for details on the granule size and its impact.
The following SQL statement can be used to check the actual granule size in use by the instance:
SQL> select bytes from v$sgainfo where name like 'Granule Size';
So in order to implement the solution for the issue at hand, either:
set SGA_TARGET to a value less than or equal to the previous one, or:1.set _ksmg_granule_size to a higher value (in this case the value was set to 32MB). When using a text parameter file, add thefollowing parameter:
_ksmg_granule_size=33554432
When using a server parameter file, issue:
alter system set "_ksmg_granule_size"=33554432 scope=spfile;
In either case, restart the instance for the changes to take effect.
2.
REFERENCES
BUG:5051962 - ORA-64 OBJECT IS TOO LARGE TO ALLOCATE ON THIS O/S (1,4740456)
Document 886312.1 https://support.oracle.com/epmos/faces/DocContentDisplay?_adf.ctrl-stat...
2 of 2 6/17/2014 8:32 AM