ORACLE ASMM與AMM的總結

来源:https://www.cnblogs.com/kerrycode/archive/2018/01/05/8204624.html
-Advertisement-
Play Games

概念對比介紹 相信有些人會對ORACLE當中的AMM(Automatic Memory Management)與ASMM(Automatic Shared Memory Management)有些迷惑或混淆,不清楚兩者的異同,本文會從幾個方面來總結一下兩者的異同。如有不足或疏漏之處,敬請指正! 從O... ...


 

概念對比介紹

 

相信有些人會對ORACLE當中的AMM(Automatic Memory Management)與ASMM(Automatic Shared Memory Management)有些迷惑或混淆,不清楚兩者的異同,本文會從幾個方面來總結一下兩者的異同。如有不足或疏漏之處,敬請指正!

 

從ORACLE發佈的版本歷史(時間軸)來看,ORACLE的記憶體管理的大致歷程如下:

 

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

ORACLE 10g      PGA自動管理,SGA自動管理(ASMM,自動共用記憶體管理)

ORACLE 11g      PGA,SGA統一自動管理(AMM,自動記憶體管理)

ORACLE 12c      跟11g一樣,沒有變化

 

 

官方文檔的介紹資料如下:

 

·         Oracle 9i

 

·         Beginning with Oracle9i, the dynamic SGA infrastructure allowed for the sizing of the Buffer Cache, Shared Pool and the Large Pool without having to shut down the database. Key features being:

o   Dynamic Memory resizing

o   DB_CACHE_SIZE instead of DB_BLOCK_BUFFERS

o   DB_nK_CACHE_SIZE for multiple block sizes

o   PGA_AGGREGATE_TARGET Introduction of Automatic PGA Memory management

 

·         Oracle Database 10g

 

·         Automatic Shared Memory Management (ASMM) was introduced in 10g. You enable the automatic shared memory management feature by setting the SGA_TARGET parameter to a non-zero value.

 

·         Oracle Database 11g

 

·         Automatic Memory Management is being introduced in 11g. This enables automatic tuning of PGA and SGA with use of two new parameters named MEMORY_MAX_TARGET and MEMORY_TARGET

·         Oracle Database 12c

            Automatic Memory Management keeps the same behaviour as in 11g.

 

 

自動共用記憶體管理(Automatic Shared Memory Management ASMM)是ORACLE 10g開始引入的的新技術,ASMM用來實現SGA的自動管理。。當啟用自動共用記憶體管理後,不再需要為每個記憶體組件設定值,當然如果你設置SGA_TARGET的同時,設置了db_cache_size、shared_pool_size這些參數,那麼db_cache_size、shared_pool_size這些參數值會作為最小值要求。官方關於Automatic Shared Memory Management的介紹如下:

 

Automatic Shared Memory Management

 

In previous database releases, a database administrator (DBA) was required to manually specify different SGA component sizes by setting a number of initialization parameters, including the SHARED_POOL_SIZE, DB_CACHE_SIZE, JAVA_POOL_SIZE, and LARGE_POOL_SIZE parameters. Oracle Database 10g includes the Automatic Shared Memory Management feature which simplifies the SGA memory management significantly. In Oracle Database 10g, a DBA can simply specify the total amount of SGA memory available to an instance using the SGA_TARGET initialization parameter and the Oracle Database will automatically distribute this memory among various subcomponents to ensure most effective memory utilization.

 

When automatic SGA memory management is enabled, the sizes of the different SGA components are flexible and can adapt to the needs of a workload without requiring any additional configuration. The database automatically distributes the available memory among the various components as required, allowing the system to maximize the use of all available SGA memory.

 

ORACLE 10G版本開始推出了ASMM,自動SGA管理,它的出現一定程度上幫助DBA解決了管理SGA的問題,通過設置參數SGA_TARGET來控制ASMM,其中SGA_TARGET為零表示禁用ASMM,非零值表示啟用ASMM。但是在10G R1等早期版本,ASMM還不夠成熟,而且存在比較多的BUG,導致了比較多的問題。在ORACLE 10g R2後續版本中,ASMM才逐漸完善併成熟。

 

到了11g之後,ORACLE又實現了PGA和SGA的統一自動管理 ,這個稱之為自動化記憶體管理(Automatic Memory Management,AMM)。從這些演化歷程來看,ORACLE從最開始的手動配置各個組件參數,慢慢逐漸向智能化、傻瓜化、自動化的方向穩步前進。這個是一個必然的歷史趨勢。關於AMM的官方文檔介紹如下:

 

