返回顶部
首页 > 资讯 > 数据库 >oracle rac内核参数的详细介绍
  • 222
分享到

oracle rac内核参数的详细介绍

2024-04-02 19:04:59 222人浏览 安东尼
摘要

本篇内容介绍了“oracle rac内核参数的详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.在

本篇内容介绍了“oracle rac内核参数的详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.在/etc/sysctl.conf文件中加入下列行

kernel.shmall = 2097152 
kernel.shmmax = 4294967295 
kernel.shmmni = 4096 
# semaphores: semmsl, semmns, semopm, semmni 
kernel.sem = 250 32000 100 128 
fs.file-max = 101365 
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586

net.ipv4.ip_local_port_range = 1024 65000


for 11gR2

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 4294967295

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048586 

注意: 如果已经存在的值大于这个值,就不要修改!

--然后运行下面命令,使上面的设置生效 
#/sbin/sysctl -p

参数说明:

       kernel.shmall为物理内存除以pagesize;

       kernel.shmmax为物理内存的一半;

       fs.file-max为512 乘以 processes (如128个process则为 65536);

       net.ipv4.ip_local_port_range/net.core.rmem_default/net.core.rmem_max三个参数设置和官方文档不一样, 这是根据metalink 343431.1 最新要求更改的;

       net.ipv4.tcp_rmem/net.ipv4.tcp_wmem两个参数一般情况下无需设置, 除非是在Dataguard/Streams等需很多网络传输情况下;

其它参数根据官方文档要求设置即可.

# Controls the maximum shared segment size, in bytes --物理内存的一般

kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages

kernel.shmall = 4294967296  --物理内存除以pagesize

-- 以上2个参数,都已经存在, 只需要调整一下参数大小

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 327679  

net.core.rmem_default = 1048576

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048586

net.ipv4.ip_local_port_range = 9000 65500  -- 这个端口从9000开始

for 11gR2

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 536870912

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048586

注意:如果已经存在的值,大于这里的设置,就不要修改。

2.  kernel.shmmax 参数

2.1 说明

       SHMMAX Available physical memory Defines the maximum allowable size of one shared memory segment. The SHMMAX setting should be large enough to hold the entire SGA in one shared memory segment. A low setting can cause creation of multiple shared memory segments which may lead to perfORMance degradation.

       Shmmax 是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值,shmmax 设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降 。

       SHMMAX 仅仅是在共享内存段被创建的时候用来比较的一个数字,当共享内存段被一个进程(Process)创建,操作系统检查是否被要求的共享内存段的值大于shmmax 的值 ,如果是,那么将会抛出一个错误。这个时候系统会创建另外的一个或多个共享内存段满足进程的需求 。一般来说,共享内存段个数和系统性能没有太直接的关系,也不会对性能产生太大的影响。

       在实例启动以及Server Process 创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低(在启动的时候 需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响),但是其他时候都不会有影响。这意味着如果你的程序不是经常Create Processes(以及Destroy Them),性能方面就不是考虑的问题。 

     Oralce 建议 SHMMAX > SGA(SGA_MAX_SIZE),这样在任何时候都不会有甚至轻微的性能下降的隐患。 

2.2 示例

       在上节说了,如果shmmax 小与SGA,Oracle 会创建多个共享内存段,我们可以使用Ipcs -sa 查看看到共享内存段个数。 

(1)查看

[root@rac01 ~]# cat /etc/sysctl.conf | grep kernel.shmmax
kernel.shmmax = 20971520
[root@rac01 ~]# ipcs -sa

------ Shared Memory Segments --------
key shmid owner perms bytes nattch status 
0x00000000 65537 oracle 640 4194304 27 
0x00000000 98306 oracle 640 20971520 27 
0x00000000 131075 oracle 640 20971520 27 
0x00000000 163844 oracle 640 20971520 27 
0x00000000 196613 oracle 640 20971520 27 
0x00000000 229382 oracle 640 20971520 27 
0x00000000 262151 oracle 640 20971520 27 
0x00000000 294920 oracle 640 20971520 27 
0xd2776b04 327689 oracle 640 20971520 27 

