教学文章
Technology Exchange
热门课程
400电话

免费咨询热线
400-090-9964

教学文章

Lock_sga和pre_page_sga参数

时间:2017-08-18 来源:

  Lock_sga 和pre_page_sga,是两个平时用的不算太多的参数,但是这两个参数平时在优化的时候可能给你带来比较乐观的性能提升,通过修改lock_sga和pre_pga_sga参数可以保证SGA不被换出到swap,进而而已提高SGA的使用效率。

  当lock_sga参数的值修改设置为true的时候,可以保证整个sga被锁定在物理内存中,这样可以防止sga被换出到swap中;当然理当需要把pre_page_sga参数也设置为true,只有这样才能保证在数据库启动之初将整个sga读取到物理内存,而不走交换内存,从而有效的提高数据库效率,当然会增加数据库的启动时间。

  调整过程如下:

  1、 查看lock_sga和pre_page_sga参数的默认值:

  [sql] view plain copy print?

  SQL> show parameter lock_sga

  NAME TYPE VALUE

  ------------------------------------ -----------------------------------------

  lock_sga boolean FALSE

  SQL> show parameter pre_page_sga

  NAME TYPE VALUE

  ------------------------------------ -----------------------------------------

  pre_page_sga boolean FALSE

  2、 修改这两个参数,因为其是静态参数,故在添加scop=spfile,记录到参数文件,下次启动生效:

  [sql] view plain copy print?

  SQL> alter system set lock_sga = truescope=spfile;

  System altered.

  Elapsed: 00:00:00.03

  SQL> alter system set pre_page_sga = truescope=spfile;

  System altered.

  Elapsed: 00:00:00.02

  SQL>

  3、 重启数据库

  [html] view plain copy print?

  SQL> startup

  ORA-27102: out of memory

  Linux-x86_64 Error: 12: Cannot allocate memory

  SQL>

  发现数据库现在起不来了,想想看,这是什么原因导致启动失败呢,其实很简单,Linux操作系统对每一个任务在内存中能锁住的值做了限制,只需手工修改即可。

  4、 处理解决ora-27102及linux-x86_64 Error:12问题:

  [sql] view plain copy print?

  [oracle@woo ~]$ ulimit -a

  core file size (blocks, -c) 0

  data seg size (kbytes, -d) unlimited

  scheduling priority (-e) 0

  file size (blocks, -f) unlimited

  pending signals (-i) 32768

  max locked memory (kbytes, -l) 32

  max memory size (kbytes, -m) unlimited

  open files (-n) 65536

  pipe size (512 bytes, -p) 8

  POSIX message queues (bytes, -q) 819200

  real-time priority (-r) 0

  stack size (kbytes, -s) 10240

  cpu time (seconds, -t) unlimited

  max user processes (-u) 16384

  virtual memory (kbytes, -v) unlimited

  file locks (-x) unlimited

  从上面信息我们可以看到,一个任务可以锁住的物理内存最大值为32KB,这个值根本没法满足我们sga的大小。那么我们需要对该值进行修改,使其适应及满足相关要求。

  5、 修改有两种方法:

  5.1、临时生效可以切换到root用户通过如下命令,进行修改:

  [sql] view plain copy print?

  [root@woo ~]# ulimit -l

  32

  [root@woo ~]# ulimit -l unlimited

  [root@woo ~]# ulimit -a

  core file size (blocks, -c) 0

  data seg size (kbytes, -d) unlimited

  scheduling priority (-e) 0

  file size (blocks, -f) unlimited

  pending signals (-i) 32768

  max locked memory (kbytes, -l) unlimited

  max memory size (kbytes, -m) unlimited

  open files (-n) 1024

  pipe size (512 bytes, -p) 8

  POSIX message queues (bytes, -q) 819200

  real-time priority (-r) 0

  stack size (kbytes, -s) 10240

  cpu time (seconds, -t) unlimited

  max user processes (-u) 32768

  virtual memory (kbytes, -v) unlimited

  file locks (-x) unlimited

  5.2 让其永久生效的方法:

  [sql] view plain copy print?

  [root@woo ~]# vi /etc/security/limits.conf 最底部添加如下两行

  oracle soft memlock unlimited

  oracle hard memlock unlimited

  6、 修改系统限制成功后,启动数据库,可以正常Open,但是时间更长了。

  [sql] view plain copy print?

  SQL> startup

  ORACLE instance started.

  Total System Global Area 6081740870 bytes

  Fixed Size 1220844 bytes

  Variable Size 197136148 bytes

  Database Buffers 406847488 bytes

  Redo Buffers 2969600 bytes

  Database mounted.

  Database opened.

  SQL>

  慎重提醒:不同操作系统对着lock_sga参数的支持情况是不同的,如果操作系统不支持这种锁定,参数将忽略。

  (以上内容摘于网络,如有侵权,请告之,将第一时间删除)

版权所有@北京神脑资讯技术有限公司(CUUG,中国UNIX用户协会) Copyright ALL Rights Reserved 京ICP备11008061号-1

CUUG旗下网站:www.cuug.com.cn www.cuug.com oracle.cuug.com bbs.cuug.com www.cuug.net

电话:010-59426307 010-59426319 邮政编码:100089

地址:北京市海淀区北清路164号28-38号院