About Automatic Memory Management

 

The simplest way to manage instance memory is to allow the Oracle Database instance to automatically manage and tune it for you. To do so (on most platforms), you set only a target memory size initialization parameter (MEMORY_TARGET) and optionally a maximum memory size initialization parameter (MEMORY_MAX_TARGET). The instance then tunes to the target memory size, redistributing memory as needed between the system global area (SGA) and the instance program global area (instance PGA). Because the target memory initialization parameter is dynamic, you can change the target memory size at any time without restarting the database. The maximum memory size serves as an upper limit so that you cannot accidentally set the target memory size too high, and so that enough memory is set aside for the Oracle Database instance in case you do want to increase total instance memory in the future. Because certain SGA components either cannot easily shrink or must remain at a minimum size, the instance also prevents you from setting the target memory size too low.

 

If you create your database with Database Configuration Assistant (DBCA) and choose the basic installation option, automatic memory management is enabled. If you choose advanced installation, Database Configuration Assistant (DBCA) enables you to select automatic memory management.

 

 

 

ORACLE 11g 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。

 

 

Oracle Database 11g supports various memory management methods, which are chosen by initialization parameter settings. Oracle recommends that you enable the automatic memory management method.

 

 

  1. Automatic Memory Management – For Both the SGA and Instance PGA
  1. Automatic Shared Memory Management – For the SGA
  1. Manual Shared Memory Management – For the SGA
  1. Automatic PGA Memory Management –For the Instance PGA
  1. Manual PGA Memory Management – For the Instance PGA

 

 

 

 

 

ASMM切換到AMM

 

如下所示,當前實驗環境下自動記憶體管理已被禁用(memory_target=0)

 

SQL> select * from v$version;
 
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
 
SQL> show parameter memory_target ;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
memory_target                        big integer 0
SQL> show parameter memory_max_target;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
memory_max_target                    big integer 0
SQL> 
SQL> show parameter sga;

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、supervisor是什麼 Linux的後臺進程運行有好幾種方法,例如nohup,screen等,但是,如果是一個服務程式,要可靠地在後臺運行,我們就需要把它做成daemon,最好還能監控進程狀態,在意外結束時能自動重啟。 supervisor就是用Python開發的一套通用的進程管理程式,能將 ...
  • VirtualBox安裝CentOS後,再安裝增強功能就可以共用文件夾、粘貼板以及滑鼠無縫移動,主要步驟如下: 1、yum -y update 2、yum -y install g++ gcc gcc-c++ make kernel-* # 主要是在安裝增強工具提示沒有安裝這些軟體 3、yum -y ...
  • 獲取表結構的一些簡要信息,可以生成自己需要的字典,簡單又實用! 以數據表PP_MO為例: ...
  • 學習目標 -理解分層查詢概念 -創建樹形組織報告 -格式化分層數據 -樹形組織排除分支 分層查詢 語法 SELECT [LEVEL],<column>,exper ... FROM <table_name> [WHERE condition(s)] START WITH condition(s) C ...
  • 操作系統 : CentOS7.3.1611_x64 go語言版本:1.8.3 linux/amd64 InfluxDB版本:1.1.0 源碼路徑: github.com/influxdata/influxdb/cmd/influxd 程式入口(main.go): 在main函數中,調用Main.Ru ...
  • 1. 優先安裝軟體1. net framework3.5。2. 在安裝SQL SERVER 2012前需要3.5的支持。在WIN 2012系統可以在系統管理的添加角色和功能中安裝,如下將【.NET Framework 3.5功能】、【.NET Framework 4.5功能】下的組件全部勾選上。3.... ...
  • Sqoop是一個用來將Hadoop和關係型資料庫中的數據相互轉移的工具,可以將一個關係型資料庫(例如 : MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關係型資料庫中。Sqoop是為大數據集設計的。Sqoop支持增量更新,將新記 ...
  • SQL Server授權購買簡單介紹 之前有同事問我,使用盜版序列號的SQL Server到底有沒有性能限制,之前本人一直沒有深入研究過,後來經過一番資料搜集和查證,彙總成這篇文章 微軟的SQL Server產品分為兩種賣法 1、盒裝 1、盒裝 :Server+CAL授權方式(SQL2017取消了S ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...