oracle的自動共用記憶體管理概述

來源:互聯網
上載者:User

從Oracle 10g開始,Oracle提供了自動SGA的管理(簡稱ASMM,即Automatic Shared Memory Management)新特性。所謂ASMM,就是指我們不再需要手工設定 shared pool、buffer pool等若干記憶體池的大小,而是為SGA設定一個總的大小尺寸即可。Oracle 10g資料庫會根據系統負載的變化,自動調整各個組件的大 小,從而使得記憶體始終能夠流向最需要它的地方。

比如,假設某個系統,白天屬於OLTP應用,因此會需要較多的buffer cache。而該系統在晚上屬於DSS應用。對於DSS應用,很多的SQL語句由雩都是進行全表 掃描,因此都會採取並行方式完成。我們知道,並行時需要靠若干的從屬進程完成工作,而從屬進程會從large pool中進行分配。於是,晚上會需要較多的 large pool。如果我們啟用了ASMM,則資料庫會根據負載的變化而自動的對記憶體大小進行調整,就不需要DBA進行手工調整了。

Oracle 10g提供了一個新的初始化參數:sga_target來啟動ASMM,該參數定義了整個SGA的總容量。同時,初始化參數statistics_level必須設定為typical 或all才能啟動ASMM,否則如果設定為basic,則關閉ASMM。

ASMM只能自動調整5個記憶體池的大小,它們是:shared pool、buffer cache、large pool、java pool和stream pool。我們不再需要設定shared_pool_size 、db_cache_size、large_pool_size、java_pool_size、streams_pool_size這五個初始化參數。而其他的記憶體池,比如log buffer、keep buffer cache等 仍然需要DBA手工進行調整。

舉例來說,假設我們將sga_target設定為500MB,表示SGA總容量為500MB。但是如果我們需要配置100MB的keep buffer cache,則必須手工設定參數 db_keep_cache_size為100MB。同時如果設定參數log_buffer為3MB,那麼shared pool、buffer cache等可以調整的5個部分的總容量就是397MB(500-100- 3=397)。

Oracle 10g還提供了另一個初始化參數sga_max_size。sga_target的值不能超過sga_max_size的值,修改sga_max_size時,必須重啟執行個體才會生效,而 sga_target則可以線上修改,立即生效,無須重啟執行個體。

為了實現ASMM,Oracle新引入了一個名為MMAN(Memory Manager)的後台進程。每隔很短的一段時間,MMAN進程就會啟動,然後去詢問一下Oracle提供的各 個記憶體組件顧問,比如有buffer cache顧問,也有shared pool顧問,由這些顧問根據當前的負載情況,將這5個可以自動調整的記憶體池的、建議的大小尺寸 ,返回給MMAN。於是,MMAN進程就會根據該返回的值,來設定各個記憶體池。同時,如果我們使用了spfile,還會將這些顧問得出的建議值寫入spfile裡。這 樣,下次啟動執行個體時,就可以直接把顧問得出的建議值拿來作為啟動記憶體池的依據了。

如果我們啟用了ASMM,同時又手工設定了可以自動調整大小的記憶體池的尺寸,比如設定了參數shared_pool_size為一個非0值的時候,會怎麼樣?對於Oracle  10g來說,我們為自動調整大小的記憶體組件設定了值,則會以我們設定的值作為自動調整的最小值。也就是說,假設sga_target為4GB,而我們將 shared_pool_size設定為600MB,則MMAN在進行自動調整時,永遠不會將shared pool設定為600MB以下。

實際上,為了使用ASMM,Oracle為這5個可自動調整的組件又提供了5個控制它們大小尺寸的參數,以“__”(兩個下畫線開頭)。我們把當前的spfile匯出 到pfile裡。

SQL> create pfile='/u01/init.ora' from spfile;

SQL> !vi /u01/init.ora

開啟該pfile以後,我們會發現檔案的前5行,會顯示如下的內容(具體值可能不一樣):

ora10g.__db_cache_size=134217728

ora10g.__java_pool_size=4194304

ora10g.__large_pool_size=4194304

ora10g.__shared_pool_size=62914560

ora10g.__streams_pool_size=0

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.