ORA-00845: MEMORY_TARGET not supported on this system

今天测试数据库所在主机关机,重新启动数据库的时候出现

ORA-00845: MEMORY_TARGET not supported on this system


SYS@sjpt110>startup  

ORA-00845: MEMORY_TARGET not supported on this system

我的处理过程是:切换至root用户执行

[root@BJODSDB0110 ~]# sudo  mount -o remount,size=20G  /dev/shm

[root@BJODSDB0110 ~]# su - oracle

[oracle@BJODSDB0110 ~]$ sqlplus /  as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Tue Nov 27 22:32:26 2018


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


Connected to an idle instance.


SYS@sjpt110>startup

ORACLE instance started.


Total System Global Area 5227814912 bytes

Fixed Size                  2262368 bytes

Variable Size            3103787680 bytes

Database Buffers         2113929216 bytes

Redo Buffers                7835648 bytes

Database mounted.

Database opened.

具体原理参考以下文章:

修改Oracle的memory_max_target和memory_target

最初安装Orale11g时,采用默认自动内存管理,使用1/2Mem。后来想增大最大内存使用值。

系统内存16G Mem,想修改为3/4Mem: 16*3/4=12G=12288M。

# vim /etc/sysctl.conf

kernel.shmmax = 12884901888

# sysctl -p

再修改ORACLE 参数

sql> show parameter target;

sql> alter system set memory_max_target=12288M scope=spfile;

sql> alter system set memory_target=12288M scope=spfile;



需要重启数据库才能生效。



sql> startup 时报错:


ORA-00845: MEMORY_TARGET not supported on this system


查找资料后发现在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=12288M /dev/shm


但如果之前已经mount过了,则执行remount


# mount -o remount,size=12288M /dev/shm



2.为了确保操作系统重启之后能生效,需要修改/etc/fstab文件


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



3.如果/dev/shm没有挂载也会报上面的错,所认需要确保已经挂载,执行目录查看:


# df -h



下面是我的操作流程:

[root@localhost ~]# df -h


Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root  184G   24G  160G  13% /

devtmpfs                 7.8G     0  7.8G   0% /dev

tmpfs                    7.8G   80K  7.8G   1% /dev/shm

tmpfs                    7.8G  8.8M  7.8G   1% /run

tmpfs                    7.8G     0  7.8G   0% /sys/fs/cgroup

/dev/sda1                497M  109M  389M  22% /boot

tmpfs                    1.6G   12K  1.6G   1% /run/user/42

tmpfs                    1.6G     0  1.6G   0% /run/user/0

[root@localhost ~]# 

[root@localhost ~]# cat /etc/fstab 



#

# /etc/fstab

# Created by anaconda on Wed Feb 22 19:26:05 2017

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

/dev/mapper/centos-root /                       xfs     defaults        0 0

UUID=2fafd7f5-0ceb-46ea-9d57-165f82e04dfe /boot                   xfs     defaults        0 0

/dev/mapper/centos-swap swap                    swap    defaults        0 0

[root@localhost ~]# 


[root@localhost ~]# mount -o remount,size=12288M /dev/shm


[root@localhost ~]# 


[root@localhost ~]# df -h


Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root  184G   24G  160G  13% /

devtmpfs                 7.8G     0  7.8G   0% /dev

tmpfs                     12G   80K   12G   1% /dev/shm

tmpfs                    7.8G  8.8M  7.8G   1% /run

tmpfs                    7.8G     0  7.8G   0% /sys/fs/cgroup

/dev/sda1                497M  127M  370M  26% /boot

tmpfs                    1.6G   12K  1.6G   1% /run/user/42

tmpfs                    1.6G     0  1.6G   0% /run/user/0

[root@localhost ~]# 


[root@localhost ~]# vim /etc/fstab 



#

# /etc/fstab

# Created by anaconda on Wed Feb 22 19:26:05 2017

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

/dev/mapper/centos-root /                       xfs     defaults        0 0

UUID=2fafd7f5-0ceb-46ea-9d57-165f82e04dfe /boot                   xfs     defaults        0 0

/dev/mapper/centos-swap swap                    swap    defaults        0 0

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

~                                                                              



启动数据库还是报错:


$ sqlplus / as sysdba


SQL> startup


ORA-00845: MEMORY_TARGET not supported on this system


SQL> 



网上搜索,发现是/dev/shm还是不够大,/dev/shm必须大于MEMORY_TARGET,等于也会报错。


所以继续调整/dev/shm为13G:


# mount -o remount,size=13G /dev/shm



启动数据库成功。



持久化修改


# vim /etc/fstab


tmpfs /dev/shm tmpfs  defaults,size=13G      0 0




修改成功,查看:




SQL> show parameter target;


NAME                                 TYPE

------------------------------------ ---------------------------------

VALUE

------------------------------

archive_lag_target                   integer


db_flashback_retention_target        integer

1440

fast_start_io_target                 integer


fast_start_mttr_target               integer


memory_max_target                    big integer



NAME                                 TYPE

------------------------------------ ---------------------------------

VALUE

------------------------------

12G

memory_target                        big integer

12G

parallel_servers_target              integer

32

pga_aggregate_target                 big integer


sga_target                           big integer


SQL> 




已经变成12G了。

--------------------- 


请使用浏览器的分享功能分享到微信等