`
streamsong
  • 浏览: 82176 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SHM不足导致导致数据库宕机

 
阅读更多

今天早上到办公室,开发说测试环境应用程序挂掉,看日志说是连接不上数据库,经查看,数据库在晚上10点的时候挂掉,告警日志报错如下:

WARNING: You are trying to use the MEMORY_TARGET feature. This feature requires the /dev/shm file system to be mounted for at least 7868514304 bytes.

/dev/shm is either not mounted or is mounted with available space less than this size. Please fix this so that MEMORY_TARGET can work as expected.

Current available is 7857356800 and used is 562315264 bytes. Ensure that the mount point is /dev/shm for this directory.

memory_target needs larger /dev/shm

         启动数据库,报ORA-00845错误。

SQL> startup

ORA-00845: MEMORY_TARGET not supported on this system

原因是昨天下午3点多,测试人员说SHARED_POOL不够,要求增大SHARED_POOL,我们的数据库是11gR2,内存自动管理,MEMORY_TARGET的值为5GB,可是观察AWR报告的内存建议,1.8GBSHARED_POOL应该是够用的,可是测试的有需求,只好将MEMORY_TARGET改成8GB,我们的服务器是16GB的内存的RHEL 5.4操作系统,昨天下午测试人员一直在这套系统上工作,没有问题,晚上10点,数据库自动收集统计信息时,数据库挂掉。导致数据库挂掉的原因是MEMORY_TARGET超过了/dev/shm的大小。

    /dev/shmLINUXtmpfs,一般都被理解为虚拟磁盘,但是它和虚拟磁盘还不一样,tmpfs是个文件系统,并不像虚拟磁盘是个块设备,tmpfs可以使用内存,内存不足时使用交换分区,也不需要使用mkfs命令创建,典型的 tmpfs 文件系统会完全驻留在内存中,所以对tmpfs的操作速度非常快,但是由于数据会保留在内存中,所以,当服务器关闭或重启后,这里面的数据会丢失。ORACLE使用的也是tmpfs,所以,MEMORY_TARGET不能超过/dev/shm的大小,就像MEMORY_TARGET不能超过MEMORY_MAX_TARGETSGA_TARGET不能超过SGA_MAX_SIZE的大小一样。

    我们的服务器16GB内存,/dev/shm的大小默认是操作系统内存的一半,但是由于16G的内存实际达不到16GB,所以/dev/shm的默认大小达不到8GB,如下:

[oracle@dbserver1 ~]$ cat /proc/meminfo | grep MemTotal

MemTotal:       16444672 kB

    可以看到内存15.68GB,并没有达到16GB

[oracle@dbserver1 ~]$ df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/vg_dbserver1-lv_root

                       50G   19G   29G  40% /

tmpfs                 7.9G  4.6G  3.3G  59% /dev/shm

/dev/sda1             485M   48M  412M  11% /boot

/dev/mapper/vg_dbserver1-lv_home

                      2.7T  268G  2.3T  11% /home

    tmpfs7.9GB,也没有达到8GB,当MEMORY_TARGE=8GBtmpfs没有完全被使用的情况下,数据库可以正常运行,但是当tmpfs完全被使用,数据库分不到新的内存,就挂掉了,解决方法是增大tmpfs的大小,或者将MEMORY_TARGE调小,为满足测试人员的需求,只好调整tmpfs的大小。

[root@dbserver2 ~]# mount -o size=15000M -o nr_inodes=1000000 -o noatime,nodirat

ime -o remount /dev/shm

         注意:利用这种方式增大tmpfs大小,需要在tmpfs没有使用的情况下才可以,否则会因为无法remount而报错。

[oracle@dbserver1 ~]$ df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/vg_dbserver1-lv_root

                       50G   19G   29G  40% /

tmpfs                  15G     0   15G   0% /dev/shm

/dev/sda1             485M   48M  412M  11% /boot

/dev/mapper/vg_dbserver1-lv_home

                      2.7T  268G  2.3T  11% /home

此时,tmpfs被改为15GB,并且inode数量调到1000000,这意味着大致可存入最多一百万个小文件,当/dev/shm使用内存空间不够时可以占用swap的空间,所以不用担心存储空间不够用的问题。

启动数据库,问题解决。

在之后的测试中,如果修改MEMORY_TARGET大于SHM数据库无法启动,但之前为什么可以启动很奇怪。

0
0
分享到:
评论

相关推荐

    易语言DB数据库操作例子

    5. **错误处理**:在进行数据库操作时,可能会遇到各种错误,如网络问题、权限不足或SQL语法错误等。易语言提供了错误处理机制,可以捕获并处理这些错误。通常,我们需要在执行可能出错的代码块前后设置错误捕获和...

    configure /dev/shm before Install Oracle 11gR2 on Ubuntu 11.10 server (64-bit)

    如果`/dev/shm`的大小不足,可能会影响Oracle的性能和稳定性。 2. **调整大小**:根据Oracle数据库的配置和预期负载,需要适当增大`/dev/shm`分区的大小。这通常通过修改`/etc/fstab`文件完成。例如,可以添加一行`...

    linux下手工创建数据库

    如果设置过大,可能会导致数据库无法启动。 - 查看`alert`日志可以发现错误信息,例如内存不足问题。 - 可以通过检查系统共享内存区域`/dev/shm`的大小来调整`MEMORY_TARGET`的值。 5. **设置控制文件位置** - ...

    如何修改和限制shm的大小

    此外,过大的`/dev/shm`可能会导致系统性能下降,因为内存资源是有限的,过多的共享内存可能会挤占其他进程的内存需求。 除了`size`参数,`/etc/fstab`中的`tmpfs`挂载选项还可以包含其他参数,如`nodev`(禁止在该...

    F20 自动打标机 shm.zip

    F20 自动打标机 shm

    shm框架整合maven架构demo

    【标题】"shm框架整合maven架构demo"指的是一个整合了SpringMVC 4、Hibernate 4和MyBatis 3的项目示例,它基于Maven构建系统进行管理。这个项目旨在展示如何将这三个流行的Java开发框架有效地结合在一起,以实现一个...

    shm.rar_linux shm_shm_shm 封装

    标题中的"shm.rar_linux shm_shm_shm 封装"指出,这是一个关于Linux下的共享内存封装库,可能是由个人开发的自定义实现。 共享内存的优势在于它无需通过传统的I/O操作来传递数据,而是直接在内存中读写,从而提高了...

    F24 自动封箱机 shm.zip

    F24 自动封箱机 shm

    E41 医药胶囊瓶灌装机 shm.zip

    E41 医药胶囊瓶灌装机 shm

    Dahua大华DH-SHM1063B 使用说明书.pdf

    Dahua大华DH-SHM1063B 使用说明书.pdf 本文档为Dahua大华DH-SHM1063B总线控制模块的使用说明书,旨在指导用户正确使用该设备,避免设备损坏、数据丢失、设备性能降低或不可预知的结果。 前言 本文档使用了多种符号...

    SHM12.0.zip

    标题中的"SHM12.0.zip"表明这是一个压缩文件,使用了ZIP格式进行打包,而"SHM"可能是特定软件或项目的缩写。描述提到这是H.265/SHVC(Scalable High Efficiency Video Coding)的测试软件,这是一项高级视频编码标准...

    ORACLE数据库安装

    修改`/etc/sysctl.conf`文件以优化内核参数,如`fs.aio-max-nr`(异步I/O请求的最大数量)、`fs.file-max`(系统可打开文件的最大数量)、`kernel.shm*`(共享内存参数)和`net.ipv4.ip_local_port_range`(可用...

    shm.rar_shm 队列

    ** shm 队列详解 ** shm,全称Shared Memory,即共享内存,是操作系统提供的一种进程间通信(IPC,Inter-Process Communication)机制。它允许不同进程访问同一块内存区域,从而实现数据的快速交换。在“shm.rar_...

    通达信数据文件转成数据库

    实现了从通达信软件的数据文件中提取数据保存至MySQL的功能,每运行一次就同步到最新状态

    Dahua大华DH-SHM1061B-T 使用说明书.pdf

    在使用Dahua大华DH-SHM1061B-T产品时,用户务必按照要求使用电池,否则可能导致电池起火、爆炸或燃烧的危险! * 请务必按照要求使用电池,否则可能导致电池起火、爆炸或燃烧的危险! * 更换电池时只能使用同样类型...

    shm.rar_shm

    利用系统五共享内存实现进程间数据共享 shm_read.c shm_write.c

    informix数据库使用

    这表示省公司主机只采用共享内存连接时,该文件的内容为 sheng_shm。 4. Informix 服务器设置 Informix 服务器的设置包括设置运行环境、确定连接方式等步骤。用户可以通过调用文件.profile,设置运行环境,确定...

    通达信股票代码数据结构shm.tnf

    通达信股票代码文件名由shex.tnf,szex.tnf变更为shm.tnf,szm.tnf,每条记录的长度由250字节增加到314字节,相应字段的地址偏移量发生变化

    photoshare.db-shm

    photoshare.db-shm

Global site tag (gtag.js) - Google Analytics