ORACLE 記憶體管理 之四 SGA
SGA的各種引數
SQL> show parameter xxxx
db_block_size integer 8192
sga_max_size big integer 420551900
java_pool_size big integer 25165824
large_pool_size big integer 50331648
shared_pool_reserved_size big integer 4194304
shared_pool_size big integer 83886080
db_cache_size big integer 243269632
log_buffer integer 524288
workarea_size_policy string AUTO
SQL> show sga
Total System Global Area 420551900 bytes
Fixed Size 453852 bytes
Variable Size 176160768 bytes
Database Buffers 243269632 bytes
Redo Buffers 667648 bytes
SQL> select * from v$sga;
NAME VALUE
---------------------------------------- ----------
Fixed Size 453852
Variable Size 176160768
Database Buffers 243269632
Redo Buffers 667648
- 基本組成
Fixed Size 一般不大,而且我們無法控制,是SGA內部用來控制其它內部資訊的,比如控制其他SGA元件。比如它應該和java_pool_size + large_pool_size + shared_pool_size的大小有關係,而且還會和其他引數有關.
Redo Buffer 存放那些需要寫到online redo logs的東西.因為MEM TO MEM要比MEM TO DISK快很多, ORACLE這麼設定就是為了提高速度,所以資料不會在這裡存放很長時間就會被LGWR 寫到REDO LOG(three seconds,commit,one third full,1M).一般設定成128*cpu
Database Buffers (BUFFER CACHE)自8以後就分成三個部分.
Default Pool
Keep Pool :
Recycle Pool
這三個部分的管理方法與淘汰方法都一樣,只是為了將’熱的’(Default),’普通的’(Keep),’不需要關心是否要保持在CACHE中’(Recycle)這三部分隔離開來, Recycle Pool 不需要很大,以便來去都快.這種設計增加了DBA的工作強度,實際上很多時候不需要考慮這麼細分buffer cache,儘量透過其他途徑比如修改SQL來調整效能.
Database Buffers 裡面有兩種資料,1,dirty ,會被DBWn寫入到資料檔案中,
2,非dirty,用來讀.
8.0以前用LRU淘汰法,現在用’touch count’的演算法,這個演算法更符合實際.具體資訊可以在x$bh裡得到.
1 select tch||' '|| owner||' '|| object_name||' '|| object_type
2 from dba_objects,
3 (select *
4 from ( select tch, obj
5 from x$bh
6 order by tch desc
7 )
8 where rownum <= 5
9 ) hottest_blocks
10 where dba_objects.data_object_id = hottest_blocks.obj
11* order by tch desc
SQL> /
TCH||''||OWNER||''||OBJECT_NAME||''||OBJECT_TYPE
--------------------------------------------------------------------------------
417 SBPOPT DE_RECEIVELOG TABLE
412 SBPOPT DE_RECEIVELOG TABLE
192 SBPOPT TI_REPAIR_DEED TABLE PARTITION
165 SYS C_USER# CLUSTER
165 SYS TSQ$ TABLE
165 SYS USER$ TABLE
X$BH裡就是在BUFFER CACHE裡的塊的資訊,TCH就是’touch count’,隨著頻繁的使用,TCH也會增加的.
或
select tch, file#, dbablk
from x$bh
where (dbablk,file#) in
(select dbms_rowid.rowid_block_number(rowid),
dbms_rowid.rowid_to_absolute_fno(rowid,'SYS','YOUR TABLE NAME')
from dual)
and state = 1
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/633084/viewspace-888423/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE 記憶體管理 之六 SGA Multiple Block Sizes,Large PoolOracle記憶體BloC
- SGA和PGA記憶體管理記憶體
- Oracle體系結構之記憶體結構(SGA、PGA)Oracle記憶體
- 記憶體_SGA記憶體
- Oracle記憶體結構研究-SGA篇Oracle記憶體
- 自動SGA共享記憶體管理,ASMM,MMAN,sga_target,sga_max_size記憶體ASM
- SGA與共享記憶體記憶體
- Oracle 記憶體管理Oracle記憶體
- oracle12c之 控制pdb中sga 與 pga 記憶體使用Oracle記憶體
- ORACLE記憶體管理 之五 SGA variable pool,shared_pool,large_pool,java_poolOracle記憶體Java
- Oracle Exadata與SGA快取記憶體CQOracle快取記憶體
- oracle例項記憶體(SGA和PGA)調整Oracle記憶體
- oracle資料庫記憶體分配(sga和pga)Oracle資料庫記憶體
- oracle記憶體結構:SGA的區域資訊Oracle記憶體
- 【SGA】【PGA】普適的Oracle記憶體分配策略Oracle記憶體
- 記憶體管理兩部曲之實體記憶體管理記憶體
- SGA與共享記憶體2記憶體
- 【記憶體管理】Oracle AMM自動記憶體管理詳解記憶體Oracle
- Oracle記憶體結構(一)----SGA的區域資訊Oracle記憶體
- 記憶體管理兩部曲之虛擬記憶體管理記憶體
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- JavaScript之記憶體洩漏【四】JavaScript記憶體
- Oracle記憶體結構(一)----SGA的區域資訊(轉)Oracle記憶體
- Oracle 記憶體管理方式Oracle記憶體
- 記憶體管理 記憶體管理概述記憶體
- Android 之 記憶體管理Android記憶體
- 記憶體管理之五 (轉)記憶體
- 2 Day DBA-管理Oracle例項-管理記憶體-修改記憶體設定-自動記憶體管理Oracle記憶體
- 2 Day DBA-管理Oracle例項-管理記憶體-關於記憶體管理Oracle記憶體
- ORACLE記憶體管理 之一 ORACLE PGAOracle記憶體
- 將SGA全部PIN到記憶體中記憶體
- SGA與共享記憶體的關係記憶體
- Oracle 之 配置HugePages記憶體Oracle記憶體
- oracle的自動記憶體管理Oracle記憶體
- oracle記憶體結構與管理Oracle記憶體
- 自動共享記憶體管理 自動記憶體管理 手工記憶體管理記憶體
- 實體記憶體充足卻無法增加SGA記憶體
- oracle,db2,mysql類比之五記憶體管理OracleDB2MySql記憶體