修改oracle数据库内存报错教程

2019-03-06 10:39:04

今天修改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

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »