当前位置:  数据库>oracle

Linux下Oracle通过设置大内存页解决使用swap分区问题

    来源: 互联网  发布时间:2017-04-03

    本文导语: 在一个新闻网站的后台数据库的监控过程中,经常出现数据库开始使用交换分区的情况,并进而导致整个应用系统响应非常缓慢,不能够提供服务。该服务器的内存为8G,SGA设置为4G,PGA设置为1G。操作系统为64位。 按照道理,即...

在一个新闻网站的后台数据库的监控过程中,经常出现数据库开始使用交换分区的情况,并进而导致整个应用系统响应非常缓慢,不能够提供服务。该服务器的内存为8G,SGA设置为4G,PGA设置为1G。操作系统为64位。

按照道理,即使内存发生不够的情况,应该是磁盘读写变得更加激烈,而不是开始频繁的使用swap交换分区,沿着这个思路,寻找相关资料,发现如果配置大内存页可以强行把SGA锁定到内存中,大内存页是不允许被交换的。而同时相关资料也说明,在内存比较大的情况下,当系统内存为8G以上时,如果不采用大内存页(2M),那么管理这些内存所需要的内存也会急剧增加。对于系统可以使用命令cat /proc/meminf查看PageTables项,由于没有采用大内存页管理而额外产生的内存消耗。

具体操作步骤:

1、查看系统内存

cat /proc/meminfo | grep MemTotal

MemTotal:      8177384 kB

2、查看SGA和PGA

SQL> show parameter sga;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
lock_sga                             boolean     TRUE
pre_page_sga                         boolean     FALSE
sga_max_size                         big integer 4G
sga_target                           big integer 4G
SQL> show parameter pga;





NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target                 big integer 1G

4、查看没有使用大内存页时的情况

more /proc/meminfo |grep -i HugePage
HugePages_Total: 0
HugePages_Free:  0
HugePages_Rsvd:  0
Hugepagesize:    0



5、配置HugePages Pool大小

vi /etc/sysctl.conf

在最后添加如下的行www.linuxidc.com

vm.nr_hugepages = 2300     #(这个值应大于或等于 SGA/2m,即 4*1024m/2m)

6、配置Oracle用户最大线程数、文件句柄和最大能锁定的内存

vi /etc/security/limits.conf

在最后添加如下的行

 
       oracle  soft    nproc   2047
       oracle  hard    nproc   16384
       oracle  soft    nofile  1024
       oracle  hard    nofile  65536
       oracle  soft    memlock 5194304          #(这里是以KB为单位,一般大于等于SGA)




       oracle  hard    memlock 5194304

7、使配置生效

sysctl -p 

8、重启系统及启动oracle实例,下面是我们使用大内存页后的结果,

看到因为管理内存页而额外需要的内存(PageTables)为55M

cat /proc/meminfo
MemTotal:      8177384 kB
MemFree:        950472 kB
Buffers:         16824 kB
Cached:        1365136 kB
SwapCached:     170652 kB
Active:        1274416 kB
Inactive:      1082156 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:      8177384 kB
LowFree:        950472 kB
SwapTotal:    10420208 kB
SwapFree:     10056116 kB
Dirty:             148 kB
Writeback:           0 kB
AnonPages:      982112 kB
Mapped:          52944 kB
Slab:            64568 kB
PageTables:      55580 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:  12153700 kB
Committed_AS:  2584964 kB
VmallocTotal: 34359738367 kB
VmallocUsed:    267584 kB
VmallocChunk: 34359470407 kB
HugePages_Total:  2300
HugePages_Free:    264
HugePages_Rsvd:     13
Hugepagesize:     2048 kB





























      如上由于我们的系统数据库SGA为4G,因此配置了2300个大内存页,这样能够提供足够多的大内存页供数据库的SGA使用。配置大内存的一个另外好处是可以清楚的看到系统使用内存的情况,否则Oracle会占用buffer及cache内存,很难计算系统空余的实际内存数量。

    从内存meminfo信息中可以看出,2300个大内存页,被使用了2300-264=2036个(这个过程在启动数据库的时候是动态变化的,直到SGA用满)。

      在配置的过程中,发现我们的系统内核还不支持大内存页,配置后看到HugePage_Total为0,说明配置无效,需要安装新的内核。大内存页的配置可以参考相关文档。

     当配置完成后,同时设置lock_sga为true,Oracle数据库服务器再也不发生大量使用swap分区的情况了,不再出现性能故障。


    
 
 

