ORA-00845 MEMORY_TARGET not supported
admin
2023-05-02 21:43:49
0


环境:RHEL6.6+11gR2RAC

由于虚拟环境搭建rac做测试,设置虚机内存为3G,打补丁导致pc机太慢,因此调整两台虚拟机内容为2534M内存,启动虚拟后发现数据库无法启动,尝试在单节点手工启动报如下错误:


oracle@cluster2 ~]$ sqlplus /nolog


SQL*Plus: Release 11.2.0.4.0 Production on Sat May 28 01:03:24 2016


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


SQL> conn /as sysdba

Connected to an idle instance.

SQL> startup

ORA-00845: MEMORY_TARGET not supported on this system

SQL> 

查找资料后发现问题如下,见MOS ID 460506.1

在oracle 11g中新增的内存自动管理的参数MEMORY_TARGET,它能自动调整SGA和PGA,这个特性需要用到/dev/shm共享文件系统,而且要求/dev/shm必须大于MEMORY_TARGET,如果/dev/shm比MEMORY_TARGET小就会报错。

查看警告日志爆出如下信息:

Starting ORACLE instance (normal)

WARNING: You are trying to use the MEMORY_TARGET feature. This feature requires the /dev/shm file system to be mounted for at least 1207959552 bytes. /dev/shm is either not mounted or is moun

ted with available space less than this size. Please fix this so that MEMORY_TARGET can work as expected. Current available is 1101058048 and used is 120430592 bytes. Ensure that the mount po

int is /dev/shm for this directory.

memory_target needs larger /dev/shm


解决方案

1.初始化参数MEMORY_TARGET或MEMORY_MAX_TARGET不能大于/dev/shm,为了解决这个问题,可以增大/dev/shm

如:

mount -t tmpfs shmfs -o size=3g /dev/shm

2.为了确保操作系统重启之后能生效,需要修改/etc/fstab文件。

tmpfs /dev/shm tmpfs defaults,size=3g 0 0

3.如果/dev/shm没有挂载也会报上面的错,所以需要确保已经挂载。

修改后重启服务器查看如下:

[grid@cluster2 ~]$ df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        71G   20G   48G  30% /

tmpfs           3.0G  412M  2.6G  14% /dev/shm

/dev/sda1       190M   29M  151M  16% /boot

[grid@cluster2 ~]$ cat /etc/fstab 


#

# /etc/fstab

# Created by anaconda on Wed May 25 00:45:01 2016

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

UUID=78a45723-e057-4055-a9b6-251acb2e6bb2 /                       ext4    defaults        1 1

UUID=29aae331-4dbe-4bf6-93d2-dc9eed0366f3 /boot                   ext4    defaults        1 2

UUID=68b77663-849b-4c80-891f-da37b671d992 swap                    swap    defaults        0 0

tmpfs                   /dev/shm                tmpfs   defaults,size=3G        0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

[grid@cluster2 ~]$ 

查看数据库已经启动。

[root@cluster2 ~]# su - grid

c[grid@cluster2 ~]$ crsctl stat res -t

--------------------------------------------------------------------------------

NAME           TARGET  STATE        SERVER                   STATE_DETAILS       

--------------------------------------------------------------------------------

Local Resources

--------------------------------------------------------------------------------

ora.DATA.dg

               ONLINE  ONLINE       cluster1                                     

               ONLINE  ONLINE       cluster2                                     

ora.FRA.dg

               ONLINE  ONLINE       cluster1                                     

               ONLINE  ONLINE       cluster2                                     

ora.LISTENER.lsnr

               ONLINE  ONLINE       cluster1                                     

               ONLINE  ONLINE       cluster2                                     

ora.OCR_VOTE.dg

               ONLINE  ONLINE       cluster1                                     

               ONLINE  ONLINE       cluster2                                     

ora.asm

               ONLINE  ONLINE       cluster1                 Started             

               ONLINE  ONLINE       cluster2                 Started             

ora.gsd

               OFFLINE OFFLINE      cluster1                                     

               OFFLINE OFFLINE      cluster2                                     

ora.net1.network

               ONLINE  ONLINE       cluster1                                     

               ONLINE  ONLINE       cluster2                                     

ora.ons

               ONLINE  ONLINE       cluster1                                     

               ONLINE  ONLINE       cluster2                                     

ora.registry.acfs

               ONLINE  ONLINE       cluster1                                     

               ONLINE  ONLINE       cluster2                                     

--------------------------------------------------------------------------------

Cluster Resources

--------------------------------------------------------------------------------

ora.LISTENER_SCAN1.lsnr

      1        ONLINE  ONLINE       cluster2                                     

