您的位置:首页 > 数据库 > Oracle

初识/dev/shm & oracle(转)

2016-10-31 09:14 405 查看
学习了原文地址:初识/dev/shm & oracle(转)作者:奶奶的熊转自http://space.itpub.net/25881373/viewspace-696991
今天,一同事问到了/dev/shm目录下为什么会有很多以ora_开头的文件,都有什么用途。虽然经常在linux系统下看到shm设备,但却从没有太多的关心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版本开始,引入了一个自动内存[u][b]管理[/b][/u](Automatic
Memory Management)特性,该特性需要更多的共享内存(/dev/shm),因此如果决定应用该特性的话,
必须要确保共享内存大于ORACLE 中初始化参数MEMORY_MAX_TARGET
和MEMORY_TARGET(特别提示,这两个参数即自动内存管理特性对应的初始化参数)的值。

如果在初始化参数中设置了MEMORY_MAX_TARGET 和MEMORY_TARGET 两参数为非0
值,并且不符合系统共享内存,则ORACLE 数据库启动时,就会触发ORA-00845:MEMORY_TARGET
not supported on this system 错误。

下面的摘自yangtingkun的技术文档:

http://yangtingkun.itpub.net/post/468/408235

Oracle 11g的Linux版本在修改了MEMORY_TARGET或者SGA_TARGET后启动可能会报错:
SQL> shutdown
immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORA-00845: MEMORY_TARGET not supported on this
system

这个问题是由于设置SGA的大小超过了操作系统/dev/shm的大小:
[root@enterprice64 ~]# df -k /dev/shm

Filesystem 1K-blocks Used Available Use% Mounted on

tmpfs 4089416 0 4089416 0% /dev/shm

Oracle在metalink的文档:Doc
ID:Note:460506.1中进行了说明。解决这个问题只有两个方法,一种是修改初始化参数,使得初始化参数中SGA的设置小于/dev/shm的大小,另一种方法就是调整/dev/shm的大小。
修改/dev/shm的大小可以通过修改/etc/fstab来实现:
[root@enterprice64 ~]# vi
/etc/fstab

LABEL=/ / ext3 defaults 1 1

LABEL=/boot /boot ext3 defaults 1 2

LABEL=/data /data ext3 defaults 1 2

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

#tmpfs /dev/shm tmpfs defaults 0 0

tmpfs /dev/shm tmpfs defaults,size=10240M 0 0

LABEL=/home /home ext3 defaults 1 2

LABEL=/opt /opt ext3 defaults 1 2

proc /proc proc defaults 0 0

sysfs /sys sysfs defaults 0 0

LABEL=/usr /usr ext3 defaults 1 2

LABEL=/var /var ext3 defaults 1 2

LABEL=SWAP-sda8 swap swap defaults 0 0

~

~

"/etc/fstab" 13L, 965C written

[root@enterprice64 ~]# umount /dev/shm

[root@enterprice64 ~]# mount /dev/shm

[root@enterprice64 ~]# df -k /dev/shm

Filesystem 1K-blocks Used Available Use% Mounted on

tmpfs 10485760 0 10485760 0% /dev/shm

[root@enterprice64 ~]# su - oracle

[oracle@enterprice64 ~]$ sqlplus "/ as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production
on Tue Oct 23 15:42:42 2007

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

Connected to an idle
instance.

SQL> startup

ORACLE instance started.

Total System Global Area 4743446528
bytes

Fixed Size 2143824 bytes

Variable Size 3892316592 bytes

Database Buffers 805306368 bytes

Redo Buffers 43679744 bytes

Database mounted.

Database opened.

修改/etc/fstab,重新mount /dev/shm,然后就可以启动数据库了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: