首页 > 数据库 >Oracle 扩容 SGA ORA-27104

Oracle 扩容 SGA ORA-27104

时间:2023-06-18 10:36:29浏览次数:36  
标签:kernel 27104 SGA shmmax 参数 Oracle 共享内存 shmall

问题概述

某客户一套19c生产环境在主机层面对内存进行了扩容,DBA随后对数据库的SGA的大小进行调整,调整完重启实例时报ORA-27104,无法正常启动实例。

如下图所示,SGA原大小为8G,现调整为32G

Oracle 扩容 SGA ORA-27104_扩容SGA

闭实例,再启动实例到nomount状态,提示ORA-27104报错:

Oracle 扩容 SGA ORA-27104_kernel.shmall_02

 

问题原因

查看数据库alert日志:

提示‘System cannot support SGA size of 32GB’及‘Increase the system shared memory size to at least 32GB’:

Oracle 扩容 SGA ORA-27104_ORA-27104_03

在Linux下,系统共享内存由kernel.shmall、kernal.shmmax两个内核参数控制:

  • kernel.shmall参数控制系统一次可以使用的共享内存总量(以页为单位)。在Linux 共享内存页大小为4KB,如果一个共享内存段的最大大小是32GB,那么需要共享内存页数是 32GB/4KB = 33,554,432KB/4KB = 8,388,608(页),该参数的值始终应该至少为: ceil(SHMMAX/PAGE_SIZE)。
  • kernal.shmmax参数用于定义一个内存段最大可以分配的内存空间,单位为字节。这个值的设置应该大于SGA_MAX_TARGET或MEMORY_MAX_TARGET的值,最大值可以设置成大于或等于实际的物理内存。 

查看操作系统中两个参数的配置情况:

发现kerlenel.shmall和kernel.shmmax参数配置的确过小,无法满足32G SGA的大小要求。

Oracle 扩容 SGA ORA-27104_ORA-27104_04

解决方案

1、调整kernel.shmall、kernal.shmmax参数。

kernel.shmall计算公式为:shmmax/page_size,推荐设置为物理内存大小除以分页大小。

kernal.shmmax计算公式为:单个内存段大小(bytes),推荐为物理内存的大小。

Oracle 扩容 SGA ORA-27104_扩容SGA_05

2、sysctl -p使参数立即生效。

3、再次启动实例,未报错,问题解决。

Oracle 扩容 SGA ORA-27104_kernel.shmall_06

 

标签:kernel,27104,SGA,shmmax,参数,Oracle,共享内存,shmall
From: https://blog.51cto.com/u_13482808/6507426

相关文章

  • Oracle常用统计
     测试,这是测消息 1.按天selectto_char(t.STARTDATE+15/24,'YYYY-MM-DD')as天,sum(1)as数量fromHOLIDAYtgroupbyto_char(t.STARTDATE+15/24,'YYYY-MM-DD')--ORDERby天NULLS LAST;  selecttrunc(t.STARTDATE,'DD')as天,sum(1)as......
  • Oracle 分组统计,按照天、月份周和自然周、月、季度和年
     1.按天selectto_char(t.STARTDATE+15/24,'YYYY-MM-DD')as天,sum(1)as数量fromHOLIDAYtgroupbyto_char(t.STARTDATE+15/24,'YYYY-MM-DD')--ORDERby天NULLSLAST; selecttrunc(t.STARTDATE,'DD')as天,sum(1)as数量fromHOLIDAY......
  • Oracle 三种分页方法
    Oracle的三层分页指的是在进行分页查询时,使用三种不同的方式来实现分页效果,分别是使用ROWNUM、使用OFFSET和FETCH、使用ROW_NUMBER()OVER()1.使用ROWNUM ROWNUM是Oracle中一个伪列,它用于表示返回的行的序号。使用ROWNUM进行分页查询的方法是在SELECT语句中加入WHERE子句,并在WHERE......
  • oracle中rownum和row_number()
     oracle中rownum和row_number() row_number()over(partitionbycol1orderbycol2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪劣rownum然后再进......
  • oracle与MySQL数据库之间数据同步的技术要点
    1,需求描述某ORCALE11生产数据库(下称源数据库),内含近万个表,需要从中每日同步几十个表的数据到mySQL5.7数据库(下称目标数据库)中,供第三方使用。需要对生产数据库影响越小越好。2,技术挑战数据类型不完全一致。从Oracle中导出的建表语句到MySQL数据库中不一定能运行,因为二者的数据......
  • 数据库运维实操优质文章分享(含Oracle、MySQL等) | 2023年5月刊
    本文为大家整理了墨天轮数据社区2023年5月发布的优质技术文章,主题涵盖Oracle、MySQL、PostgreSQL等数据库的安装配置、故障处理、性能优化等日常实践操作,以及常用脚本、注意事项等总结记录,分享给大家:Oracle优质技术文章概念梳理&安装配置Oracle的rwp之旅Oracle之HashJoinOr......
  • Win10安装Oracle-21C
    1、前期工作下载安装包:OracleXE213_Win64.zip解压安装包2、开始安装注意:以管理员身份运行++++++++++++++++++++++分割线++++++++++++++++++++++此处点击“运行”++++++++++++++++++++++分割线++++++++++++++++++++++++++++++++++++++++++++分割线+++++++++++......
  • Oracle反连接和外连接中NESTED LOOPS无法更改驱动表
     Oracle反连接和外连接中NESTEDLOOPS无法更改驱动表 先说反连接,现有SQL如下:selectt.*fromtwheret.colnotin(select/*+nl_aj*/tt.colfromttwherett.colisnotnull)andt.colisnotnull;Planhashvalue:1434981293------------------------------......
  • oracle统计出正整数对应二进制的里面1的位数
    declarennumber:=15; count1int:=0;begin whilen<>0 loop n:=bitand(n,n-1); count1:=count1+1; endloop; dbms_output.put_line(count1); end;结果为:   对于负数oracle似乎处理不了,正整数没问题。......
  • oracle 12c cursor mutex X/S
    一、问题描述接到业务反馈,一套4节点12.2.0.1版本rac第三节点无法连接,长时间连接不上后提示超时。经检查数据库处于open状态,监听正常。二、处理2.1数据库检查检查等待事件,存在大量cursor:mutexX、cursor:mutexS。查看这些等待事件对应sql语句为selectSYS_CONTEXT('USEREN......