昨晚Oracle RAC集群内存扩容,由512G扩容到1T,在开启集群后需要更改几个参数值:
alter system set sga_target=560G scope=spfile sid='pdb1';
alter system set sga_max_size=560G scope=spfile sid='pdb1';
alter system set db_cache_size=256G scope=spfile sid='pdb1';
alter system set shared_pool_size=200G scope=spfile sid='pdb1';
alter system set pga_aggregate_target=140G scope=spfile sid='pdb1';
alter system set "_enable_shared_pool_durations"=false scope=spfile sid='pdb1';
shutdown immediate;
配置好参数后重启数据库时报:
ORA-27104: system-defined limits for shared memory was misconfigured
在Linux下,系统共享内存由kernel.shmall、kernal.shmmax两个内核参数控制:
kernel.shmall参数控制系统一次可以使用的共享内存总量(以页为单位),在Linux 共享内存页大小为4KB,如果一个共享内存段的最大大小是1TB,那么需要共享内存页数是 32TB/4KB = 1073741824KB/4KB = 268435456(页)
kernal.shmmax参数用于定义一个内存段最大可以分配的内存空间,单位为字节,如果一个共享内存段的最大大小是1TB,那么分配的最大内存空间数是1024 * 1024 * 1024 * 1024 = 1099511627776
所以需要更改系统参数:
vi /etc/sysctl.conf
kernel.shmall = 268435456
kernel.shmmax = 1099511627776
#修改大页
vm.nr_hugepages = 291840
退出/etc/sysctl.conf后
执行sysctl -p ,使配置的参数生效
此时数据库就可以正常开启!