首页 > 数据库 >Oracle 安装报SGA size can not be greater than maximum shared memory segment size(0)

Oracle 安装报SGA size can not be greater than maximum shared memory segment size(0)

时间:2023-06-25 14:35:26浏览次数:48  
标签:kernel greater 参数 内存 SGA net 共享内存 segment size


问题现象:

Oracle 安装报SGA size can not be greater than maximum shared memory segment size(0)_共享内存


问题分析:

         从问题现象上来看可以比较清晰的看出是因为系统的内核参数调整问题,导致无法分配正确的内存给SGA;那么这种情况通常是由于我们的/etc/sysctl.conf中配置的内存信息和实际内存信息不符合导致。

 

我们的物理内存的大小为2G,swap内存的大小为4G;

[root@db01 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          1893        428       1465          0         39        245
-/+ buffers/cache:        143       1749
Swap:         4063          0       4063



sysctl.conf信息如下:

kernel.shmall = 2147483648
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmmax = 8589934592
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 1048576
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.file-max = 68157
fs.aio-max-nr = 1048576
vm.swappiness = 0
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.tcp_wmem = 262144
net.ipv4.tcp_rmem = 4194304



 

首先我们对上面几个主要参数进行解释:

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:

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

 

         那么我们从上面的解释不难看出,导致该内存无法容纳sga的参数无非就是参数kernel.shmmax。
那么这个时候我们把其调整为和内存一样大即可:
kernel.shmmax = 2077155328  

标签:kernel,greater,参数,内存,SGA,net,共享内存,segment,size
From: https://blog.51cto.com/prudentwoo/6545711

相关文章

  • p61Demo8 DATA2 SEGMENT
    .386STACKSEGMENTUSE32DB200DUP(0)STACKENDSDATA1SEGMENTUSE16T1DW-50HT2DDFDATA1ENDS;DATA2SEGMENTUSE16BUFDB'ABCDEF'FDW70HDATA2ENDS;CODESEGMENTUSE16ASSUMECS:CODE,DS:DATA1,......
  • elementui 分页page-size current-page 不随着组件改变问题
    问题出在未使用 .sync上!:current-page.sync="pageData.PageIndex":page-size.sync='pageData.PageSize'<el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":curren......
  • Vue进阶(贰零零):window.onresize事件在vue项目中的应用
    属性window.onresize属性可以用来获取或设置当前窗口的resize事件的事件处理函数。在窗口大小改变之后,就会触发resize事件.//vue页面<template><divid='echart'>报表</div></template><script>exportdefault{data(){return{};......
  • Row size too large. The maximum row size for the used table type
    原文链接:https://blog.csdn.net/yyj108317/article/details/108756493在一段自动创建mysql表的sql语句时,报如下错误ERROR1118(42000):Rowsizetoolarge.Themaximumrowsizefortheusedtabletype,notcountingBLOBs,is65535.Youhavetochangesomecolumn......
  • node生成token报错:secretOrPrivateKey has a minimum key size of 2048 bits for RS25
    提要:在node生成token时利用用jsonwebtoken,利用非对称加密的生成token  constjwt=require("jsonwebtoken"); constprivateKey=fs.readFileSync("./keys/private.key");constpublicKey=fs.readFileSync("./keys/public.key");consttok......
  • unitu camera size计算
    CameraSize=y/(2*s)Where:y=ScreenHeight(px)s=DesiredHeightofPhotoshopSquare(px)  ManygamedevswillprefertoworkwithasetsizeinPhotoshopandthenadjusttheircamerasetupinUnityaccordingly.Dependingontheresolutionandthe......
  • MYSQL 执行update语句时报错: The total number of locks exceeds the lock table size
    由于数据量较大导致报错:‘’Thetotalnumberoflocksexceedsthelocktablesize‘’。这句话翻译过来大概是这个意思:总数已经超过锁定表的大小。解决办法:输入查询:showvariableslike"%_buffer%";找到innodb_buffer_pool_size对应的值默认为8388608也就是8兆。我们将其设置......
  • world map real size
    Mercatorprojection(82°Sand82°N)......
  • vue项目中使用vue-quill-editor富文本编辑器、支持大小和拖拉;以及 vue 引入quill - im
    在本内容的最后面附上了demo代码1.实现的效果图2.首先需要先引入依赖如果引入了下面这两个依赖报错的话,那么请查看当前内容的第8点,哪里有解决这个报错的方案npminstallquill-image-resize-modulenpminstallquill-image-drop-modulenpminstallvue-qui......
  • ResizeObserver loop limit exceeded报错解决方案
    ResizeObserverlooplimitexceeded报错解决方案项目接入前端感知系统,采集到很多ResizeObserverlooplimitexceeded错误。本地运行不是这个报错信息,当反复拖拽改变窗口大小时,本地运行错误信息如下:问题原因:element-ui中的table组件的引入如果在一个动画帧内,ResizeObserver不......