标题: Oracle9i的物理内存管理
问天
元帅
Rank: 1


元帅勋章 终身成就勋章
UID 11493
精华 187
积分 34221
帖子 33355
威望 91
金币 13148
热心 2619
阅读权限 100
注册 2006-4-7
状态 离线
Oracle9i的物理内存管理


Oracle
9i以前的版本中,你只能在启动数据库的时候控制
Oracle
使用的UNIX内存。
Oracle
提供了一些INIT.ORA参数来检测系统全局区(system global area,SGA)的RAM大小。一旦启动了数据库,你将不能再改变SGA的大小和配置。  

   
  

Oracle
向一个24/7数据库迈进的目标,提出了调整UNIX内存区的大小而不必停止和重启数据库的要求。更重要的是,
Oracle
9i的动态SGA特性允许你监控SGA内的物理内存使用,并根据现有的
Oracle
数据库的需求调整SGA内存区域。   

Oracle
9i还加入了一项新的内存管理技术,使得你能够为所有的程序全局区(program global area,PGA)预分配内存,并允许
Oracle
按照各类连接的不同需求为各连接分配内存。这是对传统
Oracle
数据库的一项相当激进的更改,而且使得SORT_AREA_SIZE和其他PGA参数被废弃。   
不仅要分配SGA,
Oracle
9i DBA还必须担负为UNIX
Oracle
服务器分配所有内存的责任,同时还要为UNIX的管理需要预留20%的内存。      

Oracle
9i之前的版本中,同时拥有数个INIT.ORA参数文件并不罕见,因为这样可以方便地调整数据库并重新配置SGA以改变运行模式。比如,为在线事务处理(online transaction processing,OLTP)而分配的SGA和
Oracle
数据仓库处理模式的有很大不同。      

Oracle
推荐为OLTP数据库和决策支持系统(decision support system,DSS)应用程序&;#8212;&;#8212;如
Oracle
数据仓库&;#8212;&;#8212;使用不同的内存配置方案。OLTP系统应该将UNIX内存的大部分分配给SGA,而数据仓库和DSS应用程序对内存较为敏感,则应分配大部分内存给PGA连接。      
当然,如果一个数据库会以两种方式运作,你可以运行一个脚本来动态改变内存分配。例如,如果一个数据库在白天以OLTP模式运行,而在晚上以DSS模式运行,那么你可以运行一个脚本从SGA中拿些内存出来,重新分配到PGA区域。      
alter system set sga_memory_max = 3g;
alter system set pga_aggregate_target = 3g;  

   

Oracle
9i中,
Oracle
提供了增加或减少SGA内存以下部分大小的能力:   
Data buffer size - alter system set db_cache_size=300m;
Shared pool size - alter system set shared_pool_size=200m;
Total PGA RAM memory size - alter system set pga_aggregate_target=2000m;     
在UNIX上,
Oracle
通过修改UNIX内存区的物理地址空间来达到动态内存分配的目的。你在UNIX上用malloc()和free()命令就能做到。   
新的动态SGA特性使得
Oracle
SGA可以以一个较小的容量开始,并根据需要逐渐增加。为了便利这个过程还提供了一个新的SGA_MAX_SIZE参数。

网友 问天 签名 - 网友社区 请您回个帖。谢谢
PR查询 免费域名 免费空间
顶部
[广告] 免费域名(Free Subdomain) 免费空间(Free hosting) PR查询(Google Pagerank)



当前时区 GMT+8, 现在时间是 2008-12-2 14:43
信产部ICP备案:京ICP备05066424号 北京市公安局网监备案:1101050648号

Powered by Discuz! 5.5.0
清除 Cookies - 联系我们 - 网友俱乐部 - Archiver - WAP