数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle9i的物理内存管理


发布日期:2021年09月16日
 
Oracle9i的物理内存管理

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

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

Oraclei还加入了一项新的内存管理技术使得你能够为所有的程序全局区(program global areaPGA)预分配内存并允许Oracle按照各类连接的不同需求为各连接分配内存这是对传统Oracle数据库的一项相当激进的更改而且使得SORT_AREA_SIZE和其他PGA参数被废弃

不仅要分配SGAOraclei DBA还必须担负为UNIX Oracle服务器分配所有内存的责任同时还要为UNIX的管理需要预留%的内存

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

Oracle推荐为OLTP数据库和决策支持系统(decision support systemDSS)应用程序——如Oracle数据仓库——使用不同的内存配置方案OLTP系统应该将UNIX内存的大部分分配给SGA而数据仓库和DSS应用程序对内存较为敏感则应分配大部分内存给PGA连接

当然如果一个数据库会以两种方式运作你可以运行一个脚本来动态改变内存分配例如如果一个数据库在白天以OLTP模式运行而在晚上以DSS模式运行那么你可以运行一个脚本从SGA中拿些内存出来重新分配到PGA区域

alter system set sga_memory_max = g;

alter system set pga_aggregate_target = g;

在Oraclei中Oracle提供了增加或减少SGA内存以下部分大小的能力

Data buffer size alter system set db_cache_size=m;

Shared pool size alter system set shared_pool_size=m;

Total PGA RAM memory size alter system set pga_aggregate_target=m;

在UNIX上Oracle通过修改UNIX内存区的物理地址空间来达到动态内存分配的目的你在UNIX上用malloc()和free()命令就能做到

新的动态SGA特性使得Oracle SGA可以以一个较小的容量开始并根据需要逐渐增加为了便利这个过程还提供了一个新的SGA_MAX_SIZE参数

上一篇:Oracle中whereclause的表达式的顺序

下一篇:Oracle DBA需要的技能