• 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'
    调整的参数

  • 相关阅读:
    ISAPI_Rewrite应用技巧与方法
    Linux下MONO执行C#程序
    正则表达式与 re 模块[转]
    网页自适应不同浏览器和分辨率[转]
    DIV 元素 | div 对象(4)
    自适应浏览器分辨率的javascript函数[转]
    常用正规表达式
    div置顶且屏蔽底下图层的图层
    IIS连接数
    什么是RIA?
  • 原文地址:https://www.cnblogs.com/lcword/p/8301897.html
Copyright © 2020-2023  润新知