今天测试数据库所在主机关机,重新启动数据库的时候出现
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了。
---------------------
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31547066/viewspace-2221881/,如需转载,请注明出处,否则将追究法律责任。