今天早上到办公室,开发说测试环境应用程序挂掉,看日志说是连接不上数据库,经查看,数据库在晚上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.8GB的SHARED_POOL应该是够用的,可是测试的有需求,只好将MEMORY_TARGET改成8GB,我们的服务器是16GB的内存的RHEL 5.4操作系统,昨天下午测试人员一直在这套系统上工作,没有问题,晚上10点,数据库自动收集统计信息时,数据库挂掉。导致数据库挂掉的原因是MEMORY_TARGET超过了/dev/shm的大小。
/dev/shm是LINUX的tmpfs,一般都被理解为虚拟磁盘,但是它和虚拟磁盘还不一样,tmpfs是个文件系统,并不像虚拟磁盘是个块设备,tmpfs可以使用内存,内存不足时使用交换分区,也不需要使用mkfs命令创建,典型的 tmpfs 文件系统会完全驻留在内存中,所以对tmpfs的操作速度非常快,但是由于数据会保留在内存中,所以,当服务器关闭或重启后,这里面的数据会丢失。ORACLE使用的也是tmpfs,所以,MEMORY_TARGET不能超过/dev/shm的大小,就像MEMORY_TARGET不能超过MEMORY_MAX_TARGET和SGA_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
tmpfs为7.9GB,也没有达到8GB,当MEMORY_TARGE=8GB而tmpfs没有完全被使用的情况下,数据库可以正常运行,但是当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数据库无法启动,但之前为什么可以启动很奇怪。
分享到:
相关推荐
5. **错误处理**:在进行数据库操作时,可能会遇到各种错误,如网络问题、权限不足或SQL语法错误等。易语言提供了错误处理机制,可以捕获并处理这些错误。通常,我们需要在执行可能出错的代码块前后设置错误捕获和...
如果`/dev/shm`的大小不足,可能会影响Oracle的性能和稳定性。 2. **调整大小**:根据Oracle数据库的配置和预期负载,需要适当增大`/dev/shm`分区的大小。这通常通过修改`/etc/fstab`文件完成。例如,可以添加一行`...
如果设置过大,可能会导致数据库无法启动。 - 查看`alert`日志可以发现错误信息,例如内存不足问题。 - 可以通过检查系统共享内存区域`/dev/shm`的大小来调整`MEMORY_TARGET`的值。 5. **设置控制文件位置** - ...
此外,过大的`/dev/shm`可能会导致系统性能下降,因为内存资源是有限的,过多的共享内存可能会挤占其他进程的内存需求。 除了`size`参数,`/etc/fstab`中的`tmpfs`挂载选项还可以包含其他参数,如`nodev`(禁止在该...
F20 自动打标机 shm
【标题】"shm框架整合maven架构demo"指的是一个整合了SpringMVC 4、Hibernate 4和MyBatis 3的项目示例,它基于Maven构建系统进行管理。这个项目旨在展示如何将这三个流行的Java开发框架有效地结合在一起,以实现一个...
标题中的"shm.rar_linux shm_shm_shm 封装"指出,这是一个关于Linux下的共享内存封装库,可能是由个人开发的自定义实现。 共享内存的优势在于它无需通过传统的I/O操作来传递数据,而是直接在内存中读写,从而提高了...
F24 自动封箱机 shm
E41 医药胶囊瓶灌装机 shm
Dahua大华DH-SHM1063B 使用说明书.pdf 本文档为Dahua大华DH-SHM1063B总线控制模块的使用说明书,旨在指导用户正确使用该设备,避免设备损坏、数据丢失、设备性能降低或不可预知的结果。 前言 本文档使用了多种符号...
标题中的"SHM12.0.zip"表明这是一个压缩文件,使用了ZIP格式进行打包,而"SHM"可能是特定软件或项目的缩写。描述提到这是H.265/SHVC(Scalable High Efficiency Video Coding)的测试软件,这是一项高级视频编码标准...
修改`/etc/sysctl.conf`文件以优化内核参数,如`fs.aio-max-nr`(异步I/O请求的最大数量)、`fs.file-max`(系统可打开文件的最大数量)、`kernel.shm*`(共享内存参数)和`net.ipv4.ip_local_port_range`(可用...
** shm 队列详解 ** shm,全称Shared Memory,即共享内存,是操作系统提供的一种进程间通信(IPC,Inter-Process Communication)机制。它允许不同进程访问同一块内存区域,从而实现数据的快速交换。在“shm.rar_...
实现了从通达信软件的数据文件中提取数据保存至MySQL的功能,每运行一次就同步到最新状态
在使用Dahua大华DH-SHM1061B-T产品时,用户务必按照要求使用电池,否则可能导致电池起火、爆炸或燃烧的危险! * 请务必按照要求使用电池,否则可能导致电池起火、爆炸或燃烧的危险! * 更换电池时只能使用同样类型...
利用系统五共享内存实现进程间数据共享 shm_read.c shm_write.c
这表示省公司主机只采用共享内存连接时,该文件的内容为 sheng_shm。 4. Informix 服务器设置 Informix 服务器的设置包括设置运行环境、确定连接方式等步骤。用户可以通过调用文件.profile,设置运行环境,确定...
通达信股票代码文件名由shex.tnf,szex.tnf变更为shm.tnf,szm.tnf,每条记录的长度由250字节增加到314字节,相应字段的地址偏移量发生变化
photoshare.db-shm