1. 程式人生 > >Oracle DB 自動管理共享記憶體

Oracle DB 自動管理共享記憶體

• 啟用Oracle Enterprise Manager (EM) 記憶體引數 • 設定自動優化的記憶體引數 • 使用手動優化的SGA 引數覆蓋最小大小 • 使用SGA Advisor 設定SGA_TARGET
  • Oracle 資料庫體系結構

Oracle 資料庫體系結構 該幻燈片顯示自動管理共享記憶體 (ASMM)  所涉及的關鍵 SGA 元件和程序。 SGA 元件共享池、大型池、Java 池、流池和預設緩衝區快取記憶體參與 ASMM。監視和動態調整大小由下列兩個後臺程序進行處理:記憶體管理器 (MMAN) 和可管理性監視程式(MMON) 。 ASSM  基礎結構取決於可管理性監視程式收集的統計資訊,所以必須將STATISTICS_LEVEL 引數設定為 TYPICAL或ALL ,以使用 ASMM。
注:ASH 緩衝區、排序區池和全域性上下文池全部都包含在共享池中。
  • 動態SGA 功能
• 實施基礎結構,以使伺服器可以在不關閉例項的情況下更改其SGA 配置 • SGA 大小由SGA_MAX_SIZE進行限制: – 用於在例項啟動時保留虛擬記憶體地址空間 – 無法動態地進行更改 • 允許動態地調整某些SGA 元件的大小 SELECT bytes FROM   V$SGAINFO WHERE  name = 'Free SGA Memory Available'; 動態SGA 功能 Oracle9i Database  中引入了動態 SGA 功能。系統全域性區 (SGA)  在內部分為多個記憶體元件。 元件代表用於滿足特定類的記憶體分配請求的記憶體池。最常配置的記憶體元件包括資料庫緩衝區快取記憶體、共享池、大型池、Java 池和流池。
動態SGA 基礎結構允許在不關閉例項的情況下調整某些 SGA 元件的大小,修改初始化參數檔案,以及重新啟動例項。 此外,動態 SGA 基礎結構還允許在執行時設定整個 SGA 使用的記憶體量的限制。限制記憶體的引數為 SGA_MAX_SIZE。這是在例項啟動時分配的記憶體量,與個別元件是否會利用全部記憶體量無關。 注:在例項啟動期間,如果 SGA 元件使用的所有記憶體的總和超過 SGA_MAX_SIZE分配的數量,則將調整 SGA_MAX_SIZE的值,以滿足記憶體要求。
  • 區組
• SGA 記憶體以相鄰的記憶體塊(稱為區組)為單位進行分配。 • 區組大小取決於估計的總SGA。如果估計的SGA 大小: – 小於或等於1 GB,則區組大小為4 MB  – 大於1 GB,則區組大小為16 MB SELECT bytes FROM   V$SGAINFO
WHERE  name = 'Granule Size'; 區組 SGA 記憶體以區組為單位進行分配。每個 SGA 元件使用的區組數量記錄在動態效能檢視中。區組大小由總 SGA 大小決定。在大多數平臺上,如果總 SGA 大小小於 1 GB,則區組大小為4 MB,如果 SGA 大於1 GB,則區組大小為 16 MB 。某些平臺的相關性會增加。例如,在 32 位Windows 上,如果 SGA 大於 1 GB,則區組大小為 8 MB。 可以在 V$SGAINFO 檢視中檢視每個元件的 SGA 當前使用的區組大小。
  • 記憶體指導
• 緩衝區快取記憶體建議(在9 i R1 中引入): – V$DB_CACHE_ADVICE – 預測不同快取記憶體大小的物理讀取數 • 共享池建議(在9 i R2 中): – V$SHARED_POOL_ADVICE – 預測不同大小的共享池可以節省的分析時間 • Java 池建議(在9 i R2 中): – V$JAVA_POOL_ADVICE – 預測不同大小的Java 池可以節省的Java 類載入時間 • 流池建議(10 g R2)  – V$STREAMS_POOL_ADVICE – 預測不同大小的溢位和未溢位活動 記憶體指導 為了幫助調整最重要的 SGA 元件的大小,引入了很多指導,如下所示: • V$DB_CACHE_ADVICE 包含的行預測與每行對應的快取記憶體大小的物理讀取數。 • V$SHARED_POOL_ADVICE 顯示有關不同池大小的共享池中估計的分析時間的資訊。 • V$JAVA_POOL_ADVICE顯示有關不同池大小的 Java 池中估計的分析時間的資訊。 • V$STREAMS_POOL_ADVICE顯示有關估計的溢位或未溢位郵件數,以及用於不同流池大小的溢位或未溢位活動的關聯時間的資訊。
  • 在元件中手動新增區組
