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

oracle11g ORA-00845: MEMORY_TARGET not supported on this system

2012-05-26 02:47 519 查看
今天在升级oracle11g11.1.0.6版本数据库到11.1.0.7版本,在安装补丁p6890831_111070_Linux-x86.zip后,接着通过dbua升级数据库时,出现“MEMORY_TARGET
not supported on this system”的提示,接着数据库升级就中止了,于是,仔细查阅了这个问题,原来oracle 11g版本不但在升级时会出现这个问题,如果设置MEMORY_TARGET不当,也会出现此问题。
其实,这个问题是SGA的设置超出了操作系统/dev/shm大小导致的。
下面是老杨写的关于此错误的一篇文章:

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"

IXDBA.NET社区论坛

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,然后就可以启动数据库了。

注意:我在修改的时候不能umount shm磁盘,在执行这个命令才生效了:mount -o remount /dev/shm


应用程序如果遵循POSIX或者使用GLIBC(2.2和更高版本),通常使用/dev/shm作共享内存(shm_open,shm_unlink)。/dev/shm是一个临时文件系统(tmpfs),可以从/etc/fstab中mount。因此,支持标准的参数例如"size",可以用来增加或者减少在/dev/shm上的tmpfs大小.(默认的,它的大小是系统RAM的一半)。

  例如:为了将/dev/shm的大小增加到1GB,修改/etc/fstab的这行:默认的:

  [Copy to clipboard]

  CODE:

  none /dev/shm tmpfs defaults 0 0

  改成:

  [Copy to clipboard]

  CODE:

  none /dev/shm tmpfs defaults,size=1024M 0 0

  size参数也可以用G作单位:size=1G。

  重新mount /dev/shm使之生效:

  [Copy to clipboard]

  CODE:

  # mount -o remount /dev/shm

  马上可以用"df -h"命令检查变化。

  附加信息:查看mount的man page看tmpfs选项。更多信息请查看

  /usr/share/doc/kernel-doc-version/Documentation/filesystems/tmpfs.txt文件。

  同样的内容在这里:

  http://www.kernel.org/pub/Linux/kernel/people/marcelo/linux-2.4/Documentation/filesystems/tmpfs.txt
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: