Oracle11gR2 Smart Flash Cache測試說明

巡完南山巡南山發表於2019-01-22

1. Flash Cache 功能介紹

在oracle11gR2中,Oracle提供了設定FLASH CACHE的功能,該特性允許使用SSD硬碟作為Buffer Cache的二級快取,以在磁碟和記憶體之間增加一級緩衝,提升資料訪問效能。這個功能其實是EXADATA引入,這也是EXADATA提高IO效能的又一利器。不過即使不是EXADATA,在11.2中也可以設定該功能,前提要求作業系統必須是oracle enterprise linux(簡稱OEL)或者solaris,也就是說只支援Oracle公司自己的作業系統。

Flash Cache 的功能只會提高磁碟讀的效能,因為Dirty blocks還是會直接寫到磁碟而不會在SSD中,透過下面的圖可以很好的理解它的工作原理

1.   首先當有讀的請求發生時,磁碟資料會被讀到buffer

2.   有寫的工作完成時,會將Dirty blocks直接寫入磁碟

3.   將SGA中透過LRU移出的資料寫到flash cache中,下次有讀的請求時會透過flash cache寫入記憶體

2. Oracle 版本及補丁

oracle 的smart flash cache功能 在OEL平臺上對DB軟體打了快閃記憶體補丁後可以使用(solaris上不需要打),具體說明如下:

OS

Oracle

補丁

是否正常

備註

OEL6.4

11.2.0.1

p8974084


11.2.0.3

p12949806


11.2.0.4


OEL7

11.2.0.1

p8974084

ORA-00439: feature not enabled: Server Flash Cache

內部bug,暫無補丁

11.2.0.3

p12949806

ORA-00439: feature not enabled: Server Flash Cache

內部bug,暫無補丁

11.2.0.4

ORA-00439: feature not enabled: Server Flash Cache

內部bug,暫無補丁

 

3. 修改 Flash Cache 引數

  開啟Flash Cache功能需要修改兩個引數(db_flash_cache_file和db_flash_cache_size),而且需要重啟生效;支援的方式分為三種,包括檔案系統、裸裝置、ASM。

 

SQL> show parameter flash_cache

NAME                   TYPE          VALUE
------------------- -----------  --------------------
db_flash_cache_file    string
db_flash_cache_size    big integer    0

db_flash_cache_file的大小一般推薦2-10倍的buffer cache(不能小於2倍),如果使用ASMM, 2-10倍的SGA_TARGET,這樣才能達到效果;若將db_flash_cache_size設為0 可以disable flash cache,再設回來可以enable. 但不允許動態修改db_flash_cache_size的值;對於RAC的環境, 需要在每個instance上面都設定以上兩個引數,並且不能使用同一個file。

修改方法

1. 檔案系統

SQL> alter system set db_flash_cache_file='/testfs/cache.dbf' scope=spfile;

SQL> alter system set db_flash_cache_size=8192M scope=spfile;

2. 裸裝置

SQL> alter system set db_flash_cache_file='/dev/raw/raw1' scope=spfile;

SQL> alter system set db_flash_cache_size=8192M scope=spfile;

3.ASM

SQL> alter system set db_flash_cache_file='+ASM/DB/cache.dbf ' scope=spfile;

SQL> alter system set db_flash_cache_size=8192M scope=spfile;

4. 檢視 flash cache 使用情況

透過以下SQL判斷flash cache是否在用

SELECT SUM (CASE WHEN b.status LIKE 'flash%' THEN 1 END) flash_blocks, SUM (CASE WHEN b.status LIKE 'flash%' THEN 0 else 1 END) cache_blocks,count(*) total_blocks FROM v$bh b;

select name,value from v$sysstat where name in ('physical read flash cache hits','physical reads','consistent gets','db block gets','flash cache insert');

5. 結論

  Oracle smart flash cache 功能雖然能很大的提高效率,但目前flash cache功能的成熟度不夠理想,目前在配置時遇到很多bug(本文只列出一部分),後期使用是否還有bug還是未知,但是SSD硬碟確實對磁碟的I/O有很大效能的提高。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26964624/viewspace-2564393/,如需轉載,請註明出處,否則將追究法律責任。

相關文章