• 使用ALTER SYSTEM 命令動態地增加為元件分配的記憶體。 • 只有存在滿足請求的足夠可用區組時,才能成功地增加元件的記憶體使用量。 • 不會自動地從另一個元件釋放記憶體區組來滿足此增加請求。 • 可以減小元件大小,但是隻有元件未使用釋放的區組時才能實現此操作。 在元件中新增區組 可以通過發出 ALTER SYSTEM 命令,增加共享池或任何緩衝區快取記憶體元件的大小。新大小將舍入至與區組大小最接近的倍數。只有存在滿足請求的足夠可用區組(SGA_MAX_SIZE減去所有 SGA 元件的當前大小)時,才能成功地使用 ALTER SYSTEM命令增加元件的記憶體使用量。伺服器不會釋放另一個元件的區組來支援 SGA 元件的增加。 必須確保例項擁有足夠的可用區組來滿足元件區組使用量的增加。如果存在可用區組,則伺服器可以分配更多的區組,直到 SGA 大小達到 SGA_MAX_SIZE。 注:在調整 SGA 元件的大小時應記住,一部分 SGA 是固定的。此固定記憶體最少包含一個區組。
  • 增加SGA 元件的大小

增加SGA 元件的大小 下表顯示了記憶體分配的起點: NAME              TYPE        VALUE  ------------- ----------- ----------------------- sga_max_size      big integer 200M  db_cache_size     big integer 92M  java_pool_size    big integer 4M  large_pool_size   big integer 4M  shared_pool_size  big integer 84M  streams_pool_size big integer 8M
  • 自動管理共享記憶體:概覽
• 使用動態SGA 和記憶體指導來自動適應工作量的變化 • 最大化記憶體使用率 • 幫助避免記憶體不足錯誤 • 消除了在使用SPFILE時的重新學習過程
自動管理共享記憶體:概覽 自動管理共享記憶體 (ASMM)  是一項重要的自行管理功能。此功能可自動管理最重要的 SGA 元件,這樣您就不必手動配置這些元件了。ASMM 使用記憶體指導資料來評估最佳的記憶體配置,然後使用動態 SGA 功能調整元件的大小。通過 ASMM 可以更有效地使用可用記憶體,從而減少了由採購其它硬體記憶體資源而導致的成本,並通過更加動態、靈活且更具適應性的記憶體管理方案,顯著簡化了 Oracle  資料庫管理。 例如,在白天執行高併發性 OLTP  工作量的系統中,需要大量緩衝區快取記憶體,必須配置緩衝區快取記憶體和大型池來滿足高峰期的要求。通過 ASMM,在執行 OLTP  工作量時,將為緩衝區快取記憶體分配所需的記憶體,以優化緩衝區快取記憶體訪問。以後啟動決策支援系統(DSS)  批處理作業時,記憶體將自動遷移到大型池,以便並行查詢操作可以使用記憶體,而不會產生記憶體溢位錯誤。 注:通過 ASMM,如果使用 SPFILE ,則會在關閉時儲存元件大小。可以繼續使用上次關閉之前的大小,從而消除了重新學習過程。
  • SGA 調整大小引數:概覽
• 使用ASMM,可以自動調整五個重要SGA 元件的大小。 • 不會自動優化非預設緩衝區池。 • 日誌緩衝區不是動態元件,但是具有很合適的預設值。
SGA 調整大小引數:概覽 如幻燈片中所示,啟用 ASMM 時將自動優化五個最重要的池。這些池的引數被稱為“自動優化的引數”。 “手動動態引數”是那些可以在不必關閉例項的情況下手動調整大小的引數,但是系統不會自動優化這些引數。 “手動靜態引數”是固定大小的引數,如果不先關閉例項,則無法調整大小。
  • 自動管理共享記憶體的優點

