If you want a data object to be cached in Flashcache for a long time, you can manually set the Cell_flash_cache property of the data object to "keep".
In fact, it is necessary to note that, but not the Cell_flash_cache property of the data object is set to "keep", the data blocks are permanently cached in Flashcache, and the Cell_flash_cache property is set to "keep" The data block cache is only the highest priority, but it is not guaranteed to be permanently cached in Flashcache.
Under certain conditions, those Cell_flash_cache attributes are set to "keep" data blocks, which will also be automatically lifted to the highest priority of the cache. For example:
(1). The data object was dropped, truncate, or shrunk operation.
(2). The data block has not been accessed within 48 hours.
(3). The data object has not been accessed within 24 hours.
(4). The Cell_flash_cache property of the data object is modified to "default" or "None".
Below, we examine the above views through the following example:
sql> ALTER TABLE TEST.MM storage (Cell_flash_cache keep); Table altered. Sql> Select object_id, data_object_id from dba_objects where object_name= ' MM '; OBJECT_ID data_object_id ---------- -------------- 13952 13952 Sql> Select bytes from dba_segments where segment_name= ' MM '; BYTES ---------- 65536 Sql> [Email protected] trace]# cellcli-e list flashcachecontent where objectnumber=13952 detail cachedkeepsize:65536 cachedsize:65536 dbid:195867650 Dbuniquename:exadb Hitcount:3 Hourstoexpiration:1 Misscount:1 objectnumber:13952 Tablespacenumber:4 [Email protected] trace]# |
Attention:
Only the Cell_flash_cache property sets the Keep data object, hourstoexpiration this attribute in Flashcachecontent.
in this example, the value of Hourstoexpiration is 1, that is, the property of the object's Cell_flash_cache, although the Keep value is set, the object's cell_flash_ if there is no access within one hours. The cache's properties expire. (In this example,hourstoexpiration is 1, which is actually a modification to a parameter with a default value of 24.) )
after 1 hours, the object is queried again in the Flashcache cache condition :
[Email protected] trace]# cellcli-e list flashcachecontent where objectnumber=13952 detail cachedkeepsize:0 cachedsize:65536 dbid:195867650 Dbuniquename:exadb Hitcount:3 Misscount:1 objectnumber:13952 Tablespacenumber:4 [Email protected] trace]# |
It was found that the Cell_flash_cache property of the data object changed from keep to default, and the block of data that had been cached in Flashcache still exists, but the priority of the cache reservation has changed. That is, the data block that the object caches in Flashcache will also be extruded by other data objects in the future Flashcache.
as mentioned earlier, the data block has not been accessed within 48 hours, or the data object has not been accessed within 24 hours, the object Flashcache the Keep property will be automatically removed, become default. the expiration time of this keep property is controlled by the two hidden parameters (_cell_buffer_expiration_hours and _cell_object_expiration_hours) of the storage node.
----Print out all of the current parameters of the storage node: cellcli> alter cell events= "immediate cellsrv.cellsrv_dump (' Cellparams ', 0)" Dump sequence #1 has been written to/opt/oracle/cell11.2.3.2.0_linux. X64_120713/log/diag/asm/cell/cell01/trace/svtrc_1834_75.trc Cell Cell01 successfully altered Cellcli> ----View the parameters that control the expiration time of the Keep property: [email protected] trace]# cat svtrc_1834_75.trc |grep expiration_hours _cell_buffer_expiration_hours = 48 _cell_object_expiration_hours = 24 [Email protected] trace]# |
Flashcache Keep attribute is automatically invalidated