问题描述:11g r2 修改了 memory_target 大小由原来的 0.8g 调到了 1.5g,startup报错。
SQL> startup;
ORA-00845: MEMORY_TARGET not supported on this system
分析:
[root@11g ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda5        40G   24G   15G  62% /
/dev/sda1       142M   40M   94M  30% /boot
/dev/sda3       9.5G  4.4G  4.7G  49% /tmp
tmpfs           2.0G  253M  1.8G  13% /dev/shm


/dev/shm 特点:
1.速度飞快
2.动态分配:写入更多的数据,/dev/shm占用更多的内存;删除/dev/shm中的数据,那么就减少占用内存。不用这样利于内存的充分使用
3.系统重启后、重新挂载/dev/shm后,/dev/shm中的数据都会消失
4.dev/shm默认值是内存的一半,有时根据需要会增大/dev/shm。


/dev/shm不是立即占用内存,而是采用需要才占用内存的方法。
在上面的例子中,/dev/shm设置的值是2G,我们看到已用写入了253m的数据,也就是占用了253m的内存。


ORA-00845 报错原因:
Oracle中设置memory_target中的值超过了/dev/shm的大小。


解决流程:
1. 编辑 /etc/fstab 文件,修改/dev/shm大小

tmpfs                   /dev/shm                tmpfs   defaults    0 0
改为
tmpfs                   /dev/shm                tmpfs   defaults,size=2000M    0 0
2. 先 umount /dev/shm 再 mount /dev/shm
3. df -h 查看是否生效
4. startup Oracle数据库。
SQL> startup;
ORACLE instance started.


Total System Global Area 1670221824 bytes
Fixed Size    2253824 bytes
Variable Size 1056967680 bytes
Database Buffers  603979776 bytes
Redo Buffers    7020544 bytes
Database mounted.
Database opened.