原创

数据库 oracle 10g 调整 process 大于6000

oracle 的内存可以按照共享和私有的角度分为系统全局区和进程全局区,也就是 SGA和 PGA(process global area or private global area)。对于 SGA 区域内的内存来说,是共享的全局的,在 UNIX 上,必须为 oracle 设置共享内存段(可以是一个或者多个),因为 oracle 在UNIX 上是多进程;而在 WINDOWS 上 oracle 是单进程(多个线程),所以不用设置共享内存段。PGA 是属于进程(线程)私有的区域。在 oracle 使用共享服务器模式下(MTS),PGA中的一部分,也就是 UGA 会被放入共享内存 large_pool_size 中。


数据库环境:oracle 10.2.0.4,解决问题:调整process 参数至7000

查看当前的连接数,可以用select count(*) from v$process;

设置的最大连接数(默认值为150)select value from v$parameter where name = ‘processes’;

修改最大连接数alter system set processes = 300 scope = spfile;


执行命令如下:

SQL> alter system set processes=7000 scope=spfile;
SQL>shutdown immediate
SQL> startupORA-00064: object is too large to allocate on this O/S (1,18055832)

查看metalink 文章,发现在10g环境中,process大于6000,需要设置隐含参数 _ksmg_granule_size 调整至32M


参考:

ORA-00064 Error Reported After Increasing Processes Parameter value (Doc ID 1457812.1)


解决办法:

图片.png


原因:10g环境中,_ksmg_granule_size最大为16M。

图片.png


名词解释

SGA:SystemGlobal Area是OracleInstance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。

共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,主要包括:Librarycache(共享SQL区)和Datadictionarycache(数据字典缓冲区)。 共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息。

缓冲区高速缓存:DatabaseBufferCache用于缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能。

大型池:Large Pool是SGA中一个可选的内存区域,它只用于shared server环境。

Java池:Java Pool为Java命令的语法分析提供服务。

PGA:ProcessGlobal Area是为每个连接到Oracledatabase的用户进程保留的内存。

关注下方微信公众号“Java精选”(w_z90110),回复关键字领取资料:如MysqlHadoopDubboCAS源码等等,免费领取视频教程、资料文档和项目源码。

涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、JavaPythonRedis缓存、Spring源码、各大主流框架、Web开发、大数据技术、StormHadoopMapReduceSparkElasticSearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++.NETLinuxMysqlOracleNoSQL非关系型数据库、运维等。

评论

分享:

支付宝

微信