2024年2月8日发(作者:)

Oracle参数设置

ns

在初始化参数所设定的限制中,最为人所知的估计就是sessions和processes

Sessions 参数指定了一个 Instance中能够同时存在的sessions数量,或者说,就是能同时登陆到数据库的并发用户数。通常,我们设定这个数字时需要考虑我们可能会有多少个同时连接到数据库的并发用户,并加上后台进程的进程数,最后乘与1.1.

比如说,估计系统中可能会同时有100个用户连接到数据库,那么,你的session最少应该为

(100 + 10 ) * 1.1 = 121

当数据库连接的并发用户已经达到这个值时,又有新session连进来,就会报错

00018, 00000, "maximum number of sessions exceeded"

// *Cause: All session state objects are in use.

// *Action: Increase the value of the SESSIONS initialization parameter.

2. Processes

和Sessions是类似的是processes这个参数。

Processes参数指定了Instance在OS层面所能同时运行的进程数。基于和sessions设定同样的考虑,我们在设定processes时,也应考虑我们可能会有多少个同时连接到数据库的并发用户,并加上后台进程的进程数。

当然,在MTS(shared server)的配置下,这个值的确定会有所不同。应该是普通后台进程+最大共享服务器的进程数(max_shared_servers) + 最大Dispatcher进程数(max_dispatchers).

另外,由于在window平台中,Oracle是以单一一个进程的形式存在,Processes

参数变成了限制Oracle进程里的线程数了。

当Oracle需要启动新的process而又已经达到processes参数时,就会报错:

00020, 00000, "maximum number of processes (%s) exceeded"

// *Cause: All process state objects are in use.

// *Action: Increase the value of the PROCESSES initialization parameter.

_pool_size

分配给数据字典,SQL和PL/SQL的内存

参数类型: 字符型

语法:SHARED_POOL_SIZE = integer [K | M]

参数类: 静态

默认值: 64位为 64MB;否则16MB

值范围: 300KB到操作系统许可数

SHARED_POOL_SIZE以字节指定共享池大小。共享池包括光标、存储过程、控制结构及其它结构。PARALLEL_AUTOMATIC_TUNING = FALSE,Oracle也允许并行从共享池执行信息。较大的值可以改善性能。较小的值可以节约内存。

5.1.2 共享池(SHARED_POOL_SIZE)

共享池:(shared_pool_size):数据字典,sql缓冲,pl/sql语法分析.加大可提速度。

原则:SGA中主要设置对象,一般为系统可用内存10%

6 参数设置实例

实例配置基本掌握的原则是, db_block_buffer 通常可以尽可能的大,shared_pool_size 要适度,log_buffer 通常大到几百K到1M就差不多了

A、如果512M RAM

建议 shared_pool_size = 50M, db_block_buffer* db_block_size = 200M

B、如果1G RAM

建议 shared_pool_size = 100M , db_block_buffer* db_block_size = 400M

C、如果2G RAM

建议 shared_pool_size = 200M , db_block_buffer *db_block_size = 800M

C、如果256M RAM 则参数设置如下:

Shared pool

动态参数shared_pool_size= 25M

静态参数shared_pool_reserved_size= 2M

动态参数open_cursors= 300

静态参数cursor_space_for_time= TRUE

静态参数session_cached_cursors= 60

_pool_size

分配给大的PL/SQL的large池的块总数

_pool_size

为JVM里使用的java存储过程所分配的内存