Chinaunix首页 | 论坛 | 博客
  • 博客访问: 247957
  • 博文数量: 58
  • 博客积分: 2017
  • 博客等级: 大尉
  • 技术积分: 680
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-07 00:15
文章分类

全部博文(58)

文章存档

2011年(1)

2010年(7)

2009年(32)

2008年(18)

我的朋友

分类: Oracle

2009-03-23 11:39:38

前几天在安装oracle11g的时候可以看到,使用大内存是很简单的事情,内核参数设定没有问题,只需要指定memory_target就可以直接使用 大内存了。而oracle10g就麻烦一些,首先内核参数要设正确,然后要设置use_indirect_data_buffers=TRUE,要注意的 是,打开这个参数后DB_CACHE_SIZE 就不能用了,否则启动的时候会报ORA-00385: cannot enable Very Large Memory with new buffer cache parameters的错误,要用DB_BLOCK_BUFFERS来代替(单位是块数不是字节了),这样的话不同块大小的表空间特性似乎也应该没法用了 (数据库迁移的时候要小心这一点),而且你还会发现sga_target也不能再用了,如果使用会报:

  ORA-00824: cannot set sga_target due to existing internal settings, see alert log for more information
  ORA-01078: failure in processing system parameters

  这应该是跟新老参数冲突有关,换句话说,在10g里面用大内存页就不能用自动管理了(这个结论不知是否正确,有待讨论)。

  设置好其它几个主要内存初始化参数后还有一个必须要编辑的地方,要在/etc/security/limits.conf文件里增加下面内容:

  * soft memlock 3145728
  * hard memlock 3145728

  用ulimit -l命令可以比较设置前后的区别。

  如果没有设置lock memory的限制,启动的时候很可能会报:
  ORA-27103: internal error
  Linux
  Error: 11: Resource temporarily unavailable

  启动后用命令
  $ ls -l /dev/shm
  $ ipcs -m

  来检查内存分配的情况。

  在以前的RHEL版本中应该还需要设置系统hugetlb_pool,但RHEL5中我一直没找到相应的位置,是否有变化目前还未找到相应的资料(以前的计算方法我将在另外一个操作系统文章里记录一下)。

  从目前看没有设置hugetlb状态也都是正常的,有什么影响发现了才会指定,呵呵。

  最后要提一句的是,10g手动配置初始化内存参数时,shared pool的会根据sga的变化调整最低下限值,不在想以前可以自由定义了,当出现这个问题是,oracle会报shared pool不足的错误,并告诉你根据当前sga的设置应该配多大的shared pool,当然自动化管理是不会出现这样的问题的。
阅读(1027) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~