当前位置:  数据库>oracle

Linux下/dev/shm的大小引发ORA-00845: MEMORY_TARGET not supported on this system

    来源: 互联网  发布时间:2017-06-17

    本文导语: Linux操作系统,Oracle 11.2.0.4 启动实例时出现如下错误: SQL> startup nomount pfile=/u03/app/oracle/11.2.0/db/dbs/initcssb.oraORA-00845: MEMORY_TARGET not supported on this system 查看错误帮助信息 [oracle11@oracle11g dbs]$ oerr ora 84500845, 00000, "MEMORY_TARGET not supported ...

Linux操作系统,Oracle 11.2.0.4 启动实例时出现如下错误:
SQL> startup nomount pfile=/u03/app/oracle/11.2.0/db/dbs/initcssb.ora
ORA-00845: MEMORY_TARGET not supported on this system


查看错误帮助信息
[oracle11@oracle11g dbs]$ oerr ora 845
00845, 00000, "MEMORY_TARGET not supported on this system"
// *Cause: The MEMORY_TARGET parameter was not supported on this operating system or /dev/shm was not sized correctly on Linux.
// *Action: Refer to documentation for a list of supported operating systems. Or, size /dev/shm to be at least the SGA_MAX_SIZE on each Oracle instance running on the system.


错误原因是这个操作系统不支持MEMORY_TARGET参数或/dev/shm在Linux上的大小不正确造成的,这是该操作系统上的第二个实例,第一个实例设置了MEMORY_TARGET参数,所以并不是不支持这个参数,原因就只有/dev/shm大小不正确了,解决方法是要将/dev/shm的最小值设置为操作系统上运行实例SGA_MAX_SIZE所设置的大小。/dev/shm/是linux下一个目录,/dev/shm目录不在磁盘上,而是在内存里,因此使用linux /dev/shm/的效率非常高,直接写进内存。
tmpfs有以下特点:
1.tmpfs 是一个文件系统,而不是块设备;您只是安装它,它就可以使用了。
2.动态文件系统的大小。
3.tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的。
4.tmpfs 数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。所以有必要做一些脚本做诸如加载、绑定的操作。

linux下/dev/shm的容量默认最大为内存的一半大小,使用df -h命令可以看到。但它并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节;如果它最大为1G,里头放有100M文件,那剩余的900M仍然可为其它应用程序所使用,但它所占用的100M内存,是绝不会被系统回收重新划分的。

linux /dev/shm容量(大小)是可以调整,在有些情况下(如oracle数据库)默认的最大一半内存不够用,并且默认的inode数量很低一般都要调高些,这时可以用mount命令来管理它。
mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm
在2G的机器上,将最大容量调到1.5G,并且inode数量调到1000000,这意味着大致可存入最多一百万个小文件通过/etc/fstab文件来修改/dev/shm的容量(增加size选项即可),修改后,重新挂载即可。

这里该实例的SGA_MAX_SIZE为1G,下面的命令查看/dev/shm的大小。
[root@oracle11g ~]# df -lh
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              23G  20G  1.6G  93% /
/dev/sdb1            9.9G  5.8G  3.6G  62% /u02
tmpfs                2G    1.3M  0.7G  65% /dev/shm


从上面结果可以看到/dev/shm可用大小只有0.7G,执行下面的命令来进行修改。
[root@oracle11g ~]# vi /etc/fstab
LABEL=/                /                      ext3    defaults        1 1
/dev/sdb1              /u02                    ext3    defaults        1 2
tmpfs                  /dev/shm                tmpfs  defaults,size=4G        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                  /sys                    sysfs  defaults        0 0
proc                    /proc                  proc    defaults        0 0
LABEL=SWAP-sda2        swap                    swap    defaults        0 0

"/etc/fstab" 7L, 540C written


卸载/dev/shm,但/dev/shm正被访问
[root@oracle11g ~]#  umount /dev/shm
umount: /dev/shm: device is busy
umount: /dev/shm: device is busy


用fuser处理,fuser命令,-k:kill processes accessing the named file(杀死所有正在访问指定文件的进程),-m 表示指定文件所在的文件系统或者块设备(处于 mount 状态)。所有访问该文件系统的进程都被列出。
[root@oracle11g ~]# fuser -km /dev/shm
/dev/shm:            3152m  3154m  3156m  3160m  3162m  3164m  3166m  3168m  3170m  3172m  3174m  3176m  3178m  3180m  3182m  3184m  3186m  3193m  3195m  3197m  3199m  3201m  3236m  3248m  3250m  3256m  3292m  4366m
[root@oracle11g ~]#  umount /dev/shm
[root@oracle11g ~]# mount /dev/shm
[root@oracle11g ~]# df -lh
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              23G  20G  1.6G  93% /
/dev/sdb1            9.9G  5.8G  3.6G  62% /u02
tmpfs                4.0G    0  4.0G  0% /dev/shm


再重新启动实例
SQL> startup nomount pfile=/u03/app/oracle/11.2.0/db/dbs/initcssb.ora
 ORACLE instance started.

Total System Global Area 1334786560 bytes
 Fixed Size 1364480 bytes
 Variable Size 171970048 bytes
 Database Buffers 1155189248 bytes
 Redo Buffers 6262784 bytes

小结:Oracle 11g的AMM内存管理模式就是使用/dev/shm,所以有时候修改MEMORY_TARGET或者MEMORY_MAX_TARGET会出现ORA-00845的错误,在安装配置实例内存时为了避免出现这个故障可以对Linux系统中的/dev/shm进行调整,让其可用大小至少等于实例的sga_max_size。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux c/c++ IP字符串转换成可比较大小的数字
  • windows 2000 访问linux下smaba时候 2G以上大小的文件显示出来的大小很奇怪
  • 根据文件大小查找文件的find命令举例(Linux,centos,redhat)
  • 在linux里进行磁阵划分(连接了实际的外界磁盘阵列)时,划分出来的实际大小和配置大小不同
  • linux内存管理中段的大小是固定值(或者有个最大值),还是随机根据运行程序需要设定段的大小
  • 关于LINUX下的大小写问题.着急
  • 求教:在Linux下的C语言中如何获取分区的剩余大小和文件的大小
  • 为什么linux不同的发行版本的大小有这么大的差别?
  • 修改LINUX内核让系统不区分大小写!
  • 请教,如何修改在虚拟机vmware中安装的linux的ramdisk大小?
  • linux c 如何创建固定大小的文件?
  • partitionmagic调整LINUX分区大小后的问题
  • linux文件系统调整大小的方法(linux调整分区大小)
  • linux 获得远程文件大小
  • 在LINUX环境下,怎样限定SendMail邮件服务器中邮件用户使用邮件空间的大小。。。。。。
  • 在Linux命令行方式下怎么看每个文件夹的大小
  • linux目录的大小是如何计算的?
  • 如何查看linux pagesize的大小
  • LINUX如何调整POSIX消息队列大小
  • linux中makefile大小写问题
  • 高分求救:Linux下如何改变Ramdisk大小!急!!在线等待!!!
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • secureCRT下Linux终端汉字乱码解决方法
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • Linux c字符串中不可打印字符转换成16进制
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • php iis7站长之家
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3