大页的作用: 防止oracle使用的内存交换,所以设置的大小与oracle配置的sga、pga相关。 只有assm(Automatic Shared Memory Management)模式可以使用大页,需要关闭amm(Memory Manager Process) 调整数据库sga/pga大小: alter system set sga_max_size=<n>G scope=spfile sid='*'; alter system set sga_target=<n>G scope=spfile sid='*'; Alter system set pga_aggregate_target=xxxx scope=spfile sid='*'; 关闭AMM管理: 先设0 alter system set memory_target=0 scope=spfile sid='*'; alter system set memory_max_target=0 scope=spfile sid='*'; 再置空参数 alter system reset memory_target scope=spfile sid='*'; alter system reset memory_max_target scope=spfile sid='*'; 重启数据库生效: SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP; 必须assm管理才可以配置大页
1. 查看大页使用情况 # grep Huge /proc/meminfo HugePages_Total: 306 (总共306页) HugePages_Free: 306 (空闲306页,已使用306-306=0页) HugePages_Rsvd: 0 (操作系统承诺给oracle预留的页数) HugePages_Surp: 0 Hugepagesize: 2048 kB (每页2M,固定值) 大页总大小=HugePages_Total*Hugepagesize
2. 脚本计算大页数量 LINUX6语句运行MOS 401749.1提供的hugepages_settings.sh --------------- /etc/sysctl.conf 下 vm.nr_hugepages 值 调整过sga后需要重新计算,如果新加了一个实例也要重新计算 例子: vi /etc/sysctl.conf vm.nr_hugepages=1496 执行sysctl -p 命令使以上设置生效 LINUX7语句 metalink( 文档 ID 401749.1)
3. 设置内存锁 memlock 值应该为:大页数适当增加一些* Hugepagesize。 查询Hugepagesize值:grep Huge /proc/meminfo |grep Hugepagesize (1496+5)* 2048= 3074048 # vi /etc/security/limits.conf oracle soft memlock 3074048 oracle hard memlock 3074048 数量大于脚本算出的值一些,比如算出 700写800 vi /etc/security/limits.conf oracle soft memlock xxx oracle hard memlock xxx
4. 重启库,再次查看 SQL> shutdown immediate SQL> startup 最好是重启服务器!
5. 再次查看 grep Huge /proc/meminfo
