转:// LINUX下为ORACLE数据库设置大页--hugepage

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

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

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

(1)、SGA_MAX_SIZE超过了大页
(2)、没有设置内存锁
内存:是进程活动的舞台,ORACLE数据库在startup时会自动去查找是否设置有大页。
如有,在大页中分配SGA。
如没有,则正常使用默认数据块大小启动。
#############

设置大页步骤:

1.查看系统当前的大页使用情况:
[[email protected] ~]$ cat /proc/meminfo |grep Huge
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB --大页大小是2M
[email protected] 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
[[email protected] ~]# 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
[[email protected] ~]# ulimit -l
3500000 -----这个数字就是针对大页数量的限制的,足够用。

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

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

========================================

  • MOS中明确的参数设置要求
alter system reset memory_target scope=spfile;
alter system reset memory_max_target scope=spfile;

如果dbca以非AMM方式建库会遇到ORA-32010: cannot find entry to delete in SPFILE,也就是说spfile本来就没有这两个参数,错误忽略即可。
  • MOS中原文
If you want to use HugePages make sure that both memory_target / memory_max_target initialization parameters are unset

unset代表spfile中不允许出现memory_target和memory_max_target(关于这一点,Oracle官方文档中的描述是错误的,而MOS中的一些描述才是正确的)。目前我们实施文档中的标准是设置memory_target,这样其实是没问题的。但是只要再设置memory_max_target就不行了,不管该参数设置为0还是非0,大页都不会生效。所以,正确的配置是memory_target和memory_max_target两个参数都不要出现在spfile中,即都reset掉。

  • 额外设置的参数
alter system set use_large_pages=only scope=spfile;

强制大页生效,如果大页小于sga或者参数配置不符合大页配置规范,实例将无法启动,从根本上杜绝大页不生效的情况,以前确保sga 100%放到hugepage中只能通过vi去alert日志中搜索,这样也可以免除大家检查的复杂性。

时间: 2024-10-10 06:22:48

转:// LINUX下为ORACLE数据库设置大页--hugepage的相关文章

LINUX下为ORACLE数据库设置大页--hugepage

在Linux中配置hugepage可以提高oracle的性能,减少oracle sga的页交换,类似于aix中的lagepage. 为什么 使用大页? LINUX内存的默认块大小是4K如果SGA为:128Gselect 128*1024*1024/4 from dual;33554432个(三千多万),select 128*1024/2 from dual; 65536个每个内存页,有一个页表项(大概10个字节),记录页的状态.位置默认块大小是4K时--页表大小:320M.在大页下2M时,页表只

Linux下修改Oracle数据库字符集命令

常见情形:从服务器备份Oracle数据库后再到本地机器上还原Oracle数据库的时候经常会碰见数据库字符编码不一致的情况,可以用以下命令来修改本地的Oracle数据库字符编码,然后顺利还原Oracle数据库到本地机器上 操作指令: [[email protected] ~]$ sqlplus /nolog SQL> conn /as sysdba; SQL>select userenv('language') from dual; SQL>SHUTDOWN IMMEDIATE SQL&g

linux下重启oracle数据库

在linux下重启oracle数据库及监听器: 方法1: 用root以ssh登录到linux,打开终端输入以下命令: cd $ORACLE_HOME   #进入到oracle的安装目录 dbstart           #重启服务器 lsnrctl start     #重启监听器 cd $ORACLE_HOME   #进入到oracle的安装目录dbstart           #重启服务器lsnrctl start     #重启监听器 -------------------------

Linux 下安装oracle数据库

原文出处       http://www.linuxidc.com/Linux/2015-02/113222.html 需要安装Oracle DataGuard,所以先要安装单台Oracle11g,下面是Linux下单台Oracle11g的详细安装过程. 1,安装环境 硬件环境:2台linux虚拟机,CentOS6.4 ,4G ,4核,磁盘50G Oracle软件版本: linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of

Linux下改动Oracle数据库字符集命令

常见情形:从server备份Oracle数据库后再到本地机器上还原Oracle数据库的时候常常会碰见数据库字符编码不一致的情况,能够用下面命令来改动本地的Oracle数据库字符编码,然后顺利还原Oracle数据库到本地机器上 操作指令: [[email protected] ~]$ sqlplus /nolog SQL> conn /as sysdba; SQL>select userenv('language') from dual; SQL>SHUTDOWN IMMEDIATE SQ

在Linux下安装Oracle数据库

PDF版下载地址:http://download.csdn.net/detail/jaune161/9312775 Note 由于图片太多,文中只写主要部分.安装步骤及后续设置见PDF. 本文档适用与安装Oracle11gR2,其他版本可作为参考,但是应以官方文档为准. 相关资料 Oracle11gR2文档:http://docs.oracle.com/cd/E11882_01/ 安装教程:http://docs.oracle.com/cd/E11882_01/nav/portal_11.htm

linux下安装oracle数据库并创建用户

1.安装redhat操作系统(版本自订) (1)安装桌面试的: yum groupinstall "X Window System" -y yum  groupinstall Desktop -y 2.规划存储 oracle rdbms安装在本地(/oracle目录下) oracle datafile 存放在存储上   (/oradata) 3.配置网络 执行命令setup, 或直接修改文件 vi /etc/sysconfig/network-scripts/ifcfg-eth0 4.

linux下安装oracle数据库

一.安装前准备工作 1.修改主机名(不是必须的) #vi /etc/hosts //并添加内网IP地址对应的hostname,如下 127.0.0.1 localhost ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.8.151 oracledb 2.修改/etc/sysconfig/iptables文件,开通1521端口:(可能不设置也行) vi /etc/sysconfig/ipt

Linux下安装oracle数据库提示DISPLAY not set. Please set the DISPLAY and try again。

错误如下: Ignoring required pre-requisite failures. Continuing... Preparing to launch Oracle Universal Installer from /tmp/OraInstall2015-01-29_03-14-51AM. Please wait ... DISPLAY not set. Please set the DISPLAY and try again. Depending on the Unix Shell