增加oracle安装内存大小,Oracle初始安装内存设置参考

预备知识

shared memory:共享内存段:

一个内存区域,可以被不同的进程读取。oracle使用它来构成sga。oracle使用以下三种方法来创建一个sga区:

1. 使用单个共享内存段。

2. 使用连续多个共享内存段。

3. 使用多个不连续共享内存段。

oracle优先使用的一种方法,如果成功,则继续初始化,不成功则使用第二种方法,再不成功则使用第三种方法。如果再不成功,则初始化失败,oracle报告错误代码。

semaphore:

可以看作一个标记。可以有on和off两种状态。oracle使用semaphores来实现服务器进程对sga区的存取控制。

shared memory 和semaphore 是oracle在unix上运行的重要资源。如果oracle 实例得不到所需要的资源,实例启动就会失败。

PGA+SGA=ORACLE占用的内存。

PGA: 每个oracle用户占用的内存,一般设为内存的10%,官方建议:

Oracle recommends initially setting this parameter to 16% of your server’s physical memory for OLTP systems and 40% of your server’s physical memory for DSS systems

PGA需要登陆oracle的客户端,在例程里修改,或者

对于ora9i,在32位平台上 9i的sga默认最多只能扩展到1.7G,如果想突破这个限制,需要重新link Oracle软件。以下为sga为900M的例子:

alter system set db_cache_size = 700m scope = spfile;

alter system set shared_pool_size = 200m scope=spfile;

alter system set pga_aggregate_target = 100m scope=spfile;

对于oracle10G,sga默认最多只能扩展到2.5G,如果想突破这个限制,需要重新link Oracle软件。有4G内存的情况下,可以这样分配:

10g 不用 设置 db_cache_size 和 shared_pool_size ,它是自动管理的,你只要 给他个最大内存就行

alter system set sga_target = 2g scope=spfile;

alter system set pga_aggregate_target = 500m scope=spfile ;

察看oracle连接数

select   count(*)   from   sys.v_$session;

查看oracle最大连接数

SQL〉show parameter processes ,看最后一行。

修改 SQL〉alter system set processes=1000 scope=spfile;

scope=spfile 用于重起生效

服务器物理内存×(0.16 至 0.40) = 要分配给所有PGA的内存总量

初始SGA大小:

服务器物理内存×0.55 = 要分配给所有SGA的内存总量(TSGA)

注意:TSGA要小于已分配给oracle的共享内存段大小 共享内存段echo "2147483648" > /proc/sys/kernel/shmmax

TSGA/服务器上Oracle实例个数=每个实例的总SGA大小(TSGAI)

TSGAI×0.4=已分配给SHARED POOL的总内存

TSGAI×0.6=已分配给 DATABASE BUFFER CACHE的总内存

####TSGAI×0.10=已分配给 REDO LOG BUFFER 的总内存

以上原则在内存小于1GB的服务器上非常适用。

在内存大于1GB的服务器上 :

要分配给所有SGA的内存总量(TSGA)=服务器物理内存×(0.60至0.75)

共享内存通过将通用的结构和数据放在共享内存段中,使得进程可以对它们进行访问。这是现有最快的进程间通信(IPC)方式 主要是因为数据在进程之间传递时没有涉及到内核的操作。在进程之间不需要复制数据。

Oracle 将共享内存用于它的系统全局区 (SGA),这是一个由所有的 Oracle 备份进程及前台进程所共享的内存区域。为 SGA 分配足够的容量对于 Oracle 的性能非常重要,因为它负责保存数据库缓冲区高速缓存、共享 SQL、访问路径以及更多。

shmmax

共享内存段的最大大小(以字节为单位)

含义:这个设置并不决定究竟oracle数据库或者操作系统使用多少物理内存,只决定了最多可以使用的内存数目。这个设置也不影响操作系统的内核资源。

设置方法:0.5*物理内存

通过直接更改 /proc 文件系统,你无需重新启动计算机便可以改变 SHMMAX 的缺省设置。可以使用以下方法动态设置 SHMMAX 的值。通过将此命令置于 /etc/rc.local 启动文件中可以使它永久有效:

