您好,登錄后才能下訂單哦!
怎么進行oracle SGA的參數設置,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
SGA(system global area 系統全局區):用來存放操作的數據(Buffer Cache Size)、
庫緩存(library cache)、數據字典(data dictionary cache)等控制信息的內存區域
SGA中的內存大多數是共享的。
SGA中至少存在以下三個組件:
■ The database buffer cache
■ The log buffer
■ The shared pool
以下是可選的組件:
■ A large pool
■ A Java pool
■ A Streams pool
The Shared Pool(共享池):
共享池是SGA中最復雜的組件,可以劃分為幾十個子結構。
其中一下幾個組件比較重要
■ The library cache
■ The data dictionary cache
■ The PL/SQL area
■ The SQL query and PL/SQL function result caches
oracle 提供了多個初始化參數,來設置SGA中各個部分的內存大小
SQL> show parameter shared_pool_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
shared_pool_size big integer 244M
控制共享池的大小,實例運行期間可以動態調整
SQL> show parameter java_pool_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
java_pool_size big integer 52M
控制JAVA池的大小,實例運行期間可以動態調整
SQL> show parameter large_pool_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
large_pool_size big integer 60M
控制大池的大小,實例運行期間可以動態調整
SQL> show parameter streams_pool_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
streams_pool_size big integer 0
控制流池的大小,實例運行期間可以動態調整
SQL> show parameter db_cache_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_cache_size big integer 160M
控制數據緩沖區的大小,實例運行期間可以動態調整
SQL> show parameter log_buffer;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_buffer integer 5603328
控制日志緩沖區的大小,該參數在運行期間是不能修改的。
SQL> show parameter sga_target;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_target big integer 0
與SGA的自動管理相關,如果值是零,需要DBA手動管理SGA
SQL> show parameter sga_max_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_max_size big integer 524M
SGA可以使用的最大內存,sga_target的值不能超過sga_max_size,在為SGA中個部分組成
分配內存時,SGA的總內存不能超過sga_max_size設置的值,否則會報錯。sga_max_size
在實例運行期間不能夠動態調整,必須先修改初始化參數文件,然后重啟實例。
sga_max_size參數僅在實例運行期間有效,如果實例啟動時發現SGA各部分組成的參數值
總和大于sga_max_size,實例會忽略當前設置的sga_max_size值,并修改sga_max_size為
當前SGA的最大值。
SQL> show parameter statistics_level;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
statistics_level string TYPICAL
該值與SGA內存的自動管理相關,值為typical或者all的時候oracle會根據會更加收集到的
相關統計信息作為參照,確定如何分配SGA中的各部分內存。
oracle SGA中的各部分內存都是以粒度進行分配與回收。粒度的大小不能由DBA設定,取決
與SGA的大小,系統平臺的類型。
在大多數平臺下SGA<1G 粒度是4MB,SGA>1G 粒度是16MB。
在win32平臺下,SGA>1G,粒度是8MB。
設置oracleSGA中各部分的值時,需要時oracle 粒度的整倍數,否則oracle會自動進行調整
SQL> select component,granule_size
2 from v$sga_dynamic_components;
COMPONENT GRANULE_SIZE
---------------------------------------------------------------- ------------
shared pool 4194304
large pool 4194304
java pool 4194304
streams pool 4194304
DEFAULT buffer cache 4194304
KEEP buffer cache 4194304
RECYCLE buffer cache 4194304
DEFAULT 2K buffer cache 4194304
DEFAULT 4K buffer cache 4194304
DEFAULT 8K buffer cache 4194304
DEFAULT 16K buffer cache 4194304
DEFAULT 32K buffer cache 4194304
Shared IO Pool 4194304
ASM Buffer Cache 4194304
14 rows selected
oracle SGA中各部分組成粒度值的查看。
SQL> select name,bytes from v$sgainfo;
NAME BYTES
-------------------------------- ----------
Fixed SGA Size 1375820 存儲數據庫與實例的狀態信息
Redo Buffers 5795840
Buffer Cache Size 167772160
Shared Pool Size 255852544
data dictionary cache 62914560
Java Pool Size 54525952
Streams Pool Size 0
Shared IO Pool Size 0
Granule Size 4194304
Maximum SGA Size 548237312
Startup overhead in Shared Pool 58720256
Free SGA Memory Available 0
SGA中各部分內存分配情況查看。
SQL> select * from v$sga;
NAME VALUE
-------------------- ----------
Fixed Size 1375820
Variable Size 373293492 包括共享池,大池,java池,流池幾個組成部分。
Database Buffers 167772160 數據緩沖區(Buffer Cache Size)
Redo Buffers 5795840
SGA中各部分內存分配情況查看。
SGA中各個部分所使用的內存只能供自己使用,相互之間無法共享。如果Java Pool分配了
1G的內存,但是當前數據庫并沒有運用流特性,分配給流池的空間也不能被SGA中的其他
組件使用。所以使用alter system set 設置SGA中各部分組成的內存的時候,需要謹慎
設置以免導致系統內存的浪費,性能損耗。
SQL> show parameter shared_pool_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
shared_pool_size big integer 244M
SQL> alter system set shared_pool_size=230m;
System altered
SQL> show parameter shared_pool_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
shared_pool_size big integer 232M
oracle自動根據粒度調整為粒度(此處是4MB)進行調整。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。