ITPub博客

首页 > 数据库 > Oracle > lock_sga and pre_page_sga设置

lock_sga and pre_page_sga设置

原创 Oracle 作者:penglele2009 时间:2010-12-21 11:41:06 0 删除 编辑

使Oracle的SGA常驻物理内存

Oracle中的lock_sga和pre_page_sga这两个静态初始化文件参数是用来指示SGA如何使用操作系统内存的。在Linux上启动Oracle数据库的时候,如果设置了lock_sga=true,那么就有可能碰到如下的报错信息:
SQL> startup;
ORA-27102: out of memory
Linux-x86_64 Error: 12: Cannot allocate memory

这是因为Linux操作系统对应用程序使用内存有一些限制,在SHELL中使用ulimit命令可以查看到如下的信息:
[oracle@dev111 ~]$ ulimit -a | grep memory
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
virtual memory (kbytes, -v) unlimited

可以看出,lock_sga跟max locked memory的限制是存在冲突,如果保持lock_sga=true参数设置的话,必须修改Linux的max locked memory限制。在/etc/security/limits.conf这个配置文件中添加如下的一行(oracle是启动数据库的操作系统账号),意思是oracle用户可以在物理内存中锁住任意大的空间:
oracle - memlock unlimited

之后使用oracle重新登录系统,数据库就可以正常启动了!而另一个初始化参数pre_page_sga设置为true的话,数据库启动的时候就会在内存中分配好整个SGA,这将使Oracle数据库的启动时间加长。
[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22934571/viewspace-1043404/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: smon 和pmon区分
请登录后发表评论 登录
全部评论

注册时间:2009-11-26

  • 博文量
    199
  • 访问量
    677245