导航

ORA-00845: MEMORY_TARGET not supported on this system

Posted on 2017-06-15 17:28  张鑫的园子  阅读(228)  评论(0编辑  收藏  举报

  在出现此错误之前,需要理解参数/dev/shm的作用。

  使用df -h查看该参数目前大小:

[root@Abbott ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_abbott-LogVol01
                       36G   12G   23G  34% /
tmpfs                 940M   72K  939M   1% /dev/shm
/dev/sda1             190M   41M  140M  23% /boot

  这里可以看到总共大小为940M,只使用了72K

  进入数据库生成pfile文件,修改pfile文件中的参数如下,将数据库内存管理修改为AMM(自动内存管理)

SQL> create pfile='/home/oracle/pfile.ora' from spfile;

File created.

SQL> quit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

[oracle@Abbott ~]$ ls
backup  dict.log  pfile.ora
[oracle@Abbott ~]$ vi pfile.ora 
*.memory_max_target=1572864010
*.memory_target=1572864010
#*.pga_aggregate_target=214748364
#*.sga_max_size=1288490188
#*.sga_target=1288490188

  重新启动数据库:

[oracle@Abbott ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu Jun 15 16:40:59 2017

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup pfile='/home/oracle/pfile.ora' nomount;
ORA-00845: MEMORY_TARGET not supported on this system

  这里可以看到数据库无法启动,错误提示系统不支持,查阅文档后,发现如果使用AMM自动内存管理,那么/dev/shm这个参数就非常重要。
  /dev/shm是linux非常有用的一个目录,它就是所谓的tmpfs,也可以称之为临时文件系统(不是块设备),类似oracle中的临时表空间一样,用于加速和优化系统。该目录并没有放在磁盘上,而是放在内存当中

  当使用AMM自动内存管理之后,数据库启动后会在/dev/shm目录下面生成很多ORA文件。

  实践发现,/dev/shm参数必须设置得比memory_max_size大,数据库才可以正常启动

  永久修改参数:

 

[oracle@Abbott ~]$ cat /etc/fstab 

/dev/mapper/vg_abbott-LogVol00 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults,size=1600M        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

 

  再次重新启动数据库,可正常启动:

SQL> startup pfile='/home/oracle/pfile.ora' nomount; 
ORACLE instance started.

Total System Global Area 1586708480 bytes
Fixed Size                  2253624 bytes
Variable Size             704646344 bytes
Database Buffers          872415232 bytes
Redo Buffers                7393280 bytes