Oracle 10g SGA 的自動化管理
--==============================
--Oracle 10g SGA 的自動化管理
--==============================
/*
在SGA中每一個單獨的元件究竟需要多少記憶體呢?在Oracle 10g 中可以自動化管理大多數SGA引數。
一、什麼是SGA
簡言之,系統全域性區(SGA)僅僅是在Oracle例項啟動時的共享記憶體結構,提供了例項和控制它行為的一些資訊。下面
的表中給出了關於SGA一些特定元件的概要,控制記憶體大小分配的可變引數,以及這些特定的元件將影響Oracle server
哪些範圍,並給出了一個簡短的描述。從這個簡短的列表中我們可以發現,在沒有徹底地理解我們的應用程式後臺的工
作狀況下,以我們能力去推斷並給這些元件中每一個設定記憶體的大小並不總是最優的選擇,因為有大量的選項可供選擇。
我們並不希望發生浪費可用記憶體的情況。
二、SGA元件
--元件列表使用原使文件,未翻譯
SGA COMPONENT |
SIZE CONTROLED BY |
AREAS OF INFLUENCE |
SIMPLE DESCRIPTONS |
Shared Pool |
SHARED_POOL_SIZE |
Library Cache · Shared SQL areas · Private SQL areas · PL/SQL procedures and packages · Various control structures |
Oracle needs to allocate & deallocate memory as SQL or procedural code is executed based on the individual needs of users' sessions and in accordance to the LRU algorithm. |
Dictionary Cache · Row cache · Library cache |
Highly accessed memory structures that provide information on object structures to SQL statements being parsed. |
||
Java Pool |
JAVA_POOL_SIZE |
· Run state · Methods · Classes · Session code · Data in JVM |
Memory available for the Java memory manager to use for all things Java. |
Streams Pool |
STREAMS_POOL_SIZE |
· Stream activity |
New to Oracle 10g, memory available for stream processing. |
Redo Log Buffer |
LOG_BUFFER |
· Redo entries |
Holds changes made to data and allows for the reconstruction of data in the case of failure. |
Database Buffer Cache |
DB_2K_CACHE_SIZE DB_4K_CACHE_SIZE DB_8K_CACHE_SIZE DB_16K_CACHE_SIZE DB_32K_CACHE_SIZE DB_KEEP_CACHE_SIZE DB_RECYCLE_CACHE_SIZE |
· Write list · LRU list |
Holds copies of data requested by SQL and reduces requests to disk by having data in memory. You may have many different buffer caches that help segregate on usage patterns. |
Large Pool |
LARGE_POOL_SIZE |
· Shared server · Oracle XA · I/O server processes · Backup & restore |
For large memory allocations. |
你可以透過初始化引數檢視並控制SGA的大小 。下面是一個查詢並提供了輸出結果。 */
select name, value
from v$parameter
where name in ('shared_pool_size', 'java_pool_size', 'streams_pool_size',
'log_buffer', 'db_cache_size', 'db_2k_cache_size', 'db_4k_cache_size',
'db_8k_cache_size', 'db_16k_cache_size', 'db_32k_cache_size',
'db_keep_cache_size', 'db_recycle_cache_size', 'large_pool_size');
NAME VALUE
------------------------- ---------
shared_pool_size 83886080
large_pool_size 8388608
java_pool_size 50331648
streams_pool_size 54525952
db_cache_size 25165824
db_2k_cache_size 0
db_4k_cache_size 0
db_8k_cache_size 0
db_16k_cache_size 0
db_32k_cache_size 0
db_keep_cache_size 0
db_recycle_cache_size 0
log_buffer 262144
13 rows selected.
/*
三、使用Oracle自動化SGA的管理
使用Oracle 自動共享記憶體最佳化,透過設定一個新的SGA_TARGET 引數,即僅僅是告訴Oralce例項SGA目標大小是多少,
Oracle將自動管理一系列SGA的元件。Oracle在你所選的元件中將集中管理,動態分配你設定的SGA_TARGET值。即不再
需要人為的為SHARED_POOL_SIZE, JAVA_POOL_SIZE, LARGE_POOL_SIZE, 或DB_CACHE_SIZE 設定值,Oracle將會自動對
其分配合適的大小。一旦你為SGA_TARGET設定了你所需要的值,上述的這些值將呈現為,並且新的引數將被建立並指派
為 __SHARED_POOL_SIZE, __JAVA_POOL_SIZE, LARGE_POOL_SIZE, and __DB_CACHE_SIZE.在這些區域,Oracle將根據系
統和記憶體所需的工作負荷,基於內部統計資訊來分配更多的記憶體。Oracle將不再管理DB_KEEP_CACHE_SIZE,
DB_RECYCLE_CACHE_SIZE, DBnK_CACHE_SIZE, 或the STREAMS_POOL_SIZE ,但是你依然可以決定這些引數的值。這些
設定僅僅能透過使用SPFILE,Oracle將動態的使得這些行為再次產生。注意,SGA_TARGET值的大小是所有組成SGA元件的
大小之和。當指定一個SGA_TARGET值時,不僅僅是引數控制,應該考慮所有的這些元件將不再被控制。
四、設定Oracle SGA 自動控制功能
1.檢視你的系統是否已經使用了SGA自動控制 */
SQL> show parameter sga_target
NAME TYPE VALUE
------------------------------------ ----------- --------
sga_target big integer 0
/*
2.修改SGA自動控制的大小*/
SQL> alter system set sga_target=216m;
System altered.
/*
3.完成切換
當切換到自動共享記憶體最佳化後,一個有趣的事情是你的SPFILE 將發生變化,並且有下列引數被定義,不論你的例項名
是什麼,注意k101是我的例項名。*/
k101.__db_cache_size=25165824
k101.__java_pool_size=50331648
k101.__large_pool_size=8388608
k101.__shared_pool_size=83886080
/*
除此之外,你可以使用前面使用過的SQL語句去檢視SGA的這些設定,現在他們有一個零值。*/
select name, value
from v$parameter
where name in ('shared_pool_size', 'java_pool_size', 'streams_pool_size',
'log_buffer', 'db_cache_size', 'db_2k_cache_size', 'db_4k_cache_size',
'db_8k_cache_size', 'db_16k_cache_size', 'db_32k_cache_size',
'db_keep_cache_size', 'db_recycle_cache_size', 'large_pool_size');
NAME VALUE
------------------------- ---------
shared_pool_size 0
large_pool_size 0
java_pool_size 0
streams_pool_size 0
db_cache_size 0
db_2k_cache_size 0
db_4k_cache_size 0
db_8k_cache_size 0
db_16k_cache_size 0
db_32k_cache_size 0
db_keep_cache_size 0
db_recycle_cache_size 0
log_buffer 262144
13 rows selected.
--當設定了SGA_TARGET 後,可以修改查詢語句使用新建立的帶有下劃線的引數變數作為查詢條件。
select name, value
from v$parameter
where name in ('__shared_pool_size', '__java_pool_size',
'streams_pool_size', 'log_buffer', '__db_cache_size', 'db_2k_cache_size',
'db_4k_cache_size', 'db_8k_cache_size', 'db_16k_cache_size',
'db_32k_cache_size', 'db_keep_cache_size', 'db_recycle_cache_size',
'__large_pool_size');
NAME VALUE
------------------------- ---------
__shared_pool_size 67108864
__large_pool_size 4194304
__java_pool_size 8388608
streams_pool_size 0
__db_cache_size 142606336
db_2k_cache_size 0
db_4k_cache_size 0
db_8k_cache_size 0
db_16k_cache_size 0
db_32k_cache_size 0
db_keep_cache_size 0
db_recycle_cache_size 0
log_buffer 262144
/*
切換到自動共享記憶體最佳化非常容易,僅僅是設定一個初始化引數。基於負載的情況下,這個管理方式該是確定的,儘管有不同的建議
這些數量應當被如何分配。我更樂於使用他們作為一個單獨的元件。沒有理由不去規避風險來使用自動共享記憶體最佳化。當然,我會先
在測試的環境中來使用它。我也建議在使用自動共享記憶體最佳化之前,做一個初始化引數快照然後比較使用動共享記憶體最佳化。這樣也很
容易切換回去,僅僅是重新設定SGA_TARGET,然後再單獨設定各個元件到原來的值即可。 */
五、原文出處:
September 2, 2004
Automate the Sizing of your SGA in Oracle 10g
By James Koopmann
*/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17172228/viewspace-1061201/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 開啟oracle 10g的sga自動管理-ammOracle 10g
- oracle 10g sga自動管理amm(補充二)Oracle 10g
- 淺談10G SGA自動管理
- 變更oracle 11.2.0.3 rac sga自動管理為sga手工管理Oracle
- 變更oracle 11.2.0.3 rac sga手工管理為sga及pga全自動管理Oracle
- oracle10g sga自動管理amm(補充一)Oracle
- assm:Oracle 10g的自動段空間管理SSMOracle 10g
- Oracle 10g的自動段空間管理(ASSM)Oracle 10gSSM
- oracle 10g 自動共享記憶體管理Oracle 10g記憶體
- 自動SGA共享記憶體管理,ASMM,MMAN,sga_target,sga_max_size記憶體ASM
- Oracle 10g SGA 相關的VIEWOracle 10gView
- 教你如何成為Oracle 10g OCP - 第十五章 自動化管理Oracle 10g
- oracle SGA配置和管理Oracle
- oracle 10g中的SGA_MAX_SIZE與SGA_TARGET引數Oracle 10g
- oracle 10g更改sga最大值Oracle 10g
- oracle 10g的自動統計分析Oracle 10g
- 【刪除】教你如何成為Oracle 10g OCP - 第十五章 自動化管理Oracle 10g
- 開啟oracle記憶體自動化管理Oracle記憶體
- Oracle 記憶體自動管理--關閉自動管理Oracle記憶體
- solaris 10下的oracle 10g 自動啟動指令碼Oracle 10g指令碼
- Debian配置Oracle 10g自啟動Oracle 10g
- oracle的自動記憶體管理Oracle記憶體
- Oracle10g的UNDO_RETENTION自動化管理增強Oracle
- 10G新特性筆記之自動管理筆記
- 網路管理自動化
- ORACLE 記憶體管理 之四 SGAOracle記憶體
- oracle 10g sga手動管理mmm 基於並行查詢parallel query如何配置large_pool_size大池Oracle 10g並行Parallel
- 開機自動啟動Oracle 10g on centos5.6Oracle 10gCentOS
- oracle 10g rac資料庫不能自動啟動Oracle 10g資料庫
- 10g、11g記憶體自動管理記憶體
- 自動化管理框架下的內容框架
- ORACLE10g的新特性-簡化你的工作:自動化儲存管理 (轉)Oracle
- Oracle9i的動態SGA特性(2)Oracle
- ordebug 手動修改Oracle sga scnOracle
- 利用 Oracle EM 企業管理器 進行oracle SQL的優化(自動生成索引)OracleSQL優化索引
- oracle自動儲存管理(ASM)的優點OracleASM
- Oracle9i中的PGA自動管理Oracle
- 10g中的sga_target引數