自動內存(SGA)管理

如何調整最佳PGS SIZEhtml

1. 首先估計一個 PGA_AGGREGATE_TARGET 參數值。
2. 使實例運行在預期的負載下,經過 Oracle 收集的 PGA 統計信息來監控系統性能,從而決定當前參數值是否適當。
3. 根據 PGA 顧問工具的統計數據來調整 PGA_AGGREGATE_TARGET 參數的值。java

SQL> show parameter workarea_size_policy

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
workarea_size_policy                 string      AUTO
如何肯定PGA內存自動管理

oracle自動內存管理算法

oracle 11g內存自動管理 sql

當用戶啓用了自動共享內存管理後,須要用戶常常調整的內存組件將被Oracle自動地調整.這樣的內存組件包括:數據庫

  1. shared pool(供sql 及 pl/sql執行使用)
  2. java pool(供java程序執行適用)
  3. large pool(用於大量的內存分配,例如RMAN的備份緩衝區)
  4. database buffer pool
  5. stream pool

用戶無需顯示地爲這些內存組件設定容量,默認狀況下這些組件的容量參數均顯示爲0.當某個內存組件須要擴展容量時,她將想系統發出請求,Oracle則經過內部的自動調節機制將其餘組件的內存轉移給她。上述過程對用戶是透明的.服務器

oracle組件負責監控各個內存組件的性能.實例根據內部視圖的信息及其餘統計信息來決定如何在各個自動管理的組件間分配內存達到最優.這樣,當工做負載改變時內存就可以被從新分配,從而確保系統在新負載下也能得到最優性能.內存分配調整算法會同時考慮系統運行的短時間與長期趨勢.oracle

對於自動管理的內存組件,用戶能夠爲其指定最小容量.當用戶瞭解了其應用所需的各個內存組件的容量時,就可使用此功能.(我的觀點:伴隨業務的發展變化,設定其最小容量後,其內存需求也會隨之變化,還不如保持其自動管理功能;真正須要關心的是能夠適當調整總的pga_aggregate_target參數大小便可)ide

若是數據庫使用了服務器參數文件(server parameter file->spfile),那麼自動調整內存組件的參數在實例關閉後依然能被保留.系統下次啓動時可使用上次關閉時保留的參數.工具

使用自動SGA內存管理的最大好處是:各個SGA組件的容量是靈活可變的.可以適應不一樣的工做負載而無需用戶干預.除了是可用內存最大化以外,自動共享內存管理還有助於提供系統性能.採用手工內存管理時,已編譯的SQL語句可能會由於共享池容量不足而 被清除出共享池.這將致使頻繁的硬解析(hard parse)進而影響系統性能.而啓用了自動內存管理後,內部調節算法將監控系統性能,如認爲增大共享池有助於減小硬解析的話就會對內存組件作出相應調整.此功能提升了系統性能,且無需想系統添加資源,也無需任何手工調整操做.性能

空間回收

數據段收縮屬於聯機操做,當表的數據段被收縮時,此表依然能夠進行查詢或DML操做.此外,數據段收縮無需額外的存儲空間.本地收縮與經過聯機重定義的方式收縮相比更有優點.用戶能夠在夜間按期調度做業在執行數據庫對象的收縮操做,而無需爲數據庫提供額外的存儲空間.

採用了自動段空間管理(automatic segment space management)的表空間中,數據段收縮能夠做用於

  • 堆表(heap-orgnized table)
  • 索引表(index-organized table)
  • 索引表的溢出段(row overflow area)
  • LOB對象
  • LOB段
  • 物化視圖
  • 容許行移動的索引

若是對帶有索引的表進行數據段收縮操做,當數據行發生移動時oracle可以自動地維護索引.但用戶自定義的觸發器不會被觸發,由於數據段收送屬於物理操做,對應用程序沒有影響.

Oracle服務

一個服務能夠跨越一個數據庫的多個實例,還能夠跨一個集羣的多個數據庫,而一個實例也可以支持多個服務.

ASM(自動存儲管理)

磁盤組

每一個自動存儲管理文件只能存在一個磁盤組內.但一個磁盤組能夠存儲屬於不一樣數據庫的數據文件,一個數據庫也可以使用多個磁盤組提供的存儲資源.管理員能夠爲數據庫指定一個或多個默認的磁盤組來存儲其數據文件.

大部分數據庫都會使用多個磁盤組.使用多個磁盤組的緣由以下:

  • 應將不一樣容量或不一樣性能的磁盤劃分爲不一樣的磁盤組.
  • 應根據外部冗餘能力(external redundancy)來劃分磁盤組:具有相同外部冗餘能力的磁盤應劃入統一磁盤組,而外部冗餘能力不一樣的磁盤不該化爲統一磁盤組.
  • 將數據庫去(database area)與快速恢復區(flash recovery area)放置在不一樣的磁盤組.

磁盤組的類型

  • 正常冗餘
  • 高冗餘
  • 外部冗餘

Oracle instance ->    ASMB(負責實例通訊)    <--- asm instance

如何判斷oracle是自動內存管理的?

參考文章

參考意見:

經過查看命令:show parameter sga,顯示若是sga_target值爲0,表示手動管理;非0是自動管理.

SQL> show parameter sga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     FALSE
sga_max_size                         big integer 1584M
sga_target                           big integer 0
相關文章
相關標籤/搜索