作者文章: Fenng

Oracle 11g 的 自动内存管理

oracle11g_logo.gif

这是我的 Oracle 11g 系列的文章之一.

Oracle 的 9i/10g 中已经对内存管理逐步做了很大的简化,11g 则更进一步,引入了一个新的概念自动化内存管理(Automatic Memory Management,AMM) . 如果 DBA 真的想偷懒的话,只需要设定两个参数就可以把烦心的事情都交给 Oracle 折腾了(只要 DBA 足够心宽)。PGA 与 SGA 一起搞定。这两个参数分别是:

MEMORY_TARGET--操作系统的角度上 Oracle 所能使用的最大内存值。动态参数
MEMORY_MAX_TARGET--MEMORY_TARGET所能设定的最大值。非动态可调。

Tip: 如果使用的是 pfile,设定了 MEMORY_TARGET 而没有指定 MEMORY_MAX_TARGET 的值,则实例启动后 MEMORY_MAX_TARGET 的值与 MEMORY_TARGET 相等。如果 pfile 中指定了 MEMORY_MAX_TARGET 而没有指定 MEMORY_TARGET ,实例启动后 MEMORY_TARGET 为 0 。

AMM 在后台会启动一个内存管理(Memory Manager, mman)进程。
因为 AMM 的引入,Oracle 内存管理更加灵活多样。 组合出来有 5 种内存管理形式.

  • 自动内存管理
  • 自动共享内存管理
  • 手工共享内存管理
  • 自动 PGA 管理
  • 手动 PGA 管理

1) 自动内存管理

默认安装的实例即是 AMM 方式。如下

SQL> show parameters target 
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
archive_lag_target integer 0
db_flashback_retention_target integer 1440
fast_start_io_target integer 0
fast_start_mttr_target integer 0
memory_max_target big integer 1216M
memory_target big integer 1216M
pga_aggregate_target big integer 0
sga_target big integer 0

要注意到 SGA_TARGET 和 都为 0 。

2.自动共享内存管理(Automatic Shared Memory Management, ASMM)

这是 10g 引入的管理方式,要使用这种方式,需要设置初始化参数 MEMORY_TARGET=0 ,然后显式的指定 SGA_TARGET 的值。

SQL> alter system set sga_target=1024m scope=both;
alter system set sga_target=1024m scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00839: SGA_TARGET cannot be modified to the specified value
SQL> alter system set memory_target=0 scope=both;
System altered.
SQL> alter system set sga_target=1024m scope=both;
System altered.
SQL>

这两个参数的修改是有严格顺序的,如果不遵守倒也没问题–Oracle 会报告错误。

3.手工共享内存管理

这个又更加原始了一些。因为原始,所以新的初始化参数 SGA_TARGET 与 MEMORY_TARGET 都要设置为 0. 然后手工设定 share_pool_size 、db_cache_size 等 sga 参数。要注意 RESULT_CACHE_SIZE 参数是 11g 新引入的,用来缓存 SQL 结果。

4.自动 PGA 内存管理

如果使用 AMM , 则对 PGA 不用操心。如果要做到精细控制而切换到自动 PGA 内存管理模式,需要设定WORKAREA_SIZE_POLICY = AUTO(默认即为 AUTO),然后需要指定 PGA_AGGREGATE_TARGET 的值。如需要精确控制PGA,则 WORKAREA_SIZE_POLICY = MANUAL .(Thanks vongates)

5.手动 PGA 管理

前提是 WORKAREA_SIZE_POLICY = manual ,然后分别指定 SORT_AREA_SIZE 等 PGA 相关的参数。估计现在没有人干这个吃力不讨好的事情了。这个模式大可以忽略。

AMM 的限制

如果初始化参数 LOCK_SGA = true ,则 AMM 是不可用的。

相关动态视图

V$MEMORY_DYNAMIC_COMPONENTS
V$MEMORY_RESIZE_OPS

11g 在简化 DBA 基本工作上还是下了很大功夫。可是这样也掩盖了一些技术细节,Oracle 正在逐步把内存的管理变成一个黑盒子,当然这也也是相关算法更加稳定作为基础的。总体来说,利大于弊。11g DBA, 准备好了没有?

EOF

推荐本站在 del.icio.us 收藏最多的文章

我的 del.icio.us 账户下有个 egosurf 标签,专门是收集我写的文章以及关于 egosurf 的一些信息。稍加整理了一下。目前被收藏最多的文章列表如下:

Flickr 的开发者的 Web 应用优化技巧
目前共有 121 人收藏
Flickr 绝对是 Web 2.0 站点中的当红明星。所以 Flickr 开发者的技巧也容易引起人关注。这是除了我的 Blog 首页之外被收藏最多的一篇文章。