echo "2147483648" > /proc/sys/kernel/shmmax

shmmni

这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的缺省值是 4096。该值足以满足需要,因此通常无需更改。

可以通过执行以下命令来确定 SHMMNI 的值:

# cat /proc/sys/kernel/shmmni

4096

shmall

该参数控制系统一次可以使用的共享内存总量(以页为单位)

shmall 的默认大小为 2097152,并可以使用以下命令进行查询:

# cat /proc/sys/kernel/shmall

2097152

shmall 的默认设置足以满足 Oracle RAC 10g 安装的需要。

(注意:i386 平台上的 Red Hat Linux 中的页面大小为 4,096 字节。但您可以使用 bigpages,它支持配置更大的内存页面大小。)

设置信号

对信号的最佳描述是,它是用于在共享资源(如共享内存)的进程(或进程中的线程)之间提供同步的计数器。Unix System V 支持信号集,其中的每个信号都是一个信号计数。当应用程序请求信号时,它使用“集合”来完成此工作。

要确定所有信号限制,可使用以下命令:

# ipcs -ls

------ Semaphore Limits --------

max number of arrays = 128

max semaphores per array = 250

max semaphores system wide = 32000

max ops per semop call = 32

semaphore max value = 32767

您还可以使用以下命令:

# cat /proc/sys/kernel/sem

250 32000 32 128

semmsl

内核参数用于控制每个信号集合的最大信号数。

系统所占用信号量可用下列命令查出:#ipcs –sb ,其中列NSEMS显示系统已占用信号量

Oracle 建议将 SEMMSL 设置为 init.ora 文件(适用于 Linux 系统上所有数据库)中的最大 PROCESS 实例参数设置再加上 10。此外,Oracle 建议将 SEMMSL 设置为不小于 100。

例子:set semsys:seminfo_semmsl=-200

semmni

内核参数用于控制整个 Linux 系统中信号集的最大数量。

Oracle 建议将 SEMMNI 设置为不小于 100。

semmns

内核参数用于控制整个 Linux 系统中的信号(而非信号集)的最大数量

每个process会占用一个信号量,Oracle 建议将 SEMMNS 设置为系统上每个数据库的 PROCESSES 实例参数设置之和,加上最大的 PROCESSES 的两倍,最后为系统上的每个 Oracle 数据库加上 10。

设置方法:这个值可以通过以下方式计算得到:各个oracle实例的initsid.ora里边的processes的值的总和(除去最大的processes参数)+最大的那个processes×2+10×oracle实例的个数。

shmseg

含义:每个用户进程可以使用的最多的共享内存段的数目。

例子:set shmsys:shminfo_shmseg=20:

如何增加ORACLE连接数

ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:

sessions=(1.1*process+5)

但是我们增加process数时,往往数据库不能启动了。这因为我们还漏调了一个unix系统参数:它是/etc/system/ 中semmns,这是unix系统的信号量参数。每个process会占用一个信号量。semmns调整后,需要重新启动unix操作系统,参数才能生效。不过它的大小会受制于硬件的内存或ORACLE SGA。范围可从200——2000不等。

semmns的计算公式为:SEMMNS>processes+instance_processes+system

processes=数据库参数processes的值 instance_processes=5(smon,pmon,dbwr,lgwr,arch)

system=系统所占用信号量。系统所占用信号量可用下列命令查出:#ipcs -sb

其中列NSEMS显示系统已占用信号量。

有关oracle的基本参数的调整:

/oracle/admin/ora9i/pfile/initora9i.ora.10202007144030为安装时创建,一帮用于还原时使用,oracle正常启动时使用的是

product/9.2/dbs/spfileora9i.ora这个2进制文件,不能修改,当对oracle进行调整时,修改被记录到这个文件中,当修改导致oracle不能正常启动时,可以使用pfile文件进行恢复启动

startup pfile='/oracle/admin/ora9i/pfile/initora9i.ora.10202007144030' (正常启动为 startup)

但是oracle的参数将变为初始安装的状态。

可以使用以下的命令生成pfile文件:

create spfile from pfile='/oracle/admin/ora9i/pfile/initora9i.ora.10202007144030'

调整的参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值