在Oracle
i以前的版本中
你只能在啟動數據庫的時候控制Oracle使用的UNIX內存
Oracle提供了一些INIT
ORA參數來檢測系統全局區(system global area
SGA)的RAM大小
一旦啟動了數據庫
你將不能再改變SGA的大小和配置
Oracle向一個
/
數據庫邁進的目標
提出了調整UNIX內存區的大小而不必停止和重啟數據庫的要求
更重要的是
Oracle
i的動態SGA特性允許你監控SGA內的物理內存使用
並根據現有的Oracle數據庫的需求調整SGA內存區域
Oracle
i還加入了一項新的內存管理技術
使得你能夠為所有的程序全局區(program global area
PGA)預分配內存
並允許Oracle按照各類連接的不同需求為各連接分配內存
這是對傳統Oracle數據庫的一項相當激進的更改
而且使得SORT_AREA_SIZE和其他PGA參數被廢棄
不僅要分配SGA
Oracle
i DBA還必須擔負為UNIX Oracle服務器分配所有內存的責任
同時還要為UNIX的管理需要預留
%的內存
在Oracle
i之前的版本中
同時擁有數個INIT
ORA參數文件並不罕見
因為這樣可以方便地調整數據庫並重新配置SGA以改變運行模式
比如
為在線事務處理(online transaction processing
OLTP)而分配的SGA和Oracle數據倉庫處理模式的有很大不同
Oracle推薦為OLTP數據庫和決策支持系統(decision support system
DSS)應用程序——如Oracle數據倉庫——使用不同的內存配置方案
OLTP系統應該將UNIX內存的大部分分配給SGA
而數據倉庫和DSS應用程序對內存較為敏感
則應分配大部分內存給PGA連接
當然
如果一個數據庫會以兩種方式運作
你可以運行一個腳本來動態改變內存分配
例如
如果一個數據庫在白天以OLTP模式運行
而在晚上以DSS模式運行
那麼你可以運行一個腳本從SGA中拿些內存出來
重新分配到PGA區域
alter system set sga_memory_max =
g;
alter system set pga_aggregate_target =
g;
在Oracle
i中
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參數
From:http://tw.wingwit.com/Article/program/Oracle/201311/17674.html