自動管理共享記憶體的優點 自動管理共享記憶體 (ASMM)  可以簡化系統全域性區 (SGA)  的配置。在以前版本的 Oracle  數據庫中,需要手動指定要為資料庫緩衝區快取記憶體、共享池、Java 池、大型池和流池分配的記憶體量。通常很難將這些元件調整為最佳大小。大小不足可能會導致效能較差,並出現記憶體不足錯誤 (ORA-4031 ),而大小過大可能會浪費記憶體。 通過ASMM 可以指定要用於所有 SGA 元件的總記憶體量。Oracle  資料庫伺服器根據工作量的要求,定期在幻燈片中所示的元件之間重新分配記憶體。 在以前的版本中,您無法精確地控制 SGA 的總大小,因為記憶體會被分配給固定 SGA ,以及超過使用者指定 SGA 引數的總大小的其它內部元資料分配。此附加記憶體通常在 10 到20 MB 之間。 將SGA_TARGET引數設定為非零值會啟用 ASMM。SGA_TARGET初始化引數包括 SGA 中的所有記憶體,其中包括自動調整大小的元件、手動調整大小的元件以及啟動時的任何內部分配。
  • 動態SGA 傳遞模式
• ASMM IMMEDIATE 傳遞模式: – 記憶體不足(ORA-04031)  錯誤 – 可以使用部分割槽組 • ASMM DEFERRED 傳遞模式: – 在後臺透明地執行 – 可以使用部分割槽組 • MANUAL 傳遞模式: – 與ALTER SYSTEM 命令一起使用 – 調整大小必須使用全部區組 動態SGA 傳遞模式 目前,動態 SGA 元件之間存在三種區組傳遞機制: • IMMEDIATE :將在啟用 ASMM 時使用此模式,一個自動優化的元件將出現記憶體不足錯誤。為了避免出現該錯誤,系統將嘗試從另一個元件傳遞區組。如果沒有完全空的可用區組,則此傳遞可以是部分傳遞。如果是這種情況,則系統會開始耗盡來自其它元件的區組來滿足記憶體請求,並將區組部分傳遞給請求記憶體的元件。 • DEFERRED:如果確定存在更有效的記憶體分配,則系統將使用此模式在元件之間傳遞記憶體。使用與指導有關的資料來確定最佳記憶體分配。 • MANUAL:要求系統調整元件大小時使用此模式。此模式只能使用空的區組進行調整大小操作。如果沒有空的區組,則增大請求將返回 ORA-4033 錯誤,收縮請求將返回ORA-4034 錯誤。
  • 記憶體中介體系結構

記憶體中介體系結構 啟用ASMM 時,記憶體中介定期執行此幻燈片中的活動。這些操作處於 DEFERRED 模式。 通過將記憶體分配到最需要的地方來實現為自動優化的元件自動調整大小,以適應工作量的變化這個目標。如果總的來說這樣做有好處,則會完成傳遞。 在此後臺操作期間,MMON 在迴圈緩衝區中定期捕獲統計資訊和記憶體指導資料。不同緩衝區條目之間的增量代表不同時段的統計資訊。這些增量由 MMON 計算。MMON 使用記憶體中介策略分析增量並檢查長期趨勢和短期趨勢。MMON 通過在調整大小請求系統佇列中釋出請求,可以根據此分析生成調整大小決策。MMAN 定期掃描請求系統佇列,以執行相應的記憶體傳遞。
  • 手動調整動態SGA 引數的大小
• 對於自動優化的引數: – 如果新值大於當前大小,則手動調整大小將立即調整元件的大小 – 如果新值小於當前大小,則手動調整大小將更改最小大小 • 調整手動優化的引數的大小會影響SGA 的可優化部分 手動調整動態 SGA 引數的大小 調整自動優化的引數的大小並設定了 SGA_TARGET後,只有新值大於元件的當前大小時,調整大小才會立即更改元件的大小。例如,如果將 SGA_TARGET設定為8 GB,並將SHARED_POOL_SIZE 設定為 2 GB,則應確保共享池始終至少為 2 GB,以適應必要的內存分配。此後,如果將 SHARED_POOL_SIZE 的值調整為 1 GB,則不會立即影響共享池的大小。這樣做只會允許自動記憶體優化演算法在必要時將共享池大小減少到 1 GB。但是,如果最初將共享池的大小設定為 1 GB,則將 SHARED_POOL_SIZE 的值調整為 2 GB 會使共享池元件的大小增加到 2 GB。此調整大小操作使用的記憶體從一個或多個自動優化的元件中獲取,手動元件的大小不受影響。 也可以動態更改手動調整大小的元件的引數,但是區別在於引數的值會立即指定該元件的精確大小。因此,如果手動元件的大小增加,則會從一個或多個自動調整大小的元件獲取額外的記憶體。如果手動元件的大小減小,則會將釋放的記憶體分配給自動調整大小的元件。
  • 自動優化的SGA 引數的行為