ora.cluster.db

      1        ONLINE  ONLINE       cluster1                 Open                

      2        ONLINE  ONLINE       cluster2                 Open                

ora.cluster1.vip

      1        ONLINE  ONLINE       cluster1                                     

ora.cluster2.vip

      1        ONLINE  ONLINE       cluster2                                     

ora.cvu

      1        ONLINE  ONLINE       cluster1                                     

ora.oc4j

      1        ONLINE  ONLINE       cluster1                                     

ora.scan1.vip

      1        ONLINE  ONLINE       cluster2    

以下信息摘自网络:

一、/dev/shm理论

/dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里。因此在linux下,就不需要大费周折去建ramdisk,直接使用/dev/shm/就可达到很好的优化效果。 /dev /shm/需要注意的一个是容量问题,在linux下,它默认最大为内存的一半大小,使用df -h命令可以看到。但它并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节;如果它最大为1G,里头放有 100M文件,那剩余的900M仍然可为其它应用程序所使用,但它所占用的100M内存,是绝不会被系统回收重新划分的,否则谁还敢往里头存文件呢?

默认系统就会加载/dev/shm ,它就是所谓的tmpfs,有人说跟ramdisk(虚拟磁盘),但不一样。象虚拟磁盘一样,tmpfs 可以使用您的 RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个 mkfs 之类的命令才能真正地使用它,tmpfs 是一个文件系统,而不是块设备;您只是安装它,它就可以使用了。

  tmpfs有以下优势:

  1,动态文件系统的大小。

  2,tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的。

  3,tmpfs 数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。所以有必要做一些脚本做诸如加载,绑定的操作。

二、修改/dev/shm大小

默认的最大一半内存大小在某些场合可能不够用,并且默认的inode数量很低一般都要调高些,这时可以用mount命令来管理它。

#mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm

在2G的机器上,将最大容量调到1.5G,并且inode数量调到1000000,这意味着大致可存入最多一百万个小文件。

如果需要永久修改/dev/shm的值,需要修改/etc/fstab

tmpfs /dev/shm tmpfs defaults,size=1.5G 0 0

#mount -o remount /dev/shm

三、/dev/shm应用

  首先在/dev/shm建个tmp文件夹,然后与实际/tmp绑定

  #mkdir /dev/shm/tmp

  #chmod 1777 /dev/shm/tmp

  #mount –bind /dev/shm/tmp /tmp(–bind )

  在使用mount –bind olderdir newerdir命令来挂载一个目录到另一个目录后,newerdir的权限和所有者等所有信息会发生变化。挂载后的目录继承了被挂载目录的所有属性,除了名称。Oracle 11g的amm内存管理模式就是使用/dev/shm,所以有时候修改MEMORY_TARGET或者MEMORY_MAX_TARGET会出现ORA-00845的错误

相关内容

热门资讯

卖“毒蛋”的人,抓到了 作者 | 何国胜 编辑 | 向现“(人)抓到了,目前案件正在侦办中。”7月28日晚间,苏州禁毒部门有...
尺素金声丨实施零关税国家达63... 海关总署发布的数据显示,今年5月1日起,我国对53个非洲建交国全面实施零关税举措,目前,我国实施零关...
职业索赔盯上基层诊所,倒逼用药... 文 | 布丁基层诊所正在被职业索赔盯上。据新京报,去年夏天,一男子走进河南南阳一家诊所,要求购买三瓶...
“西瓜我全买了”就可以肆意妄为... 拿西瓜砸了人,把瓜都买了,就能一走了之吗?事实证明,这套逻辑在法治社会行不通。7月28日晚,据海峡都...
科学家在日本广岛发现新物质,系... 在美国对日本广岛进行原子弹轰炸近81年后,科学家们在广岛的沙滩上发现了一种奇异且从未被发现过的新物质...
AI失控,反噬开始 作者 | 贺一 编辑 | 阿树近期,中国开源模型在美国频繁引发热议。7月28日,月之暗面发布Kimi...
“总统千金天价离婚”,分到43... 2026年7月24日下午,首尔高等法院,一场持续近十年的司法拉锯战终于接近尾声。法庭裁定SK集团会长...
巴基斯坦,又拿下一个历史性协议 全世界都没想到,接连的中东大战,巴基斯坦正成为最大赢家。去年以色列追杀哈马斯,空袭卡塔尔首都,阿拉伯...
汇正财经贺峰的一对一指导服务怎...   对于考虑购买证券投资顾问服务的投资者来说,'一对一指导服务怎么样'是一个重要的考量维度。需要首先...
重庆失联00后网格员龚宝冬确认...   重庆失联00后网格员龚宝冬确认遇难  【重庆失联00后网格员龚宝冬确认遇难】2026年7月29日...