#备份SPFILE
create pfile='/home/oracle/init1028B.ora' from spfile;
#如果有AMM则需要关闭,AMM与大页不兼容
alter system set memory_max_target= 0 sid=<ORACLE_SID> scope=spfile;
alter system set memory_target= 0 sid=<ORACLE_SID> scope=spfile;
#如果需要修改SGA和PGA则如下修改
alter system set sga_max_size=xxxxxG sid=<ORACLE_SID> scope=spfile;
alter system set sga_target=xxxxxG sid=<ORACLE_SID> scope=spfile;
alter system set shared_pool_size =xxxxxG sid=<ORACLE_SID> scope=spfile;
alter system set db_cache_size= xxxxxG sid=<ORACLE_SID> scope=spfile;
alter system set pga_aggregate_target = xxxxxG sid = <ORACLE_SID> scope=spfile;
#lock_sga和pre_page_sga为可选配置参数
#当lock_sga参数设置为TRUE时(默认值是FALSE),可以保证整个SGA被锁定在物理内存中,这样可以防止SGA被换出到虚拟内存。只要设置lock_sga为“TRUE”便可保证SGA被锁定在物理内存中
alter system set lock_sga=true scope=spfile;
#pre_page_sga参数也设置为“TRUE”,是因为这样可以保证在启动数据库时把整个SGA读入到物理内存中,此参数会增加系统的启动时间
alter system set pre_page_sga=true scope=spfile;
#修改后再次备份SPFILE
create pfile='/home/oracle/init1028A.ora' from spfile;
2.6 关闭数据库
shutdown immediate;
2.7 配置大页
vim /etc/sysctl.conf
vm.nr_hugepages=SGA_MAX_SIZE_GB * 1024 / 2
#生效
sysctl -p
2.8 启动数据库
#没有开AMM的情况可以直接启动
startup;
#如果有开启AMM则需要去掉一些参数
vim /home/oracle/init.ora
去掉
*.memory_max_target=0
*.memory_target=0
<SID>.memory_target=0
#启动数据库
startup pfile = '/home/oracle/init.ora';
create spfile from memory;
oracle如何使用大页、修改大页的方法。在 Linux 中,物理内存是以页为单位来管理的。默认的,页的大小为 4KB。同时,在 Linux 操作系统上运行内存需求量较大的应用程序时,采用的默认的 4KB 页面,将会产生较多 TLB Miss 和缺页中断,从而大大影响应用程序的性能。当操作系统以 2MB 甚至更大作为分页的单位时,将会大大减少 TLB Miss 和缺页中断的数量,显著提高应用程序的性能。