解决ORA-00845: MEMORY_TARGET not supported on this system

在11gR2才会出现的错误。

oracle的文档对这个错误的描述是

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是11g才加入的新的内存参数,他是10g的ASMM的扩展,大家还记得10g里的SGA_TARGET和SGA_MAX_SIZE吧,这是一个自动管理的特性。当我们配置了SGA_TARGET后,实例会根据自己收集的信息,对SGA组件进行自动调整,调整的目标就是这个TARGET,在11g里,ASMM改进为AMM,也就是把shared取消了,Automatic Shared Memory Managemnet变成了Automatic Memory Managemnet,这样不仅仅是SGA在玩了,把PGA也加进来一起玩了。通过MEMORY_TARGET进行类似的控制。

这里的错误就是和这个TARGET有关。这里的TARGET的配置已经超过了我们的物理上的/dev/shm的大小。

修改的方法两种,

1. 增加/dev/shm,/dev/shm通常用做共享内存。 /dev/shm是一个临时文件系统(tmpfs) 从/etc/fstab中mount支持标准的参数"size",可以用size来增加或者减少在/dev/shm上的tmpfs大小.如果没有设置size,它的大小是系统RAM的一半。

修改/etc/fstab文件

/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults,size=1024M 0 0

umount /dev/shm

mount /dev/shm

df -h 在查查修改后的/dev/shm的大小

2. 修改实例的MEMORY_TARGET参数。

这个方法用alter system set memory_target=200M;

比较一下,如果是物理条件允许的话,很明显方法一要好的多。

Oracle技术论坛 http://www.oraforum.net

你可能感兴趣的:(oracle,linux,.net,配置管理)