• 未設定SGA_TARGET或將其設定為零時: – 明確設定了自動優化的引數 – 注:SHARED_POOL_SIZE包含內部啟動開銷與以前的版本相比,值可能需要增加 • 設定了SGA_TARGET時: – 自動優化的引數的預設值為零 – 非零值為下限 – 當前值(MB)  顯示為: SELECT component, current_size/1024/1024 FROM   V$SGA_DYNAMIC_COMPONENTS; 自動優化的 SGA 引數的行為 未設定 SGA_TARGET或將其設定為零時,必須明確設定自動優化的 SGA 引數。 SHARED_POOL_SIZE 是一個例外。在以前版本的 Oracle  資料庫中,SHARED_POOL_SIZE 引數不包含元資料(程序、會話等的資料結構)的內部開銷分配,但是現在包含這些內部開銷分配。 注:升級問題:要在升級到 Oracle Database 10 g 時獲得同樣有效的共享池大小,請增加SHARED_POOL_SIZE 的值,以包含內部分配。例如,如果在以前的版本中使用的SHARED_POOL_SIZE 值為 256 MB,並且內部分配的值為 32 MB ,則需要將 Oracle Database 10 g 的SHARED_POOL_SIZE 設定為288 MB。使用以下查詢可以找到內部啟動開銷的準確值: select * from V$SGAINFO where name like 'Startup%'; 將SGA_TARGET設定為非零值時,自動優化的 SGA 引數的預設值為零。ASMM 演算法將自動調整這些元件的大小。但是,如果將它們設定為非零值,則指定的值將作為下限使用。例如,如果將 SGA_TARGET設定為8 GB,並將 SHARED_POOL_SIZE 設定為1 GB,則共享池不會收縮到小於 1 GB 的值,但是可能增加到更大的值。可以使用查詢來確定 SGA 中自動優化的元件的實際大小。
  • 手動優化的SGA 引數的行為
• 手動優化的元件包括: – KEEP 和RECYCLE緩衝區快取記憶體 – 非預設塊大小快取記憶體 – LOG_BUFFER • 手動優化的元件由使用者指定。 • 手動優化的元件包含在SGA_TARGET中,可以精確地控制SGA 大小。 手動優化的 SGA 引數的行為 手動SGA 大小引數包括: • DB_KEEP_CACHE_SIZE  • DB_RECYCLE_CACHE_SIZE  • DB_nK_CACHE_SIZE(n = 2 , 4, 8, 16, 32)  • LOG_BUFFER 手動SGA 引數由使用者指定,指定的大小精確地控制相應元件的大小。

相關推薦

Oracle DB 自動管理共享記憶體

• 啟用Oracle Enterprise Manager (EM) 記憶體引數 • 設定自動優化的記憶體引數 • 使用手動優化的SGA 引數覆蓋最小大小 • 使用SGA Advisor 設定SGA_TARGET Oracle 資料庫體系結構 Oracl

OracleDBA_自動管理共享記憶體

設定記憶體引數,要求如下: 1)資料庫執行模式設定為“限制會話模式”                       alter system enable restricted

Oracle 自動共享記憶體管理(ASMM)與自動記憶體管理(AMM)

相關引數: MEMORY_MAX_TARGET:不可動態調整,代表記憶體(SGA+PGA)的最大值。 SQL>ALTER SYSTEM SET MEMORY_MAX_TARGET = 1000M SCOPE=SPFILE MEMORY_TARGET可被動

oracle 10g:自動共享記憶體管理

是不是很難準確地分配不同的池所需的記憶體數?自動共享記憶體管理特性使得自動將記憶體分配到最需要的地方去成為可能。   無論您是一個剛入門的 DBA 還是一個經驗豐富的 DBA,您肯定至少看到過一次類似以下的錯誤: ORA-04031:unable to allocate 2216 bytes of

Oracle DB 使用DDL語句建立和管理

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

