暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle的memory_max_target和memory_target修改和ORA-00845: MEMORY_TARGET not supported on this system错误解决

suger 2022-07-09
415

修改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
0
db_flashback_retention_target integer
1440
fast_start_io_target integer
0
fast_start_mttr_target integer
0
memory_max_target big integer

NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
12G
memory_target big integer
12G
parallel_servers_target integer
32
pga_aggregate_target big integer
0
sga_target big integer
0
SQL> 

已经变成12G了。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论