2014.11.18
下午在检查一个新上线的生产库的时候,发现了一个问题:
为什么/u01 使用了41G,明明这个目录下面只有oracle的安装软件和system.sysaux表空间,大小加起来也就几个G,而且使用du -sh /u01 显示确实只有8.3G。
同时 这里显示/dev/shm使用了30G,我就纳闷呢!找原因。
去到/dev下面 再du -sh 一下,显示shm 有三十多个G,同时去到看到大量的ora_ORACLE_SID_开头的文件,文件大小加起来刚开30G左右。
第一次看到,一头雾水,还以为是数据库里面的那个参数位置指定错了
于是查看归档路径,查一些可以查看的参数路径,结果一无所获。
为什么这下数据库产生的文件会跑到/dev/shm 下面呢。
网上找到了一篇相关了博客,截取一点解释:1)什么是/dev/shm
它就是所谓的tmpfs,从名字可以看出是一个临时的文件系统,有人说跟ramdisk(虚拟磁盘),但不一样。使用/dev/shm的好处就是读取数据相当快,因为典型的 tmpfs 文件系统会
完全驻留在 RAM 中,读写几乎可以是瞬间的。同时,要注意的是,在/dev/shm中的文件在系统重启后会被清除掉。
tmpfs默认大小一般为物理内存的一半,当然可以修改tmpfs的大小。一般在fstab上可以看到
tmpfs /dev/shm tmpfs defaults 0 0
如果要将tmpfs的大小修改为4G,可以对上面的做适当的修改即可,如:
tmpfs /dev/shm tmpfs defaults,size=4096M 0 0
(2)/dev/shm对oracle 11g的影响
ORACLE 从11g版本开始,引入了一个自动内存管理(Automatic Memory Management)特性,该特性需要更多的共享内存(/dev/shm),因此如果决定应用该特性的话,
必须要确保共享内存大于ORACLE 中初始化参数MEMORY_MAX_TARGET 和MEMORY_TARGET(特别提示,这两个参数即自动内存管理特性对应的初始化参数)的值。
Oracle在metalink的文档:Doc ID:Note:460506.1中进行了说明。解决这个问题只有两个方法,一种是修改初始化参数,使得初始化参数中SGA的设置小于/dev/shm的大小,
另一种方法就是调整/dev/shm的大小。