讀書筆記:深入解析oracle-第5章 記憶體管理

浪漫雙魚發表於2011-06-13

1、 PGA指的是程式全域性區(Program Global Area),是伺服器程式(Server Process)使用的一塊包含資料和控制資訊的記憶體區域,是非共享記憶體,所以pga中的記憶體結構不需要用latch來保護。

2、 PGA分為固定PGA和可變PGA(又分為會話記憶體和私有的SQL區(又分為永久區域和執行時區域))

3、 PGA是服務於程式的記憶體結構,包含程式資訊;而UGA是服務於會話的,包含的是會話的資訊。

4、 引數_use_realfree_heap設定為true時,oracle會為CGAcall global area呼叫全域性區)、UGA單獨分配堆,而不從PGA中分配,當設定了pga_aggregate_target後,它的值為true

5、 Workarea_size_policy引數設為auto時,才會使用自動PGA管理功能。

6、 Sql在工作區中以3種方式執行

A、 optimal:至所有處理可以在記憶體中完成。

B、 onepass:大部分操作可以在記憶體中完成,但是需要使用到磁碟操作

C、 multipass:大量操作需要產生磁碟互動,效能極差。

7、 sga fixed size 部分是SGA中的固定部分,包含資料庫和例項的狀態等通用資訊,後臺程式需要訪問這部分資訊,不儲存使用者資料,通常只需要很小部分記憶體。

8、 SGA的設定在LINUX/UNIX上和一個作業系統核心引數shmmax有關。實際上shmmax核心引數定義的是系統允許的單個共享記憶體段的最大值,如果該引數設定小於SGA設定,那麼SGA會被分配多個共享記憶體段。通常推薦通過調整shmmax設定,將SGA限制在一個共享記憶體段中。

9、 記憶體不足的告警可能是因為資料庫異常關閉,後臺程式未正常退出,共享記憶體未及時釋放引起的,對於這種情況,可以通過ipcs命令找到共享記憶體段id(shared memory id),然後通過ipcrm命令可以強制釋放該共享記憶體段,完成這些特殊處理後,資料庫通常就可以正常啟動了。

10、      設定引數SGA_MAX_SIZE用以控制各緩衝池使用的記憶體總和,本質上是在程式中預先分配一段虛擬地址備用而不分配實體記憶體,目的是防止和私有地址段的衝突。

11、      自動的共享記憶體管理引入了一個新的後臺程式MMAN(Memory Manager).該程式用以動態調整記憶體元件。

12、      通過動態檢視v$sga_dynamic_components可以看到各動態元件調整的時間和調整型別等資訊。

13、       這是一個可以參考的數值,在為oracle規劃記憶體使用時,我們必須清楚,如果oracle耗用的記憶體過高,甚至超過了系統的實體記憶體,那麼系統的效能就會受到嚴重的影響,當系統執行任務時,如果沒有足夠的記憶體,那麼系統就會進行分頁或交換,以完成當前活動事務。

      當系統執行分頁時,會將當前沒有使用的資訊從記憶體專移到硬碟上,這樣就可以為當前需要記憶體的程式分配記憶體。如果頻繁發生分頁,系統效能就會嚴重降低,從而導致很多程式的執行時間變長。

     當系統執行交換時,會將某些程式所分配的不活躍記憶體頁(根據LRU演算法)從記憶體轉移到硬碟上,這樣另一個活動程式就可以得到所需要的記憶體。交際基於系統迴圈時間。如果交換太過頻繁,系統甚至會出現當機。

14、      關於作業系統,一般swap區的推薦值為2*RAM

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11088128/viewspace-697808/,如需轉載,請註明出處,否則將追究法律責任。

相關文章