------ Semaphore Arrays --------
key semid owner perms nsems 
0xfafd7074 360449 oracle 640 104 

------ Message Queues --------
key msqid owner perms used-bytes messages

因为kernel.shmmax设置过小,导致分配了多个共享内存段。


下边改大一些:
[root@rac01 ~]# cat /etc/sysctl.conf | grep kernel.shmmax
kernel.shmmax = 2147483648
[root@rac01 ~]# sysctl -p
[root@rac01 ~]# su - oracle
[oracle@rac01 ~]$ sqlplus '/as sysdba'

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Nov 16 05:50:00 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, Oracle Label Security, OLAP
and Data Mining Scoring Engine options

SQL> startup force
ORACLE instance started.

Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 104859892 bytes
Database Buffers 58720256 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, Oracle Label Security, OLAP
and Data Mining Scoring Engine options

再看一下:
[root@rac01 ~]# ipcs -sa

------ Shared Memory Segments --------
key shmid owner perms bytes nattch status 
0xd2776b04 360449 oracle 640 171966464 27 

------ Semaphore Arrays --------
key semid owner perms nsems 
0xfafd7074 491521 oracle 640 104 

------ Message Queues --------
key msqid owner perms used-bytes messages
只有一个内存段分配了

3.  kernel.shmall

       kernel.shmall 参数是控制共享内存页数。该参数大小为物理内存除以pagesize;

查看os系统页的大小

#getconf PAGESIZE

4096

       这里显示的pagesize 是4k,假设一个共享内存段的最大大小是16G,那么需要共享内存页数是 16GB/4KB=16777216KB/4KB=4194304 (页),也就是64Bit 系统下16GB 物理内存,设置 kernel.shmall = 4194304 才符合要求,几乎是原来设置2097152的两倍。

4. kernel.shmmni 参数

       shmmni 内核参数是共享内存段的最大数量(注意这个参数不是 shmmin,是

shmmni, shmmin 表示内存段最小大小 )。shmmni 缺省值 4096 ,一般肯定是够用了。

5. fs.file-max 参数

       fs.file-max为512 乘以 processes。

       如128个process,则file-max=512*128=65536。

6.  Oracle 下需要做调整的参数

       在Oracle 10g 中引入了一个非常重要的参数:SGA_TARGET,这也是Oracle 10g的一个新特性。自动共享内存管理(Automatic Shared Memory Management ASMM),控制这一特性的,就仅仅是这个参数SGA_TARGE。设置这个参数后,你就不需要为每个内存区来指定大小了。SGA_TARGET 指定了SGA 可以使用的最大内存大小,而SGA 中各个内存的大小由Oracle 自行控制,不需要人为指定。

       Oracle 可以随时调节各个区域的大小,使之达到系统性能最佳状态的个最合理大小,并且控制他们之和在SGA_TARGET 指定的值之内。一旦给SGA_TARGET 指定值后(默认为0,即没有启动ASMM),就自动启动了ASMM

特性。

       10g 下设置 SGA_TARGET 之后启动ASSM 特性之后, 只有以下的这些区的内存大小动态共享起来:

* Buffer cache (DB_CACHE_SIZE)

* Shared pool (SHARED_POOL_SIZE)

* Large pool (LARGE_POOL_SIZE)

* Java pool (JAVA_POOL_SIZE)

* Streams pool (STREAMS_POOL_SIZE)

       而SGA 中的其他区域的内存大小仍然是固定不共享的。它的含义和SGA_MAX_SIZE 的一样,也表示SGA 最大的大小,于是它也就有了一个限制,那就是它的大小不能大于SGA_MAX_SIZE 的大小。

       Oracle10g 下, SGA_MAX_SIZE 仍然表示SGA 的大小的上限值,而SGA_TARGET 是SGA 的所有组件的大小的最大值之和,即当SGA_TARGET< SGA_MAX_SIZE的时候,oracle 就会忽略SGA_MAX_SIZE 的值,SGA_TARGET 也就成了SGA 的在此实例中的上限制,它能动态改变大小,但是不能够大于SGA_MAX_SIZE 的值。

       当SGA_TARGET< SGA_MAX_SIZE 时,实例重启以后SGA_MAX_SIZE 就变成SGA_TARGET 的大小了。

       在11g 中,这个SGA_TARGET 只能设置是等于SGA_MAX_SIZE 的大小了,设置比它小,oracle 会自动帮你调整,设置比它大,那还是出错。现在可以自己想想,oracle对SGA_TARGET 的大小处理在往正确的简单的方向前进中。

       SGA_TARGET 带来一个重要的好处就是,能使SGA 的利用率达到最佳,从而节省内存成本。因为ASMM 启动后,Oracle 会自动根据需要调整各个区域的大小,大大减少了某些区域内存紧张,而某些区域又有内存空闲的矛盾情况出现。

