修改oracle数据库内存报错

今天修改oracle数据库内存时,

alter system set memory_max_target=10240M scope=spfile;
语句正确修改;
但重启时却报错 :
 SQL> alter system set memory_max_target=10240M scope=spfile; System altered. SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system
SQL>
百度了一下,发现是/dev/shm过小:
[root@db1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
tmpfs                 7.8G   88K  7.8G   1% /dev/shm
/dev/sda1             485M   38M  422M   9% /boot

查找资料后发现问题如下,见metalinikID 460506.1
 
在oracle 11g中新增的内存自动管理的参数MEMORY_TARGET,它能自动调整SGA和PGA,这个特性需要用到/dev/shm共享文件系统,而且要求/dev/shm必须大于MEMORY_TARGET,如果/dev/shm比MEMORY_TARGET小就会报错
 
解决方案
 
1.初始化参数MEMORY_TARGET或MEMORY_MAX_TARGET不能大于共享内存(/dev/shm),为了解决这个问题,可以增大/dev/shm
 
如:
 
# mount -t tmpfs shmfs -o size=7g /dev/shm
 
2.为了确保操作系统重启之后能生效,需要修改/etc/fstab文件 本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2012-12/76976.htm

修改/dev/shm大小:

1.Vim /etc/fstab

原来是这样:

tmpfs /dev/shm tmpfs defaults 0 0

修改成如下,也就是20G

tmpfs /dev/shm tmpfs defaults,size=20000M 0 0

 

2.重新mount /dev/shm后生效

# mount -o remount /dev/shm

或者umount /dev/shm

mount /dev/shm

 

通过df –Th查看是否生效

 

也可以用下面的方式

# mkdir /mnt/tmp

# mount -t tmpfs -o size=256m,mode=1777 tmpfs /mnt/tmp

 

 

问题解决:

有时会遇到/dev/shm 卸载不掉的情况

# umount /dev/shm

umount: /dev/shm: device is busy.

 

用fuser处理

# fuser -km /dev/shm

# umount /dev/shm

# mount /dev/shm

 

fuser命令

 

-k:kill processes accessing the named file(杀死所有正在访问指定文件的进程

)

-m 表示指定文件所在的文件系统或者块设备(处于 mount 状态)。所有访问该文件系统的进程都被列出。

 

 

参考:

http://www.xifenfei.com/1605.html

http://space.itpub.net/10640532/viewspace-680426

http://blog.csdn.net/tianlesoftware/article/details/7256984 
http://www.linuxidc.com/Linux/2012-12/76976.htm

http://blog.chinaunix.net/uid-23284114-id-3232508.html

上一篇:Kubernetes中Pod间共享内存方案


下一篇:Hi3559AV100平台PCIE硬盘STAT驱动调试