首页 > 代码库 > sga_target设置大于100G遇到的一个bug ORA-00064: object is too large
sga_target设置大于100G遇到的一个bug ORA-00064: object is too large
主机内存256G,sga_target准备设置为160G,DBCA创建数据库时一直报错ORA-00064: object is too large to allocate on this O/S (1,15429280)
直接使用DBCA默认参数把库建好后,再次使用命令来修改,报错依旧。经查,参考文档Database startup can fail with ORA-00064 Errors with huge sga_target of over 40Gig (文档 ID 886312.1),也就是与SGA Granule Size相关,设置_ksmg_granule_size=33554432解决此问题。
文档部分内容:
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 size needed for the new SGA size to be different than the one currently in use by the instance at the time the ALTER SYSTEM SET SGA_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) to a value which exceeds the value of the granule size that was calulcated at instance startup, then you must set the _ksmg_granule_size instance parameter as well to choose a larger granule size. As this parameter is not dynamically changeable, an instance restart is required.The following table, shows granule sizes for specific SGA sizes and releases of Oracle:
SGA size | 10g granule size | 11g granule size | 11g granule size with fix 8813366 installed |
---|---|---|---|
<= 1GB | 4MB | 4MB | 4MB |
1GB - 4GB | 16MB | 16MB | 16MB |
4GB - 8GB | 16MB | 64MB | 16MB |
8GB - 16GB | 16MB | 64MB | 32MB |
16GB - 32GB | 16MB | 256MB | 64MB |
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:
- set _ksmg_granule_size to a higher value (in this case the value was set to 32MB). When using a text parameter file, add the following 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.
sga_target设置大于100G遇到的一个bug ORA-00064: object is too large
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。