各参数详解:

kernel.shmmax:

是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。至于导致系统下降的主要原因为在实例启动以及ServerProcess创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低(在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响),但是其他时候都不会有影响。

官方建议值:

32位linux系统:可取最大值为4GB(4294967296bytes)-1byte,即4294967295。建议值为多于内存的一半,所以如果是32为系统,一般可取值为4294967295。32位系统对SGA大小有限制,所以SGA肯定可以包含在单个共享内存段中。

64位linux系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,一般取值大于SGA_MAX_SIZE即可,可以取物理内存-1byte。例如,如果为12GB物理内存,可取12*1024*1024*1024-1=12884901887,SGA肯定会包含在单个共享内存段中。 

kernel.shmall:

    该参数控制可以使用的共享内存的总页数。Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16G,那么需要共享内存页数是16GB/4KB=16777216KB /4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求(几乎是原来设置2097152的两倍)。这时可以将shmmax参数调整到16G了,同时可以修改SGA_MAX_SIZE和SGA_TARGET为12G(您想设置的SGA最大大小,当然也可以是2G~14G等,还要协调PGA参数及OS等其他内存使用,不能设置太满,比如16G)

kernel.shmmni:

该参数是共享内存段的最大数量。shmmni缺省值4096,一般肯定是够用了。

fs.file-max:

该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量。

fs.aio-max-nr:

      此参数限制并发未完成的请求,应该设置避免I/O子系统故障。

kernel.sem:

以kernel.sem = 250 32000 100 128为例:

       250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目。

       32000是参数semmns的值,表示系统内可允许的信号量最大数目。

       100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量。

       128是参数semmni的值,表示系统信号量集合总数。

net.ipv4.ip_local_port_range:

    表示应用程序可使用的IPv4端口范围。

net.core.rmem_default:

表示套接字接收缓冲区大小的缺省值。

net.core.rmem_max:

表示套接字接收缓冲区大小的最大值。

net.core.wmem_default:

表示套接字发送缓冲区大小的缺省值。

net.core.wmem_max:

表示套接字发送缓冲区大小的最大值。

“oracle rac内核参数的详细介绍”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: oracle rac内核参数的详细介绍