YouTube 的架构扩展
目前共有 55 人收藏
这是我一直想写的一个题材。可直到最近才找到一些蛛丝马迹,顺藤摸瓜写了一点介绍。YouTube 因为 Google 的关系也是很吸引眼球的。

Craigslist 的数据库架构
目前共有 48 人收藏
介绍了著名分类广告网站 Craigslist 的数据库架构以及一些相关数据。

了解一下 Technorati 的后台数据库架构
目前共有 45 人收藏
对著名 Blog 搜索引擎 Technorati 的数据库架构的分析介绍。Technorati 被绿色长城挡住了好久不能访问,因为这个原因,现在国内 Blog 圈子对他的注意力小多了。

Yapache–Yahoo! Apache 的秘密
目前共有 20 人收藏
Yahoo! Apache 的一些介绍。

eBay 的应用服务器规模
目前共有 16 人收藏
eBay 的后台架构介绍。另外还有一篇 eBay 的数据库分布扩展架构也推荐一下


Web 2.0 站点扩展性问题随感

目前共有 16 人收藏
关于站点扩展性问题有感而发之作。关心人数也算可以

Geek ? 什么是 Geek ? 谁是 Geek ?
目前共有 16 人收藏
Nerd 会在 Slashdot 流连忘返,而 Geek 或许每天都看 Engadget。Hacker 呢? IRC 里去找找看, 运气好你能碰到一个,但那些自称是 Hacker 的,其实都不是。最后说一下,我用这篇文章作了一下 SEO 实践。

关于世界上的超大数据库
目前共有 13 人收藏
关于世界上排名前几位的 VLDB 的信息。VLDB,超大数据库,其实叫做”狂大数据库”倒是也很贴切。这类题材一向容易有不少读者,可没啥实际参考价值。

回答的智慧
目前共有 13 人收藏
相信很多人都看过那篇提问的智慧,回答也需要智慧。

观察到的一些东西:

1) 可能是 del.icio.us 用户群都是偏 IT 人士,所以 egosurf 到的收藏最多的文章题材大多是关于 Web 2.0 站点的后台架构的。

2) 收藏归收藏,但是添加注释的少之又少。可能这就是 1/100 规律

3) 自己用心写的很多文章其实读者未必会关心的。大多数读者还是更关心热点信息

这篇 Blog 发表后订阅数或许就会有变化了

EOF

在 RHEL 5 上安装 Oracle 11g (补充)

oracle11g_logo.gif

上一篇 在 RHEL 5 上安装 Oracle 11g 还是比较粗糙的。对照官方手册 Oracle Database Installation Guide 11g Release 1 for Linux 还是遗漏了一些内容的。

关于 Oracle Inventory 用户组

图形界面起来后,先是判断 Oracle Inventory group 这个玩意儿(通过 oraInst.loc). 如果默认目录权限有问题,会有如下提示:

11g_installer_2.png

这个提示信息其实没什么,点击 OK 即可。然后会提示手工输入可替代 Inventory 地址。

OSASM 用户组

如果使用 ASM,则最好创建一个 OSASM 组:

# /usr/sbin/groupadd asadmin

创建实例前修改 Shell 限制

修改 /etc/security/limits.conf 文件. 添加内容如下:

oracle              soft    nproc   2047
oracle              hard    nproc   16384
oracle              soft    nofile  1024
oracle              hard    nofile  65536

修改(或创建) /etc/pam.d/login ,内容如下:

session    required     /lib/security/pam_limits.so
session required pam_limits.so

还差一步,修改 /etc/profile , 内容如下:

if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

在 NFS 上跑 11g

mount nfs 文件系统上有几个参数是强制性的 : hard , rsize, wsize, actime=0(或者 noac). hard 方式是 10g 遗留下来的后遗症。

想到其他的再继续补充…

EOF

Oracle 11g 文档的变化

Oracle OTN 上提供的 11g 文档库有在线版本和可下载介质两种形式。建议 DBA 都下载一份到本地硬盘上,这也是我一向的习惯。现在硬盘空间这么大,没人会斤斤计较几百兆的文档占地方。而一旦不能访问网络又想看文档的时候,便利性就体现出来了。

11g 文档这次变成了左右栏显示,查找内容也更加方便了许多。字体也做了调整,在 Firefox 下看起来很舒服。值得注意的是新增了一个Oracle Database Storage Administration 手册,文档内容其实是继承了以前 ASM 的内容,这次独立开来也是体现了 ASM 在以后产品线中的重要性。

现在恐怕下载了文档库的人,90% 都在看 New Features Guide 吧?

EOF

此文作者:, 位于 Database 分类 标签: , on .
转载须以超链接形式标明文章原始出处和作者信息及版权声明.