预备知识
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'
调整的参数

Oracle初始安装内存设置参考的更多相关文章

  1. oracle初始安装大小

    oracle初始安装大小 /ruiy/ocr/DBSoftware/app/oracle/ruiy/ocr/DBSoftware/app/oraInventory/ruiy/ocr/DBData/or ...

  2. YARN和MapReduce的内存设置参考

    如何确定Yarn中容器Container,Mapreduce相关参数的内存设置,对于初始集群,由于不知道集群的类型(如cpu密集.内存密集)我们需要根据经验提供给我们一个参考配置值,来作为基础的配置. ...

  3. oracle免安装客户端设置

    对oracle不是很熟悉,就是使用层面的,开发时往往需要连接oracle,又不想单独安装,一般都用个免安装的客户端罢了,再次记录一下自用 1.下载oracle免安装的客户端 下载地址:http://w ...

  4. Oracle RAC安装部署文档

    1.    部署环境步骤 1.1 软件环境 操作系统:CentOS release 6.5(推荐使用5.*的系统)192.168.1.151    racnode1 192.168.1.152    ...

  5. Oracle客户端安装配置

    Oracle客户端安装配置.绿色版Oracle客户端配置使用PLSQL 安装Oracle客户端 准备工作,首先下载对应Oracle版本的客户端,这个可以去Oracle官网下载,加压完目录如下: 点击s ...

  6. 关于Ubuntu 14.04 安装Oracle 11gR2安装步骤(从开始到放弃--最终使用docker获取)

    最近在复习Oracle的相关内容,好准备在下一份工作中能够熟练一些,所以准备在自己虚拟机中安装Oracle的11gR2版本,主要参考内容为: https://blog.csdn.net/qq_4025 ...

  7. Linux平台oracle 11g单实例 + ASM存储 安装部署 快速参考

    操作环境:Citrix虚拟化环境中申请一个Linux6.4主机(模板)目标:创建单机11g + ASM存储 数据库 1. 主机准备 2. 创建ORACLE 用户和组成员 3. 创建以下目录并赋予对应权 ...

  8. 在CENTOS下安装ORACLE 11g(LT项目开发参考)

    前段时间为K3CLOUD项目安装ORACLE服务器,因有同事对LINUX和ORACLE不熟,现整理文档,方便后面维护人员参考 ORACLE的安装 1.首先安装依赖包(新安装的centos需要,现服务器 ...

  9. Linux环境下Oracle安装参数设置

    前面讲了虚拟机的设置和OracleLinux的安装,接下来我们来说下Oracle安装前的准备工作.1.系统信息查看系统信息查看首先服务器ip:192.168.8.120服务器系统:Oracle Lin ...

随机推荐

  1. java并发编程实战笔记---(第三章)对象的共享

    3.1 可见性 synchronized 不仅实现了原子性操作或者确定了临界区,而且确保内存可见性. *****必须在同步中才能保证:当一个线程修改了对象状态之后,另一个线程可以看到发生的状态变化. ...

  2. C语言俄罗斯方块

    #include <windows.h> #include <stdio.h> #include <time.h> #include <conio.h> ...

  3. html5多媒体Video/Audio

    video:    1.常见的视频格式 视频的组成部分:画面.音频.编码格式 视频编码:H.264.theora.VP8(google开源)      2.常见的音频格式     编码:AAC.MP3 ...

  4. day4 递归原理及解析

    递归 递归是一种调用自身的方法,在函数执行过程中重复不断的调用自身的过程,递归的规模每次都要缩小,一般前一步的程序作为后一步的参数.但是必须有递归结束条件. 递归算法是一种直接或者间接地调用自身算法的 ...

  5. git用法大全

    转载自实验楼,之前有更新过两篇git的文章,毕竟内容太少,而git还有很多更丰富的技能,在实验楼上有一系列全的教程,这里做一下备案.需要时查阅. Git 实战教程 目录 一.实验说明 二.git的初始 ...

  6. spring+atomikos+mybatis 多数据源事务(动态切换)

    注:自动切换,是为不同的数据源,却要对应相同的dao层: 1.与无事务版的一样,创建DynamicDataSource类,继承AbstractRoutingDataSource package com ...

  7. poj2243 Knight Moves(BFS)

    题目链接 http://poj.org/problem?id=2243 题意 输入8*8国际象棋棋盘上的两颗棋子(a~h表示列,1~8表示行),求马从一颗棋子跳到另一颗棋子需要的最短路径. 思路 使用 ...

  8. Python 函数系列- Str

    Str函数的一些有趣的用法 str = '1234567890' print(str[:]) #取全部字符串 print(str[2]) #取下标是2的字符 -- 3 print(str[:3]) # ...

  9. asp.net core结合Gitlab-CI实现自动化部署

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 一.前言 在之前的文章中写过k8s+Jenkins+GitLab-自动化部署asp.net core项目 的topic,这次讲解一 ...

  10. 如何正确地使用Java的@deprecated标注

    没有什么事情比看到一个没有任何说明的@deprecated标注更让人愤怒的事情了.这种做法只能让人困惑,我到底还要不要用这个已经‘废弃’的方法?如果开发者不希望某个方法再被人用的话,就要好好地为@de ...