本文链接: https://lsjlt.com/news/60433.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • oracle rac内核参数的详细介绍
    本篇内容介绍了“oracle rac内核参数的详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.在...
    99+
    2024-04-02
  • Pythonself参数详细介绍
    在定义类的过程中,无论是显式创建类的构造方法,还是向类中添加实例方法,都要求将 self 参数作为方法的第一个参数。例如,定义一个 Person 类: class Person: d...
    99+
    2023-01-29
    Python self Python self参数 Python self用法
  • $.ajax()方法参数的详细介绍
    本篇内容主要讲解“$.ajax()方法参数的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“$.ajax()方法参数的详细介绍”吧!会灵活的运用ajax的...
    99+
    2024-04-02
  • Java中的参数传递详细介绍
    目录前言1.值传递2.引用传递3.String类型传递4.举例总结前言 Java中的参数传递:分为值传递和引用传递但本质上,Java中只有值传递。引用传递,其实可以理解为传的是类似指...
    99+
    2024-04-02
  • Jquery中$.ajax()方法参数的详细介绍
    这篇文章主要讲解了“Jquery中$.ajax()方法参数的详细介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Jquery中$.ajax()方法参数的详...
    99+
    2024-04-02
  • MySQL内部函数的超详细介绍
    目录字符串函数1. length(str)2. concat(str1,str1,…)3. insert(str1,n,m,str2)4. lower(str)5. upper(str)6. le...
    99+
    2022-08-08
    mysql内置函数有哪些 mysql常用内置函数 sql函数大全及举例
  • Python max内置函数详细介绍
    Python max内置函数 max(iterable, *[, key, default]) max(arg1, arg2, *args[, key]) Return the largest item i...
    99+
    2022-06-04
    详细介绍 函数 Python
  • Vue路由传参详细介绍
    目录路由传参效果展示params的类型(后附源码)​​​​​​query参数的类型路由name路由传参 效果展示 通过传参,可以让Persons路由组建中的内容,在新的路由组件Sho...
    99+
    2024-04-02
  • LINUX下ORACLE相关的内核参数详解
    ORACLE相关的内核参数详解1、kernel.sem[root@test ~]# cat /proc/sys/kernel/sem250     &nbs...
    99+
    2024-04-02
  • Oracle中RAC的用法介绍
    Oracle中RAC的用法:1、通过在多个服务器上运行数据库实例来提供高可用性;2、允许在需要时增加或减少节点数量;3、通过将工作负载分布到多个节点上来实现负载均衡;4、使用共享存储来实现多个节点之间的数据共享;5、允许多个节点同时处理数据...
    99+
    2023-10-22
    oracle rac oracle
  • Linux用户空间与内核地址空间的详细介绍
    这篇文章主要介绍“Linux用户空间与内核地址空间的详细介绍”,在日常操作中,相信很多人在Linux用户空间与内核地址空间的详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux用户空间与内核地址空...
    99+
    2023-06-15
  • 详细介绍 PHP内存分配函数
    PHP 是一种流行的服务器端脚本语言,广泛用于 Web 开发。 与大多数编程语言一样,PHP 需要分配内存来创建变量、数组、对象和其他数据结构。 PHP 提供了几个分配函数来动态分配内存。 这些功能...
    99+
    2024-02-27
  • JavaScript函数的详细介绍
    本篇内容主要讲解“JavaScript函数的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript函数的详细介绍”吧!一、函数语法一个Jav...
    99+
    2024-04-02
  • JVM的关键系统参数介绍和详细配置
    JVM(Java Virtual Machine)是一个虚拟机,它是Java程序的运行环境。在JVM的运行过程中,有一些关键的系统参...
    99+
    2023-08-29
    JVM
  • Android内置SQLite的使用详细介绍
    目录一、创建数据库  1、新建数据库帮助类2、在数据库帮助类中输入代码3、代码讲解  二、添加数据1、界面效果2、准备工作3、布局界面 activity_main...
    99+
    2024-04-02
  • Oracle数据库表空间超详细介绍
    目录表空间概述表空间的分类创建表空间参数详解1、undo2、tablespace3、datafile datefile_spec14、MININUM EXTENT integer [k|m]5、blockSIZE int...
    99+
    2023-05-12
    oracle表空间是什么 oracle 表空间查询 oracle表空间创建
  • Flink的详细介绍
    这篇文章主要介绍“Flink的详细介绍”,在日常操作中,相信很多人在Flink的详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Flink的详细介绍”的疑惑有所帮助!接...
    99+
    2024-04-02
  • rabbitMQ的详细介绍
    1.概述 RabbitMQ是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑RabbitMQ是一个快递站,一个快递员帮你传递快件。...
    99+
    2023-09-05
    rabbitmq npm linux java 分布式
  • JavaScript的function函数详细介绍
    通过函数来封装任意多条语句,而且可以在任何地方、任何时间调用执行。 而我们的JavaScript脚本语言比较特殊,相对于C语言,它的参数是不需要数据类型加持的。返回值return,...
    99+
    2024-04-02
  • Python 内置logging 使用详细介绍
    目录logging 的主要作用logging 日志等级logging 的基础函数logging 的四大组件(类)logging 的配置logging 和 print 的区别主要参考资...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作