参数MEMORY_MAX_TARGET 和MEMORY_TARGET 的修改

时间:2022-09-27 16:37:59


环境: ORACLE11G,

查看TOP 中看到,内存总是用到一半,感觉很莫名,直接 修改 参数MEMORY_MAX_TARGET 和MEMORY_TARGET ,出以下错误:


ORA-00845 MEMORY_TARGET not supported on this system


查询相关错误得到以下内容:


/dev/shm理论
/dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里。因此在linux下,就不需要大费周折去建ramdisk,直接使用/dev/shm/就可达到很好的优化效果。 /dev /shm/需要注意的一个是容量问题,在linux下,它默认最大为内存的一半大小,使用df -h命令可以看到。但它并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节;如果它最大为1G,里头放有 100M文件,那剩余的900M仍然可为其它应用程序所使用,但它所占用的100M内存,是绝不会被系统回收重新划分的,否则谁还敢往里头存文件呢?

默认系统就会加载/dev/shm ,它就是所谓的tmpfs,有人说跟ramdisk(虚拟磁盘),但不一样。象虚拟磁盘一样,tmpfs 可以使用您的 RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个 mkfs 之类的命令才能真正地使用它,tmpfs 是一个文件系统,而不是块设备;您只是安装它,它就可以使用了。
  tmpfs有以下优势:
  1,动态文件系统的大小。
  2,tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的。
  3,tmpfs 数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。所以有必要做一些脚本做诸如加载,绑定的操作。

二、修改/dev/shm大小


[root@dg1 ~]# vi /etc/fstab

LABEL=/                 /                       ext3    defaults        1 1
LABEL=/opt              /opt                    ext3    defaults        1 2
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        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-sda3         swap                    swap    defaults        0 0

修改为:

tmpfs                   /dev/shm                tmpfs   defaults,size=52g        0 0

把内存只能 使用到系统的的一半32G,扩展到,size=52g 。

执行以下命令,使期生效

mount -o remount /dev/shm



再修改ORACLE 参数

SQL> alter system set memory_max_target=52000M scope=spfile;

System altered.

SQL> alter system set memory_target=50000M scope=spfile;

System altered.

SQL> show parameter target;