ORA-00064: object is too large to allocate on this O/S (1,4652840)

简介: 今天遇到 SQL> startup  ORA-00064: object is too large to allocate on this O/S (1,4652840) 平台SOLARS 10 ORACLE 10.2.0.5 64 BIT 经过测试当PROCESS达到1500左右的时候就不能启动了。
今天遇到
SQL> startup 
ORA-00064: object is too large to allocate on this O/S (1,4652840)
平台SOLARS 10 ORACLE 10.2.0.5 64 BIT
经过测试当PROCESS达到1500左右的时候就不能启动了。
开始以为是shell  LIMIT或者内核参数的信号量设置不对,但是通过查看文档,SOLARIS 10实际上不需要过多的关注信号量参数了。但是我还是进行了修改如下:
projadd -U oracle -p 1233 oracle_param 


projadd -U oracle -p 1233 oracle_param  
projadd -U oracle -p 1234 -c "oracle parameter" user.oracle 
projdel oracle_param
projmod -s -K "project.max-sem-ids=(priv,100,deny)" user.oracle
projmod -s -K "process.max-sem-nsems=(priv,3000,deny)" user.oracle  --这个实际就是信号量默认512
projmod -s -K "project.max-shm-ids=(priv,100,deny)" user.oracle
projmod -a-K "project.max-shm-memory=(priv,10g,deny)" user.oracle 
查看:
prctl -n process.max-sem-nsems -i process $$
prctl -n project.max-sem-ids -i process $$
prctl -n project.max-shm-ids -i process $$




修改过后还是不行。
查看ULIMIT -A 修改了还是不行
顺便说说修改了最大文件打开数量和堆载大小


projmod -a -K "process.max-stack-size=(basic,40960000,deny)" user.oracle
projmod -a -K "process.max-file-descriptor=(basic,65537,deny)" user.oracle


通过prctl  -i process $$可以看到所有的核心参数和资源限制
也可以查看


-bash-3.2$ more /etc/project 
system:0::::
user.root:1::::
noproject:2::::
default:3::::
group.staff:10::::
user.oracle:1234:oracle parameter:oracle::process.max-file-descriptor=(basic,65537,deny),(priv,65538,deny);process.max-sem-nsems=(priv,300,deny);process.max-stack-size
=(basic,40960,deny),(basic,40960000,deny);project.max-sem-ids=(priv,100,deny);project.max-shm-ids=(priv,100,deny)
查看其配置




最后查看ORACLE文档,并没有一个相关的说明,而在一个升级到10.2.0.2 DBUA中有部分说明如下:


'startup migrate' failed with ORA-64 while upgrading to 10.2.0.2 with DBUA (Doc ID 386855.1)

CAUSE


1. High value of oracle parameter PROCESSES


 The oracle parameter PROCESSES bigger than 1500 requests the allocation of big granule size.


2.  Low value of granule size.


The oracle hidden parameter "_ksmg_granule_size" is set based on the oracle sga size.


  -  sga_max_size   - sga_max_size > 1024M then _ksmg_granule_size = 16M


If you set a parameter that exceeds the value of the granule size that was
calculated based on the size of the sga. 


You will manually have to set the parameter _ksmg_granule_size.


  - default _ksmg_granule_size is 4M


Low value of _ksmg_granule_size can prohibit the database startup.




3. The ORA-64 error could be occured even though the big "_ksmg_granule_size" was configured in 
init.ora file.


   DBUA in 10.2.x strips out  the oracle hidden parameter while opening oracle database.
SOLUTION





reduce the oracle parameter "PROCESSES" as described in Note 310838.1


# open oracle parameter file with editor and put following line
  PROCESSES




Increase Oracle hidden parameter value of  "_ksmg_granule_size"


 1.  Increase directly the value of '_ksmg_granule_size' parameter to 16M (16777216) or 32M (33554432)


    1.1  open oracle parameter file with editor and put following line
       _ksmg_granule_size=16777216  or 33554432


    1.2 do the manual upgradation


   OR 


 2. Increase SGA size bigger than 1024M to affect granule size


   2.1 open oracle parameter file with editor and put following line
        sga_max_size = 1025M


   2.2 Continue the upgradation using DBUA or manually.




  OR


  1.3 run DBUA with -initParam flag.


       $ dbua -initParam "_ksmg_granule_size"=16777216 or 33554432


查看了文档,进行修改SGA大于1G后可以启动。


相关文章
|
JSON 数据格式 Python
TypeError: Object of type 'datetime' is not JSON serializable
TypeError: Object of type 'datetime' is not JSON serializable
136 0
|
JSON 数据格式 Python
TypeError: Object of type 'datetime' is not JSON serializable
TypeError: Object of type 'datetime' is not JSON serializable
189 0
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
108 4
|
2月前
|
Java
Java Object 类详解
在 Java 中,`Object` 类是所有类的根类,每个 Java 类都直接或间接继承自 `Object`。作为所有类的超类,`Object` 定义了若干基本方法,如 `equals`、`hashCode`、`toString` 等,这些方法在所有对象中均可使用。通过重写这些方法,可以实现基于内容的比较、生成有意义的字符串表示以及确保哈希码的一致性。此外,`Object` 还提供了 `clone`、`getClass`、`notify`、`notifyAll` 和 `wait` 等方法,支持对象克隆、反射机制及线程同步。理解和重写这些方法有助于提升 Java 代码的可读性和可维护性。
96 20
|
7月前
|
Java
Java Object 类
5月更文挑战第16天
|
4月前
|
Java
【Java基础面试二十】、介绍一下Object类中的方法
这篇文章介绍了Java中Object类的常用方法,包括`getClass()`、`equals()`、`hashCode()`、`toString()`、`wait()`、`notify()`、`notifyAll()`和`clone()`,并提到了不推荐使用的`finalize()`方法。
【Java基础面试二十】、介绍一下Object类中的方法
|
3月前
|
Python
类与面向对象编程(Object-Oriented Programming, OOP)
类与面向对象编程(Object-Oriented Programming, OOP)
25 0
|
4月前
|
前端开发 Java 编译器
【前端学java】java中的Object类和前端中的Object有什么区别(9)
【8月更文挑战第10天】java中的Object类和前端中的Object有什么区别
47 0
【前端学java】java中的Object类和前端中的Object有什么区别(9)
|
4月前
|
算法 Java
12 Java常用类(一)(内部类+object类+包装类)
12 Java常用类(一)(内部类+object类+包装类)
41 5