视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
LINUX下为ORACLE数据库设置大页
2020-11-09 07:18:27 责编:小采
文档


在Linux中配置hugepage可以提高oracle的性能,减少oracle sga的页交换,类于aix中的lagepage。 为什么 使用大页? LINUX内存的默认块大小是4K 如果SGA为:128G select 128*1024*1024/4 from dual;33554432个(三千多万), select 128*1024/2 from dual; 6553

在Linux中配置hugepage可以提高oracle的性能,减少oracle sga的页交换,类似于aix中的lagepage。

为什么 使用大页?

LINUX内存的默认块大小是4K
如果SGA为:128G
select 128*1024*1024/4 from dual;33554432个(三千多万),

select 128*1024/2 from dual; 65536个

1G 1024*1024/4*10/1024/1024大约为2.5M,也就是1G内存大约需要2.5M PAGESIZE

每个内存页,有一个页表项(大概10个字节),记录页的状态、位置
默认块大小是4K时--页表大小:320M。
在大页下2M时,页表只占.625M

在Linux中,每个进程页表,有各自的页表。
如果有1000个进程:1000*320M大约是320G。
而1000个进程使用大页:1000*0.625=625M

设置了大页,但没被Oracle使用,原因只有两个:

(1)、SGA_MAX_SIZE超过了大页(如果sga_max_size sga_target不一致时,要大于sga_max_size )
(2)、没有设置内存锁--/etc/security/limits.conf中memlock
内存:是进程活动的舞台,ORACLE数据库在startup时会自动去查找是否设置有大页。
如有,在大页中分配SGA。
如没有,则正常使用默认数据块大小启动。
#############

设置大页步骤:

1.查看系统当前的大页使用情况:
[oracle@bys3 ~]$ cat /proc/meminfo |grep Huge
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB --大页大小是2M
BYS@ bys3>show parameter sga_max --查看数据库SGA大小--我的实验机
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_max_size big integer 216M

2. 设置大页的数量
--这里是200个*2M=400M,SGA最大216M,大页的内存要大于SGA大小,才能被ORACLE使用,所以我设置200个。

vi /etc/sysctl.conf
在里面增加一行:
vm.nr_hugepages=200
保存之后执行:
sysctl -p
查看: --如果HugePages_Free:未到200,多执行几次sysctl -p
[root@bys3 ~]# cat /proc/meminfo |grep Huge
HugePages_Total: 200
HugePages_Free: 200
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB

3.还需要设置内存锁:

--此设置需要重新登陆或重启才能生效。 memlock数量要大于大页的数量--设置为-1,不。

vi /etc/security/limits.conf
oracle soft memlock -1
oracle hard memlock -1
[root@bys3 ~]# ulimit -l
3500000 -----这个数字就是针对大页数量的的,足够用。

4.重启数据库,大页已经被ORACLE用上了。
SYS@ bys3>shutdown immediate;
SYS@ bys3>startup

重启数据库过程中不断执行;cat /proc/meminfo |grep Huge,能看到HugePages_Free:的数量不断减少,说明大页正在被使用。
[root@bys3 ~]# cat /proc/meminfo |grep Huge
HugePages_Total: 200
HugePages_Free: 101
HugePages_Rsvd: 10
HugePages_Surp: 0
Hugepagesize: 2048 kB

下载本文
显示全文
专题