OpenCV 2.4.9 學習筆記(2)—— OpenCV記憶體自動管理

  1、OpenCV函式中輸出影象的記憶體分配是自動完成的(如果不特別指定的話)。   2、使用OpenCV的C++介面時不需要考慮記憶體釋放問題。   3、賦值運算子和拷貝建構函式( ctor )只拷貝資訊頭。 上述部分內容參考了OpenCV的中文教程。(http://www.opencv

python的記憶體管理--自動管理

# -*- coding:utf-8 -*-1. python中自動管理記憶體的    自動管理記憶體程式語言,例如:object-c  python   手動管理記憶體程式語言   例如: c  2. python中的記憶體管理採用的  ‘引用計數’的方式,如果一個物件的

Linux的虛擬儲存及動態記憶體管理共享記憶體

實體記憶體與虛擬記憶體 雖然應用程式操作的物件是對映到實體記憶體之上的虛擬記憶體,但是處理器直接操作的卻是實體記憶體。所以當用程式訪問一個虛擬地址時,首先必須將虛擬地址轉化成實體地址,然後處理器才能解析地址訪問請求。地址的轉換工作需要通過查詢頁表才能完成,概括地將,地址轉換

Linux釋放記憶體及手動釋放Oracle共享記憶體

free -m #echo 3 > /proc/sys/vm/drop_caches#cat /proc/sys/vm/drop_caches3 free -m 手動刪除Oracle共享記憶

Oracle DB 使用排程程式自動執行任務

• 使用排程程式來簡化管理任務 • 建立作業、程式和排程 • 監視作業執行 • 使用基於時間或基於事件的排程來執行排程程式作業 • 描述視窗、視窗組、作業類和使用者組的用途 • 使用電子郵件通知 • 使用作業鏈來執行一系列相關任務 • 描述遠端系統上的排程程式作業 • 使用

Oracle資料庫共享記憶體分配不足問題的解決

 Oracle資料庫中,共享記憶體分配不足時,因為沒有有效的利用保留區,就會造成無法分配合適的共享區的問題。一個ORACLE例程的系統全域性區域(SGA)包含幾個記憶體區域(包括緩衝快取記憶體、共享池、Java池、大型池和重做日誌緩衝)SGA=db_cache+shar

共享記憶體和Atomics 1、記憶體管理速成課程

作者:Lin Clark 譯者:Cody Chan ------------- 這是圖解 SharedArrayBuffer

oracle em企業管理器的安裝、配置及相關問題

密碼 技術分享 分享 control spa alt .com 企業管理 gre 2017-05-10 一、配置ORACLE_UNQNAME環境變量 二、重建EM資料庫:emca -repos recreate 三、配置EM賬號密碼:DBSNMP、SYSMAN 四、配置EM

Oracle DB , 計算各個用戶/schema 的磁盤占用空間

def term ner href pen database col table scott http://www.dba-oracle.com/t_find_size_schema.htm Question: How do I find the size of a s

Oracle GoldenGate從oracle db 到非oracle db的初始化數據同步的方法

class article content info 靜態 oracl etl 進程 rep 非oracle db以 sqlserver為樣例說明: 我的思路 A :oracle db 生產 B: oracle db 中間機 C: sqlserver db 目的端

關於oracle db 11gR2版本號上的_external_scn_rejection_threshold_hours參數和scn headroom補丁問題

install eal 2.0 bsp 11gr2 con his star html 關於oracle db 11gR2版本號上的_external_scn_rejection_threshold_hours參數和scn headroom補丁問題 來自於: Inst

Oracle每天自動備份腳本

oracle expdp 因為需要最近寫了一個適用於Oracle上的備份腳本,Oracle的數據備份不像MySQL一樣直接使用二進制工具就可以備份,在Oracle上進行數據備份需要 做好相應的配置,在配置好後才能進行正常的數據備份腳本,所以在Oracle備份數據前需要做一些配置。 首先,因為

Oracle DB 使用子查詢來解決查詢

目的 滿足 多少 group 錯誤 water 列表 功能 產生 ? 定義子查詢 ? 描述子查詢可以解決的問題類型 ? 列出子查詢的類型 ? 編寫單行和多行子查詢 ? 子查詢:類型、語法和準則 ? 單行子查詢: – 子查詢中的組函數 – 帶有子查詢的HAVING子句

內存自動管理

java 常量池 引用計數 運行時 自動 world col mar 方法區 內存自動管理 20 內存模型 20 Jvm垃圾收集算法 22 標記-清除 22 標記-整理 22 復制算法 22 分代思想 23

Oracle表的管理

整數 create ble cte lte column 修改字段 date 字符型 數據類型: 字符型char 定長的,最大2000字符varchar 變長的,最大4000字符clob(character large object)字符型大對象,最大4G數字類型 numb