暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

修改oracle内存参数报ora27102

原创 张鹏 2022-01-08
1364

三十五、修改oracle内存参数报ora27102

现象:

虚拟机添加内存后,oracle同步修改sga_target,sga_max_size,pga_aggregate_target报错

解决:

 

原因是oracle 安装时根据现有的配置设置了shmallshmmax参数,虚拟机增加内存后,没有同步修改这两个参数

 

系统参数配置(rac01&rac02)

安装 Oracle 数据库需要配置系统参数,以下使用脚本命令一键式配置:

##配置参数文件

memTotal=$(grepMemTotal /proc/meminfo | awk '{print $2}')

totalMemory=$((memTotal / 2048))

shmall=$((memTotal / 4))

if[$shmall -lt2097152]; then

shmall=2097152

fi

shmmax=$((memTotal*1024 - 1))

if[$shmmax -lt4294967295];then

shmmax=4294967295

fi

cat<<EOF>>/etc/sysctl.conf

fs.aio-max-nr=1048576

fs.file-max=6815744

kernel.shmall=$shmall

kernel.shmmax=$shmmax

kernel.shmmni=4096

kernel.sem=25032000100128

net.ipv4.ip_local_port_range=900065500

net.core.rmem_default=262144

net.core.rmem_max=4194304

net.core.wmem_default=262144

net.core.wmem_max=1048576

#net.ipv4.conf.eth0.rp_filter =1 #根据自己网卡设置

#net.ipv4.conf.eth1.rp_filter =2 #根据自己网卡设置

EOF

##生效

sysctl -p

 

 

 

oracle 安装ora 27102,Oracle启动报错ORA-27102解决

Oracle启动报错ORA-27102解决,此错误一般是因为数据库的初始化参数文件的内存设置不当导致。本例是因为操作系统参数设置问题导致

环境:RHEL5.5 + Oracle 10.2.0.4

此错误一般是因为数据库的初始化参数文件的内存设置不当导致。本例是因为操作系统参数设置问题导致。

1.当前现象:Oracle启动报错ORA-27102

2.检查各参数的配置情况

3.定位解决问题

4.延伸总结

1.当前现象:Oracle启动报错ORA-27102

[oracle@JYDB1 ~]$sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on 星期四 7月 30 19:55:10 2015

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

已连接到空闲例程。

SQL> startup

ORA-27102: out of memory

Linux-x86_64 Error: 28: No space left on device

2.检查各参数的配置情况

2.1 根据当前的spfile文件创建pfile文件

SQL> create pfile='/tmp/pfile0730.bak' from spfile;

文件已创建。

查看当前的初始化参数配置信息:

[oracle@JYDB1 dbs]$ more /tmp/pfile0730.bak

JYZHAO.__db_cache_size=10938744832

JYZHAO.__java_pool_size=117440512

JYZHAO.__large_pool_size=16777216

JYZHAO.__shared_pool_size=1442840576

JYZHAO.__streams_pool_size=33554432

*.audit_file_dest='/opt/app/oracle//admin/JYZHAO/adump'

*.background_dump_dest='/opt/app/oracle//admin/JYZHAO/bdump'

*.compatible='10.2.0.3.0'

*.control_files='/usr3/oradata1/sysdata/control_file/control01.ctl','/usr3/oradata1/sysdata/control_file/control02.ctl','

/usr3/oradata1/sysdata/control_file/control03.ctl'

*.core_dump_dest='/opt/app/oracle//admin/JYZHAO/cdump'

*.db_block_size=8192

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_files=2048

*.db_name='JYZHAO'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=JYZHAOXDB)'

*.job_queue_processes=10

*.nls_language='SIMPLIFIED CHINESE'

*.nls_territory='CHINA'

*.open_cursors=300

*.pga_aggregate_target=1572864000

*.processes=600

*.remote_login_passwordfile='EXCLUSIVE'

*.resource_limit=TRUE

*.sessions=665

*.sga_target=12582912000

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/opt/app/oracle//admin/JYZHAO/udump'

可以看到,sga=12G,,pga=1.5G,

2.2 用pfile文件启动得到相同报错

startup pfile='/tmp/pfile0730.bak'

SQL> startup pfile='/tmp/pfile0730.bak'

ORA-27102: out of memory

Linux-x86_64 Error: 28: No space left on device

SQL> !

2.3 检查主机的内存,/dev/shm,ipcs

2.3.1 内存空闲充足

[oracle@JYDB1 10.2.0]$ free -g

total used free shared buffers cached

Mem: 31 0 30 0 0 0

-/+ buffers/cache: 0 31

Swap: 31 0 31

2.3.2 /dev/shm设置为16G,符合当前需求

[oracle@JYDB1 10.2.0]$df -h /dev/shm

文件系统容量已用可用已用% 挂载点

tmpfs 16G 0 16G 0% /dev/shm

2.3.3 ipcs -a也没有未释放的共享内存

[oracle@JYDB1 10.2.0]$ipcs -a

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

------ Semaphore Arrays --------

key semid owner perms nsems

------ Message Queues --------

key msqid owner perms used-bytes messages

查到这里我们发现系统的硬件完全可以支持sga=12G,pga=1.5G的配置。

但此时实验了下,大概是只能以sga=6.5G的大小启动数据库。sga再大都会报错:ORA-27102。

2.4 检查系统配置文件/etc/sysctl.conf

more /etc/sysctl.conf

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 25769803776

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

可以看到是按照11g 安装文档建议配置项配置的,其中kernel.shmmax是根据主机内存的75%计算来的。其他参数没有改变。

因为这里的环境是Oracle 10g,所以我们还是按照10g官档的建议,修改为10g版本的安装文档配置项:

kernel.shmall = 2097152

kernel.shmmax = 25769803776

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default = 262144

net.core.rmem_max = 262144

net.core.wmem_default = 262144

net.core.wmem_max = 262144

sysctl -p 生效配置后,此时尝试启动数据库,结果很不幸,依旧报错ORA-27102。

3.定位解决问题

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

 

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论