一、內(nèi)存結(jié)構(gòu)
SGA(System Global Area):由所有服務進程和后臺進程共享;
PGA(Program Global Area):由每個服務進程、后臺進程專有;每個進程都有一個PGA。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:國際域名空間、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、臥龍網(wǎng)站維護、網(wǎng)站推廣。
二、SGA
包含實例的數(shù)據(jù)和控制信息,包含如下內(nèi)存結(jié)構(gòu):
1)Database buffer cache:緩存了從磁盤上檢索的數(shù)據(jù)塊。
2)Redo log buffer:緩存了寫到磁盤之前的重做信息。
3)Shared pool:緩存了各用戶間可共享的各種結(jié)構(gòu)。
4)Large pool:一個可選的區(qū)域,用來緩存大的I/O請求,以支持并行查詢、共享服務器模式以及某些備份操作。
5)Java pool:保存java虛擬機中特定會話的數(shù)據(jù)與java代碼。
6)Streams pool:由Oracle streams使用。
7)Keep buffer cache:保存buffer cache中存儲的數(shù)據(jù),使其盡時間可能長。
8)Recycle buffer cache:保存buffer cache中即將過期的數(shù)據(jù)。
9)nK block size buffer:為與數(shù)據(jù)庫默認數(shù)據(jù)塊大小不同的數(shù)據(jù)塊提供緩存。用來支持表空間傳輸。
database buffer cache, shared pool, large pool, streams pool與Java pool根據(jù)當前數(shù)據(jù)庫狀態(tài),自動調(diào)整;
keep buffer cache,recycle buffer cache,nK block size buffer可以在不關(guān)閉實例情況下,動態(tài)修改。
三、PGA
每個服務進程私有的內(nèi)存區(qū)域,包含如下結(jié)構(gòu):
1)Private SQL area:包含綁定信息、運行時的內(nèi)存結(jié)構(gòu)。每個發(fā)出sql語句的會話,都有一個private SQL area(私有SQL區(qū))
2)Session memory:為保存會話中的變量以及其他與會話相關(guān)的信息,而分配的內(nèi)存區(qū)。
四、SGA COMPONENT
(一)、Buffer Cache
1、DB_CACHE_SIZE
通過參數(shù)DB_CACHE_SIZE可指定DB buffer cache的大小
ALTER SYSTEM SET DB_CACHE_SIZE=20M scope=both;
服務進程從數(shù)據(jù)文件讀數(shù)據(jù)到buffer cache;DBWn從buffer cache寫數(shù)據(jù)到數(shù)據(jù)文件。
buffer cache的四種狀態(tài):
1)pinned:當前塊正在讀到cache或正寫到磁盤,其他會話等待訪問該塊。
2)clean:
3)free/unused:buffer內(nèi)為空,為實例剛啟動時的狀態(tài)。
4)dirty:臟數(shù)據(jù),數(shù)據(jù)塊被修改,需要被DBWn刷新到磁盤,才能執(zhí)行過期處理。
同一個數(shù)據(jù)庫中,支持多種大小的數(shù)據(jù)塊緩存。通過DB_nK_CACHE_SIZE參數(shù)指定,如
• DB_2K_CACHE_SIZE
• DB_4K_CACHE_SIZE
• DB_8K_CACHE_SIZE
• DB_16K_CACHE_SIZE
• DB_32K_CACHE_SIZE
標準塊緩存區(qū)大小由DB_CACHE_SIZE指定。如標準塊為nK,則不能通過DB_nK_CACHE_SIZE來指定標準塊緩存區(qū)的大小,應由DB_CACHE_SIZE指定。
例,標準塊為8K,則數(shù)據(jù)庫可以設(shè)置的塊緩存大小的參數(shù)如下:
• DB_CACHE_SIZE (指定標準塊(這里為8K)的緩存區(qū))
• DB_2K_CACHE_SIZE (指定塊大小為2K的緩存區(qū))
• DB_4K_CACHE_SIZE (指定塊大小為4K的緩存區(qū))
• DB_16K_CACHE_SIZE (指定塊大小為16K的緩存區(qū))
• DB_32K_CACHE_SIZE (指定塊大小為32K的緩存區(qū))
2、多種緩沖池(buffer pool)
1)Keep:通過db_keep_cache_size參數(shù)指定。
該buffer內(nèi)的數(shù)據(jù)可能被重用,以降低I/O操作。該池的大小要大于指定到該池的段的總和。
讀入到keep buffer的塊不需要過期操作。
2)Recycle:通過db_recycle_cache_size參數(shù)指定。
該池中的數(shù)據(jù)被重用機會較小,該池大小要小于分配到該池的段的總和。讀入該池的塊需要經(jīng)常執(zhí)行過期處理。
3)Default:相當于一個沒有Keep與Recycle池的實例的buffer cache,通過db_cache_size參數(shù)指定。
3、為對象明確指定buffer pool
buffer_pool子句,用來為對象指定默認的buffer pool,是storage子句的一部分。
對create與alter table、cluster、index語句有效。
如果現(xiàn)有對象沒有明確指定buffer pool,則默認都指定為default buffer pool,大小為DB_CACHE_SIZE參數(shù)設(shè)置的值。
語法:
a.CREATE INDEX cust_idx ON tt(id) STORAGE (BUFFER_POOL KEEP);
b.ALTER TABLE oe.customers STORAGE (BUFFER_POOL RECYCLE);
c.ALTER INDEX oe.cust_lname_ix STORAGE (BUFFER_POOL KEEP);
(二)、Share Pool
1、SHARE_POOL_SIZE
1)Share Pool可通過SHARE_POOL_SIZE參數(shù)指定:
SQL> alter system set shared_pool_size=20M scope=both;
2)Share Pool保存的信息被多個會話共享,類型包括:
a.Library Cache
Library Cache又包含共享SQL區(qū)與PL/SQL區(qū):
a).共享SQL區(qū)保存了分析與編譯過的SQL語句。
b).PL/SQL區(qū)保存了分析與編譯過的PL/SQL塊(過程和函數(shù)、包、觸發(fā)器與匿名PL/SQL塊)。
b.Data Dictionary Cache
保存了數(shù)據(jù)字典對象的定義。
c.UGA(User Global Area)
UGA內(nèi)包含了共享服務器模式下的會話信息。
共享服務器模式時,如果large pool沒有配置,則UGA保存在Share Pool中。
(三)、Large Pool
1)Large Pool大小通過LARGE_POOL_SIZE參數(shù)指定:
SQL> alter system set large_pool_size=20m scope=both;
2)作用:
a.為I/O服務進程分配內(nèi)存
b.為備份與恢復操作分配內(nèi)存
c.為Oracle共享服務器模式與多個數(shù)據(jù)庫間的聯(lián)機事務分配內(nèi)存。
通過從large pool中為共享服務器模式分配會話內(nèi)存,可以減少share pool因頻繁為大對象分配和回收內(nèi)存而產(chǎn)生的碎片。將大的對象從share pool中分離出來,可以提高shared pool的使用效率,使其可以為新的請求提供服務或者根據(jù)需要保留現(xiàn)有的數(shù)據(jù)。
(四)、Java Pool
1、JAVA_POOL_SIZE
通過JAVA_POOL_SIZE參數(shù)指定java pool大小。
保存了jvm中特定會話的java code和數(shù)據(jù)。
2、在編譯數(shù)據(jù)庫中的java代碼和使用數(shù)據(jù)庫中的java資源對象時,都會用到share pool。
java的類加載程序?qū)γ總€加載的類會使用大約8K的空間。
系統(tǒng)跟蹤運行過程中,動態(tài)加載的java類,也會使用到share pool。
(五)、Redo Log Buffer
1、服務進程從用戶空間拷貝每條DML/DDL語句的redo條目到redo log buffer中。
2、redo log buffer是一個可以循環(huán)使用的buffer,服務進程拷貝新的redo覆蓋掉redo log buffer中已通過LGWR寫入磁盤(online redo log)的條目。
3、導致LGWR執(zhí)行寫redo log buffer到online redo log的條件
a.用戶執(zhí)行事務提交commit
b.每3秒鐘或redo log buffer內(nèi)已達到1/3滿或包含1MB數(shù)據(jù)
c.DBWn進程將修改的緩沖區(qū)寫入磁盤時(如果相應的重做日志數(shù)據(jù)尚未寫入磁盤)
(六)、ASMM(Automatic Shared Memory Management)
1、SGA_TARGET
1)SGA_TARGET默認值為0,即ASMM被禁用。需要手動設(shè)置SGA各中各組件的大小。
2)當SGA_TARGET為非0時,則啟用ASMM,自動調(diào)整以下各組件大?。?/font>
DB buffer cache(default pool)
shared pool
large pool
streams pool
java pool
但ASSM中, 以下參數(shù)仍需要手動指定:
log buffer
keep、recycle、以及非標準塊緩沖區(qū)
固定SGA以及其他內(nèi)部分配。
2、啟用ASMM需要將STATISTICS_LEVEL設(shè)置成TYPICAL或ALL
3、啟用ASMM,自動調(diào)整SGA內(nèi)部組件大小后。若手動指定某一組件值,則該值為該組件的最小值。如
手動設(shè)置SGA_TARGET=8G,SHARE_POOL_SIZE=1G,則ASMM在自動調(diào)整SGA內(nèi)部組件大小時,保證share pool不會低于1G。
SQL> SELECT component, current_size/1024/1024 size_mb FROM v$sga_dynamic_components;
4、SGA_MAX_SIZE
SGA_MAX_SIZE指定內(nèi)存中可以分配給SGA的最大值。
SGA_TARGET是一個動態(tài)參數(shù),其最大值為SGA_MAX_SIZE指定的值。
五、PGA
(一)Private SQL Area
1、保存了當前會話的綁定信息以及運行時內(nèi)存結(jié)構(gòu)。這些信息
2、每個執(zhí)行sql語句的會話,都有一個private sql area。
3、當多個用戶執(zhí)行相同的sql語句,此sql語句保存在一個稱為shared sql area。此share sql area被指定給這些用戶的private sql area
4、共享服務器模式:private sql area位于SGA的share pool或large pool中
專用服務器模式:private sql area位于PGA中
(二)Cursor、SQL Areas
(三)Work Area
PGA的一大部分被分配給Work Area,用來執(zhí)行如下操作:
a.基于操作符的排序,group by、order by、rollup和窗口函數(shù)。
參數(shù)為sort_area_size
b.hash散列連接,
參數(shù)為hash_area_size
c.位圖合并,
參數(shù)為bitmap_merge_area_size
d.位圖創(chuàng)建,
參數(shù)為create_bitmap_area_size
e.批量裝載操作使用的寫緩存
(四)Session memory
保存了會話的變量,如登錄信息及其他與會話相關(guān)的信息,共享服務器模式下,Session memory是共享的。
(五)自動PGA管理
設(shè)置PGA_AGGREGATE_TARGET為非0,則啟用PGA自動管理,并忽略所有*_area_size的設(shè)置。如sort_area_size,hash_area_size等。
默認為啟用PGA的自動管理,Oracle根據(jù)SGA的20%來動態(tài)調(diào)整PGA中專用與Work Area部分的內(nèi)存大小,最小為10MB。
用于實例中各活動工作區(qū)(work area)的PGA總量,為PGA_AGGREGATE_TARGET減去其他組件分配的PGA內(nèi)存。得到的結(jié)果,按照特定需求動態(tài)分配給對應的工作區(qū)。
1)設(shè)置PGA_AGGREGATE_TARGET大小的步驟
a.設(shè)置PGA_AGGREGATE_TARGET為SGA的20%,對于DSS系統(tǒng),此值可能過低。
b.運行典型的負載,通過oracle收集的pga統(tǒng)計信息來調(diào)整PGA_AGGREGATE_TARGET的值。
c.根據(jù)oracle的pga建議調(diào)整PGA_AGGREGATE_TARGET大小。
2)禁用自動pga管理
為向后兼容,設(shè)置PGA_AGGREGATE_TARGET為0,即禁用pga的自動管理。可使用關(guān)聯(lián)的*_area_size參數(shù)調(diào)整對應工作區(qū)的最大大小。
bitmap_merge_area_size
create_bitmap_area_size
hash_area_size
sort_area_size
1.jpeg
2.jpeg
3.jpeg
4.jpeg
新聞標題:Oracle之內(nèi)存結(jié)構(gòu)(SGA、PGA)
分享路徑:http://aaarwkj.com/article12/igghdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、App設(shè)計、企業(yè)建站、品牌網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站導航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)