Oracle9i的實體記憶體管理

來源:互聯網
上載者:User

在Oracle9i以前的版本中,你只能在啟動資料庫的時候控制Oracle使用的UNIX記憶體。Oracle提供了一些INIT.ORA參數來檢測系統全域區(system global area,SGA)的RAM大小。一旦啟動了資料庫,你將不能再改變SGA的大小和配置。

 
Oracle向一個24/7資料庫邁進的目標,提出了調整UNIX記憶體區的大小而不必停止和重啟資料庫的要求。更重要的是,Oracle9i的動態SGA特性允許你監控SGA內的實體記憶體使用,並根據現有的Oracle資料庫的需求調整SGA記憶體地區。

Oracle9i還加入了一項新的記憶體管理技術,使得你能夠為所有的程式全域區(program global area,PGA)預分配記憶體,並允許Oracle按照各類串連的不同需求為各串連分配記憶體。這是對傳統Oracle資料庫的一項相當激進的更改,而且使得SORT_AREA_SIZE和其他PGA參數被廢棄。

不僅要分配SGA,Oracle9i DBA還必須擔負為UNIX Oracle伺服器分配所有記憶體的責任,同時還要為UNIX的管理需要預留20%的記憶體。

在Oracle9i之前的版本中,同時擁有數個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 = 3g;
alter system set pga_aggregate_target = 3g;

在Oracle9i中,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參數。



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

11.11 Big Sale for Cloud

Get Unbeatable Offers with up to 90% Off,Oct.24-Nov.13 (UTC+8)

Get It Now >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。