ORA-00845: MEMORY_TARGET not supported on this system
2012-05-30 17:44
465 查看
今天晚上新装一台Oracle 11g的数据库,打算将SGA设大一点,知道 11g 中有一个新特新 MEMORY_TARGET,于是尝一下鲜,谁知报了个 ORA-00845,报错比较容易迷惑人,不借助Google真得想半天:
SQL> alter system set memory_max_target=3G scope=spfile ;
System altered.
SQL> alter system set memory_target=2G scope=spfile ;
System altered.
SQL>
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup ;
ORA-00845: MEMORY_TARGET not supported on this system
来自Oracle的官方解析是:
Starting with Oracle Database 11g, the Automatic Memory Management feature requires more shared memory (/dev/shm)and file descriptors. The size of the shared memory should be at least the greater of MEMORY_MAX_TARGET and MEMORY_TARGET
for each Oracle instance on the computer. If MEMORY_MAX_TARGET or MEMORY_TARGET is set to a non zero value, and an incorrect size is assigned to the shared memory, it will result in an ORA-00845 error at startup.
简单来说就是 MEMORY_MAX_TARGET 的设置不能超过 /dev/shm 的大小:
[oracle@FWDB FWDB]$ df -h | grep shm
tmpfs 2.0G 0 2.0G 0% /dev/shm
还真是撞到这个枪口上了:
马上把它加大:
[root@FWDB ~]# cat /etc/fstab | grep tmpfs
tmpfs /dev/shm tmpfs defaults,size=4G 0 0
现在可以通过重启使这个配置生效,也可以通过重新挂载来修改其大小:
[root@FWDB ~]# mount -o remount,size=4G /dev/shm
[root@FWDB ~]# df -h | grep shm
tmpfs 4.0G 0 4.0G 0% /dev/shm
再次启动数据库,没有报错了。
ORA-00845: MEMORY_TARGET not supported on this system 失败的解决方案
在RHL4的Oralce11:startup时报错:
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system
官方解释:
ORA-00845: 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.
<!-- class="msgexplan" -->
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.
意思是oracle SGA的大小超过了系统shm的大小,有两种解决方案:1.修改shm的大小 .2 修改SGA_MAX_SIZE的大小。
建议修改shm,shm类似于Windows平台的虚拟内存,shm默认自动调节大小,大约是内存的一半。我的内存是1G,查看shm的大小是508M,而oralce默认的SGA大小是422M.因为shm的剩余空间是随着应用程序的变化而调节的,当shm小于SAG,启动oracle就会出现此问题。
解决方案是自定义shm的大小,需要修改/etc/fstab文件:
[oracle@oracle11g ~]$ vi /etc/fstab
把文件中:
none /dev/shm tmpfs defaults 0 0
修改为:
none /dev/shm tmpfs defaults,size=1G 0 0
然后保存退出,重新挂载shm
[oracle@oracle11g ~]$ umount /dev/shm
[oracle@oracle11g ~]$ mount /dev/shm
查看shm大小
[oracle@oracle11g ~]$ df -h |grep shm
none 1.0G 308M 200M 30% /dev/shm
重新启动oracle,OK!
也可以是以下:
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
也可以使用如下命令修改
# umount tmpfs
# mount -t tmpfs shmfs -o size=1500m /dev/shm
这个命令之是临时修改SWQP分区大小而已,建议使用上面的命令进行永久性修改
测试是否能正常启动
[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
,然后就可以启动数据库了。
SQL> alter system set memory_max_target=3G scope=spfile ;
System altered.
SQL> alter system set memory_target=2G scope=spfile ;
System altered.
SQL>
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup ;
ORA-00845: MEMORY_TARGET not supported on this system
来自Oracle的官方解析是:
Starting with Oracle Database 11g, the Automatic Memory Management feature requires more shared memory (/dev/shm)and file descriptors. The size of the shared memory should be at least the greater of MEMORY_MAX_TARGET and MEMORY_TARGET
for each Oracle instance on the computer. If MEMORY_MAX_TARGET or MEMORY_TARGET is set to a non zero value, and an incorrect size is assigned to the shared memory, it will result in an ORA-00845 error at startup.
简单来说就是 MEMORY_MAX_TARGET 的设置不能超过 /dev/shm 的大小:
[oracle@FWDB FWDB]$ df -h | grep shm
tmpfs 2.0G 0 2.0G 0% /dev/shm
还真是撞到这个枪口上了:
马上把它加大:
[root@FWDB ~]# cat /etc/fstab | grep tmpfs
tmpfs /dev/shm tmpfs defaults,size=4G 0 0
现在可以通过重启使这个配置生效,也可以通过重新挂载来修改其大小:
[root@FWDB ~]# mount -o remount,size=4G /dev/shm
[root@FWDB ~]# df -h | grep shm
tmpfs 4.0G 0 4.0G 0% /dev/shm
再次启动数据库,没有报错了。
ORA-00845: MEMORY_TARGET not supported on this system 失败的解决方案
在RHL4的Oralce11:startup时报错:
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system
官方解释:
ORA-00845: 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.
<!-- class="msgexplan" -->
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.
意思是oracle SGA的大小超过了系统shm的大小,有两种解决方案:1.修改shm的大小 .2 修改SGA_MAX_SIZE的大小。
建议修改shm,shm类似于Windows平台的虚拟内存,shm默认自动调节大小,大约是内存的一半。我的内存是1G,查看shm的大小是508M,而oralce默认的SGA大小是422M.因为shm的剩余空间是随着应用程序的变化而调节的,当shm小于SAG,启动oracle就会出现此问题。
解决方案是自定义shm的大小,需要修改/etc/fstab文件:
[oracle@oracle11g ~]$ vi /etc/fstab
把文件中:
none /dev/shm tmpfs defaults 0 0
修改为:
none /dev/shm tmpfs defaults,size=1G 0 0
然后保存退出,重新挂载shm
[oracle@oracle11g ~]$ umount /dev/shm
[oracle@oracle11g ~]$ mount /dev/shm
查看shm大小
[oracle@oracle11g ~]$ df -h |grep shm
none 1.0G 308M 200M 30% /dev/shm
重新启动oracle,OK!
也可以是以下:
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
也可以使用如下命令修改
# umount tmpfs
# mount -t tmpfs shmfs -o size=1500m /dev/shm
这个命令之是临时修改SWQP分区大小而已,建议使用上面的命令进行永久性修改
测试是否能正常启动
[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
,然后就可以启动数据库了。
相关文章推荐
- ORA-00845: MEMORY_TARGET not supported on this system
- ORACLE 报错:ORA-00845: MEMORY_TARGET not supported on this system
- ORA-00845: MEMORY_TARGET not supported on this system
- ORA-00845: MEMORY_TARGET not supported on this system
- ora-00845 MEMORY_TARGET not supported on this system 的问题
- ORA-00845: MEMORY_TARGET not supported on this system
- ORA-00845: MEMORY_TARGET not supported on this system
- ORA-00845: MEMORY_TARGET not supported on this system
- ORACLE常见报错之:ORA-00845: MEMORY_TARGET not supported on this system
- ORA-00845: MEMORY_TARGET not supported on this system
- oracle11g ORA-00845: MEMORY_TARGET not supported on this system
- ORA-00845: MEMORY_TARGET not supported on this system问题处理
- ORA-00845: MEMORY_TARGET not supported on this system
- ORA-00845: MEMORY_TARGET not supported on this system
- ORA-00845: MEMORY_TARGET not supported on this system
- ORA-00845: MEMORY_TARGET not supported on this system
- Oracle 11g ORA-00845: MEMORY_TARGET not supported on this system
- ORA-00845: MEMORY_TARGET not supported on this system
- ORA-00845: MEMORY_TARGET not supported on this system
- ORA-00845 MEMORY_TARGET not supported on this system 的解决