您可能感兴趣的文章:

  • 如何使用linux的大内存
  • linux7.3下大内存无法安装网卡!急!
  • ■■救救我的Linux,我用PartitionMagic把第二个主分区改为扩展分区后或在linux分区前新增一个分区后,Linux连Rescue模式都进不了
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • 谁知道在分区的时候linux swap是作为主分区还是逻辑分区,linux ext2呢??急!急!急!
  • 安装linux时,已经有windows,我有2个主分区了,如果装linux不分boot分区会不会有什么问题?
  • 重新安装linux,重新分配/分区,其他分区不变,对其他分区内的数据有影响嘛?
  • xp下装linux双系统,从现有磁盘中分出一段来供LINUX使用.请问linux分区时 / 是不是一定要强制为主分区?
  • 我在linux下有几个分区。现在发现其中一个分区不够用了。我能不能把其他分区的空间弄过来?
  • 关于linux分区与主分区和扩展分区的疑惑。。。求解!!
  • 菜鸟在c盘装了win2000,想在剩下的空间装Red Hat Enterprise Linux 3,在创建linux分区的时候,不知道都创建什么分区??我知道要创建一个
  • 在linux下如何把空闲的分区建成ext3格式的分区
  • 请问如何删除LINUX分区记录而重新建立分区?
  • 请问如何才能将LINUX的分区写到磁盘分区表里!
  • 在装蓝点Linux时提示需要ext2分区,请问如何分区。用何工具?
  • 请问Linux有没有主分区和逻辑分区这个么一个说法呢!一般比较主流的应该怎么分呢?
  • 分区问题:我已经装了2000SERVER,想装LINUX,但没法分区了。。。详情请进!
  • 如何通过mount命令将DOS文件分区挂接到Linux系统上访问DOS分区
  • Linux native分区与swap分区最大是多少?
  • 据说linux分区只能在前8G,40G的硬盘分区先装windows怎么做到呢?
  • LINUX 下如何将一个已用完的分区链接到一个有大量空间的分区
  • 在Linux下如何察看硬盘有几个分区,并且获知其分区格式
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下通过crond实现自动执行程序
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • 如何通过 Docker 在 Linux 上托管 .NET Core
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户
  • Linux下通过rpm安装软件详细介绍以及如何将软件安装到指定目录
  • vmware装的linux,通过win2000访问linux的web服务器有问题 iis7站长之家
  • linux下能通过ip地址ping通其它机器,通过计算机名ping不通怎么解决?
  • 工作站Redhat Linux7.2如何通过NT4.0 proxy代理服务器上网,我不能通过其验证!请高手指点思路和方法!
  • 书写基于Linux内核的键盘记录器(Writing Linux Kernel Keylogger)中的源码如何编译通过???
  • 我没有linux安装光盘!可不可以通过网络在我的电脑上安装一个linux操作系统!
  • vmware装的linux,通过win2000访问linux的web服务器有问题
  • 98的机子有modem,linux的无,能否通过共享使linux的机子都能上网?
  • codeblocks8.02 for linux,程序可以编译通过,但是通过右键“查找fopen函数的声明”或“实现”,都是提示“没有找到:fopen”,为什么
  • Linux g++编译调用模板函数的类不通过,但是VC2005通过
  • linux能够通过执行脚本添加oracle数据库的用户吗
  • 我刚安装了Linux,但我不知道如何才能通过Moden上网呢?
  • linux如何通过SyGate服务器上网?
  • linux通过局域网上internet
  • 请问通过什么来管理linux服务
  • window下通过ftp执行linux脚本?
  • 请教为什么在C++编译通过并实现的程序,在linux下就会出错
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • secureCRT下Linux终端汉字乱码解决方法
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux c字符串中不可打印字符转换成16进制
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在没有linux的盘,只有DOS启动盘)
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 如何让win2000和linux共存。我装好WIN2000,再装LINUX7.0,但LILO只能找到LINUX,不能引导WIN2000


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3