久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Oracle的內存管理方式

196次閱讀
沒有評論

共計 5252 個字符,預計需要花費 14 分鐘才能閱讀完成。

本篇內容主要講解“Oracle 的內存管理方式”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“Oracle 的內存管理方式”吧!

Oracle 內存管理方式

oracle11g 新出參數 MEMORY_MAX_TARGET 和   MEMORY_TARGET 進行自動管理 PGA 和 SGA 稱之為 自動化內存管理 (Automatic Memory Management,AMM。

MEMORY_MAX_TARGET :MEMORY_TARGET 所能設定的最大值。非動態可調。

MEMORY_TARGET:操作系統上 Oracle 所能使用的最大內存值。動態參數,MEMORY_TARGET 是 PAG 和 SGA 的總和。memory_target 為 0 是手動管理,非 0 為自動管理。

如果指定了 memory_target 而沒有指定 memory_max_target 重啟后,memory_max_target 和 memory_target 大小相等;

如果指定了 memory_max_target 而沒有指定 memory_target 重啟后 memory_target 為 0;

當設置   memory_max_target memory_target 時,則重啟后報錯(ORA-00837: Specified value of MEMORY_TARGET greater than MEMORY_MAX_TARGET)

sga_max_size:sga_max_size 是 sga 的最大值。

sga_target :  sga_target    是自動和手段管理;sga_target 為 0 是手動管理,非 0 是自動管理    

oracle 11g 引入參數 mymory_max_target 和 memory_target 就是 oracle 的新特性自動內存管理,AMM 的引入,組合出來有 5 種內存管理形式. 如下:

自動內存管理(AMM): memory_target= 非 0,是自動內存管理  ,如果初始化參數 LOCK_SGA = true,則 AMM 是不可用的。

自動共享內存管理 (ASMM): 在 memory_target=0 and sga_target= 非 0 是自動內存管理

手工共享內存管理: memory_target=0 and sga_target=0    指定 share_pool_size、db_cache_size 等 sga 參數

自動 PGA 管理: memory_target=0 and workarea_size_policy=auto  and PGA_AGGREGATE_TARGET= 值

手動 PGA 管理: memory_target=0 and workarea_size_policy=manal  然后指定 SORT_AREA_SIZE 等 PGA 參數,一般不使用手動管理 PGA;

=========================================================================

racle 的內存分為兩個部分。一個是 SGA(system global area),一個是 PGA(program global area)。所謂的內存管理,就是對這兩部分區域進行管理。oracle 的內存管理經理了如下發展:

oracle 9i   PGA 自動管理,SGA 手動管理

oracle10g PGA 自動管理,SGA 自動管理

oracle11g PGA,SGA 統一自動管理

先看 9i 時期的 PGA 自動管理,SGA 手動管理

這時期 PGA 管理有兩個選擇,手動和自動。

手動時,設置 WORKAREA_SIZE_POLICY 為 MANUAL, 設置各種 *_AREA_SIZE 的值比如 SORT_AREA_SIZE_HASH_AREA_SIZE 就可以實現手動 PGA 管理。

自動時,設置 WORKAREA_SIZE_POLICY 為 AUTO,設置 PGA_AGGREAGATE_TARGET 的值,則為自動 PGA 管理。

這時期 SGA 的管理只可以手動管理,但是相比之前有了進步,可以動態的管理。

再看 10g 時期的 PGA 自動管理,SGA 自動管理

這時期 PGA 和 9i 一樣,都可以手動和自動。

這時期的 SGA 則有了進步,可以手動管理,也增加了自動管理的選擇。

設置 SGA_TARGET,就可以實現自動 SGA 管理。

現在看 11g 時期的 PGA,SGA 統一自動管理

這時期的內存管理向前兼容。

PGA 可以手動,自動管理

SGAK 也可以手動,自動管理

但是有了一個更方便的特性,就是把 PGA,SGA 的自動整合到一起,通過 MEMORY_TARGET 來管理。這時有了兩個參數 MEMORY_TARGET,MEMORY_MAX_TARGET. 有了這兩個參數,就可以把 PGA,SGA 作為一個整體管理。

有一些要注意的地方:

1. 如果設置了 MEMORY_TARGET 的同時還設置了 SGA_TARGET,PGA_TARGET 怎么辦呢?這時候,SGA_TARGET 和 PGA_TARGET 的值如果小于 MEMORY_TARGET,那么 oracle 就會把他們作為 SGA, 和 PGA 的最小值,如果他們比 MEMORY_TARGET 還大,那么 oracle 就會報錯。

2.PGA 是跟每一個 oracle server 進程相關的,所以 WORKAREA_SIZE_POLICY 應該是可以設置在 session 級別,也可以設置在 system 級別。

3. 幾個視圖比較有用,V$MEMORY_DYNAMIC_COMPONENTS 會展示動態調整的內存組件大小。V$MEMORY_RESIZE_OPS 展示了最近的 800 條 SGA 調整記錄。

=========================================================================

Oracle 9i 引入 pga_aggregate_target,可以自動對 PGA 進行調整;

Oracle 10g 引入 sga_target,可以自動對 SGA 進行調整;

Oracle 11g 則對這兩部分進行綜合,引入 memory_target,可以自動調整所有的內存,這就是新引入的自動內存管理特性。

自動內存管理是用兩個初始化參數進行配置的:

MEMORY_TARGET:動態控制 SGA 和 PGA 時,Oracle 總共可以使用的共享內存大小,這個參數是動態的,因此提供給 Oracle 的內存總量是可以動態增大,也可以動態減小的。它不能超過 MEMORY_MAX_TARGET 參數設置的大小。默認值是 0。

MEMORY_MAX_TARGET:這個參數定義了 MEMORY_TARGET 最大可以達到而不用重啟實例的值,如果沒有設置 MEMORY_MAX_TARGET 值,默認等于 MEMORY_TARGET 的值。使用動態內存管理時,SGA_TARGET 和 PGA_AGGREGATE_TARGET 代表它們各自內存區域的最小設置,要讓 Oracle 完全控制內存管理,這兩個參數應該設置為 0。

memory_max_target 是一個非動態參數,不能在 memory 范圍動態改變,只能通過指明 scope=spfile 這個條件來達到數據庫在下次啟動后讓改變生效的目的。但是 memory_target 這個參數是可以動態調節的 … 也就是說不需要重新啟動 DB,就可以讓其生效。

MEMORY_MAX_TARGET 是設定 Oracle 能占 OS 多大的內存空間;SGA_MAX_SIZE 是 Oracle SGA 區最大能占多大內存空間.、

10g 的 sga_max_size 是動態分配 Shared Pool Size,database buffer cache,large pool,java pool,redo log buffer 大小的,是根據 Oracle 運行狀況來重新分配 SGA 各內存塊的大小。PGA 在 10g 中需要單獨設定。

11g MEMORY_MAX_TARGET 參數包含 SGA 和 PGA 兩部分。

在手動創建數據庫時,只需要在創建數據庫之前設置合適的 MEMORY_TARGET 和 MEMORY_MAX_TARGET 初始化參數。

下面來看看在 11g 中 Memory_target 設置和不設置對 SGA/PGA 的影響:

A:如果 Memory_target 設置為非 0 值

     (下面有四種情況來對 SGA 和 PGA 的大小進行分配)

      1:sga_target 和 pga_aggregate_target 已經設置大小如果 Oracle 中已經設置了參數 sga_target 和 pga_aggregate_target,則這兩個參數將各自被分配為 最小值最為它們的目標值。

Memory_Target =SGA_TARGET+PGA_AGGREGATE_TARGET ,大小和 memory_max_size 一致。

      2:sga_target  設置大小,pga_aggregate_target  沒有設置大小  

            那么 pga_aggregate_target 初始化值 =memory_target-sga_target

      3:sga_target  沒有設置大小,pga_aggregate_target  設置大小  

            那么 sga_target 初始化值 =memory_target-pga_aggregate_target

      4:sga_target  和 pga_aggregate_target  都沒有設置大小 Oracle 11g 中對這種 sga_target 和 pga_aggregate_target 都沒有設定大小的情況下,Oracle 將對這兩個值沒有最小值和默認值。Oracle 將根據數據庫 運行狀況進行分配大小。但在數據庫啟動是會有一個固定比例來分配:

         sga_target =memory_target *60%

         pga_aggregate_target=memory_target *40%

B:如果 Memory_target 沒有設置或 =0(在 11g 中默認為 0)

    11g 中默認為 0 則初始狀態下取消了 Memory_target 的作用,完全和 10g 在內存管理上一致,完全向下兼容。

   (也有三種情況來對 SGA 和 PGA 的大小進行分配)     

   1:SGA_TARGET 設置值,則自動調節 SGA 中的 shared pool,buffer  cache,redo log buffer,java pool,larger pool 等內存空間的大小。PGA 則依賴 pga_aggregate_target 的大小。sga  和 pga 不能自動增長和自動縮小。

   2:SGA_target 和 PGA_AGGREGATE_TARGET  都沒有設置

           SGA 中的各組件大小都要明確設定,不能自動調整各組建大小。PGA 不能自動增長和收縮。

   3:  MEMORY_MAX_TARGET 設置 而 MEMORY_TARGET =0  這種情況先和 10g 一樣,不做說明

在 11g 中可以使用下面看各組件的值

SQL show parameter target

NAME                                 TYPE        VALUE

———————— ———– ———————

archive_lag_target                   integer     0

db_flashback_retention_target        integer     1440

fast_start_io_target                 integer     0

fast_start_mttr_target               integer     0

memory_max_target                    big integer 1024M

memory_target                        big integer 1024M

pga_aggregate_target                 big integer 0

sga_target                           big integer 0

如果需要監視 Memory_target 的狀況則可以使用下面三個動態試圖:

   V$MEMORY_DYNAMIC_COMPONENTS

   V$MEMORY_RESIZE_OPS 

   v$memory_target_advice

使用下面 Command 來調節大?。?/p>

SQL ALTER SYSTEM SET MEMORY_MAX_TARGET = 1024M SCOPE = SPFILE; 

SQL ALTER SYSTEM SET MEMORY_TARGET = 1024M SCOPE = SPFILE; 

SQL ALTER SYSTEM SET SGA_TARGET =0 SCOPE = SPFILE; 

SQL ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0 SCOPE = SPFILE ;

到此,相信大家對“Oracle 的內存管理方式”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-01發表,共計5252字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 阿拉善盟| 旅游| 正阳县| 南召县| 邵阳县| 高州市| 黔东| 金昌市| 四会市| 阜宁县| 邢台县| 思茅市| 义乌市| 通化市| 庆城县| 灵璧县| 金堂县| 沅陵县| 朝阳市| 布拖县| 浑源县| 阳信县| 金堂县| 拜城县| 万全县| 莱芜市| 舟曲县| 牟定县| 临海市| 长泰县| 华安县| 金华市| 太原市| 沙湾县| 类乌齐县| 德江县| 将乐县| 澜沧| 遂平县| 乌拉特后旗| 西宁市|