[size=13.3333px]Oracle 11G 中出现了memory_target 参数,用以实现自动 内存管理 。这个参数的实际使用 需要/dev/shm 空间的支持,如果/dev/shm的空间小于memory_target的值 ,就会遇到如下 错误: SQL> startupORA-00845: MEMORY_TARGET not supported on this system[size=13.3333px]根据提示Cause:/dev/shm was not sized correctly on Linux. 我们知道了此错误的原因,原来是因为/dev/shm 的大小有问题。 而根据提示Action: size /dev/shm to be at least the SGA_MAX_SIZE…. 这里我们知道了。/dev/shm 的大小至少应该大于 sga_max_size的值。 确定相关信息 确定/dev/shm 大小 /dev/shm 的大小,在普通Linux操作系统中默认为系统总物理内存大小的一半。 [oracle@RAS-DB ~]$ df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup-lvroot 50G 14G 34G 29% /tmpfs 32G 356K 32G 1% /dev/shm/dev/mapper/VolGroup-lvapp 99G 39G 55G 42% /app/dev/sda1 194M 35M 150M 19% /boot/dev/mapper/VolGroup-lvoradata 3.8T 7.5G 3.6T 1% /oradata/dev/sr0 4.2G 4.2G 0 100% /media/CentOS_6.5_Final确定sga_max_size大小 查看参数文件,发现文件中没有SGA_MAX_SIZE参数值的显示设置。而只有memory_target参数值的明确设置。 *.memory_target=49152M那么, 我们只要让/dev/shm 的avaliable部分的大小大于memory_target 就肯定是大于sga_max_size的 ,为啥这样肯定?Oracle基本知识不在这里普及。
从以上两部分内容,我们了解到当前/dev/shm多大,我们要求shm多大。明确了我们应该怎么去调整/dev/shm的大小。 为了保险起见,一般/dev/shm 大小设置为与物理内存一样大小即可。
[size=13.3333px]3 解决 mount -o size=64G -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm 同时修改/etc/fstab以保证下次重启主机后,不会出现相同的问题 NOTE有时候/dev/shm 对应的磁盘或者分区比较小,比如示例中我们需要64G ,而实际只有32G. 有没有想过: 空间不足呀,怎么办呢?其实这里不需要关注/dev/shm对应的磁盘或者分区的 实际空间,只需要按照示例中的方法去修改,放心, 不会有问题。tmpfs /dev/shm tmpfs default, size=64G 0 0Filesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup-lvroot 50G 14G 34G 29% /tmpfs 64G 4.5G 60G 8% /dev/shm/dev/mapper/VolGroup-lvapp 99G 39G 55G 42% /app/dev/sda1 194M 35M 150M 19% /boot/dev/mapper/VolGroup-lvoradata 3.8T 9.6G 3.6T 1% /oradata/dev/sr0 4.2G 4.2G 0 100% /media/CentOS_6.5_Final启动数据库 SQL> startupORACLE instance started.Total System Global Area 5.1310E+10 bytesFixed Size 2265224 bytesVariable Size 2.5904E+10 bytesDatabase Buffers 2.5367E+10 bytesRedo Buffers 36069376 bytesDatabase mounted.Database opened.
|