Oracle Exadata 从 11.2.2.4.0开始引入了 Smart Flash Logging的新特性,在exadata环境中,当oracle 需要写入日志的时候将会启动parallel write 同时在 disk 和 flash两端写入数据,controller中有任意一个率先写完就会通知RDBMS数据库继续工作, 该特性着力于提高Exadata对Redo写入的响应时间和吞吐量。(The feature allows redo writes to be written to both flash cache and disk controller cache, with an acknowledgement sent to the RDBMS as soon as either of these writes complete; this improves response times and thoughput.) 而对于ESFL是否可以减少log file sync (LFS) 本人持否定态度

Requirements:
Version 11.2.2.4 at the cell level
Version 11.2.0.3 at the DB level (when it comes out) or 11.2.0.2 BP11

[root@dm01cel01 ~]# imageinfo 

Kernel version: 2.6.18-274.18.1.0.1.el5 #1 SMP Thu Feb 9 19:07:16 EST 2012 x86_64
Cell version: OSS_11.2.3.1.0_LINUX.X64_120304
Cell rpm version: cell-11.2.3.1.0_LINUX.X64_120304-1

Active image version: 11.2.3.1.0.120304
Active image activated: 2012-05-09 14:03:04 -0700
Active image status: success
Active system partition on device: /dev/md5
Active software partition on device: /dev/md7

In partition rollback: Impossible

Cell boot usb partition: /dev/sdm1
Cell boot usb version: 11.2.3.1.0.120304

Inactive image version: undefined
Rollback to the inactive partitions: Impossible

CellCLI>  list metriccurrent where objectType='FLASHLOG'
	 FL_ACTUAL_OUTLIERS           	 FLASHLOG	 0 IO requests
	 FL_BY_KEEP                   	 FLASHLOG	 0
	 FL_DISK_FIRST                	 FLASHLOG	 24,627,386 IO requests
	 FL_DISK_IO_ERRS              	 FLASHLOG	 0 IO requests
	 FL_EFFICIENCY_PERCENTAGE     	 FLASHLOG	 100 %
	 FL_EFFICIENCY_PERCENTAGE_HOUR	 FLASHLOG	 100 %
	 FL_FLASH_FIRST               	 FLASHLOG	 960,101 IO requests
	 FL_FLASH_IO_ERRS             	 FLASHLOG	 0 IO requests
	 FL_FLASH_ONLY_OUTLIERS       	 FLASHLOG	 0 IO requests
	 FL_IO_DB_BY_W                	 FLASHLOG	 1,395,420 MB
	 FL_IO_DB_BY_W_SEC            	 FLASHLOG	 10.797 MB/sec
	 FL_IO_FL_BY_W                	 FLASHLOG	 1,457,415 MB
	 FL_IO_FL_BY_W_SEC            	 FLASHLOG	 10.966 MB/sec
	 FL_IO_W                      	 FLASHLOG	 25,587,487 IO requests
	 FL_IO_W_SKIP_BUSY            	 FLASHLOG	 0 IO requests
	 FL_IO_W_SKIP_BUSY_MIN        	 FLASHLOG	 0.0 IO/sec
	 FL_IO_W_SKIP_LARGE           	 FLASHLOG	 0 IO requests
	 FL_PREVENTED_OUTLIERS        	 FLASHLOG	 732 IO requests

CellCLI> list flashlog detail
	 name:              	 dm01cel01_FLASHLOG
	 cellDisk:          	 FD_01_dm01cel01,FD_05_dm01cel01,FD_12_dm01cel01,FD_08_dm01cel01,FD_13_dm01cel01,FD_11_dm01cel01,FD_09_dm01cel01,FD_15_dm01cel01,FD_00_dm01cel01,FD_02_dm01cel01,FD_03_dm01cel01,FD_04_dm01cel01,FD_10_dm01cel01,FD_14_dm01cel01,FD_07_dm01cel01,FD_06_dm01cel01
	 creationTime:      	 2012-06-26T17:41:40+08:00
	 degradedCelldisks: 	 
	 effectiveSize:     	 512M
	 efficiency:        	 100.0
	 id:                	 4146aa41-632a-4210-8652-0b9da4216ac6
	 size:              	 512M
	 status:            	 normal

FL/disk IO 的比重为3.9% 不是一个很高的比重。其实在exadata系统中FL并不能完全替代redo disk write 参见Harrison的part1,part2,反映出SSD对于sequential write的乏力

同时 Kevin Closson 也指出了ESFL的实际目的:

“Exadata Smart Flash Log (ESFL) is really just a way to flow LGWR traffic through different adaptors (PCI Flash). In fact, simply plugging in another LSI HDD controller with a few SATA drives dedicated to redo streaming writes would actually do quite well if not as well as ESFL. That is a topic for a different post.”

How to disable ESFL

To disable Smart Flash Log for all databases
— Use DROP FLASHLOG CellCLI command in the storage servers
To disable Smart Flash Log for an individual database
— Use ALTER IORMPLAN dbplan=((name=test, flashLog=off))

REF:Exadata Smart Flash Cache Features and the Oracle Exadata Database Machine