如果希望一个数据对象长期地缓存在flashcache中,则可以手动地将该数据对象的CELL_FLASH_CACHE属性设置为"keep"。

其实需要说明的是,但不是数据对象的CELL_FLASH_CACHE属性设置成为"keep"后,这些数据块就永久地缓存在flashcache中了,CELL_FLASH_CACHE属性设置为"keep"仅仅是数据块缓存的优先级最高,但并不保证能永久地缓存在flashcache中。

在一定的条件下,那些CELL_FLASH_CACHE属性设置成为"keep"的数据块,也会被自动地解除这个缓存最高优先级。例如:

(1).数据对象被drop掉、truncate掉,或做过shrunk操作。

(2).数据块在48小时之内都未被访问过。

(3).数据对象在24小时之内未被访问过。

(4).数据对象的CELL_FLASH_CACHE属性被修改为"default"或"none"。

下面,我们通过以下示例,来检验以上观点:

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>

[root@cell01 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

[root@cell01 trace]#

注意:

只有cell_flash_cache的属性设置了keep的数据对象,在flashcachecontent中才有hoursToExpiration这个属性。

以上这个示例中,hoursToExpiration的值为1,也即对象的cell_flash_cache的属性虽然设置了keep值,但如果在一个小时内都未有任何访问,则对象的cell_flash_cache的属性会过期失效。(该示例中,hoursToExpiration之所以为1,其实是对某项参数进行了修改,默认值为24。)

 

1小时之后,再次查询该对象在flashcache中的缓存情况时:

[root@cell01 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

[root@cell01 trace]#

发现,数据对象的cell_flash_cache属性从keep变成了default,已经缓存在flashcache中的数据块仍然存在,但缓存保留的优先级发生了变化,也即日后该对象缓存在flashcache中的数据块也会被其它数据对象挤出flashcache。

 

前面讲过,数据块在48小时之内都未被访问过,或数据对象在24小时之内未被访问过,则该对象flashcache的keep属性会被自动解除掉,变成default。这个keep属性的过期时间是由存储节点的两个隐含参数(_cell_buffer_expiration_hours和_cell_object_expiration_hours)来进行控制的。

---- 打印出存储节点当前所有的参数:

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>

---- 查看控制keep属性过期时间的参数:

[root@cell01 trace]# cat svtrc_1834_75.trc |grep expiration_hours

_cell_buffer_expiration_hours = 48

_cell_object_expiration_hours = 24

[root@cell01 trace]#

Flashcache的 KEEP属性自动失效的更多相关文章

  1. 【转】Expire Google Drive Files 让Google Docs云盘共享连接在指定时间后自动失效

    最近在清理Google Docs中之前共享过的文件链接,发现Google Docs多人协作共享过的链接会一直存在,在实际操作中较不灵活.正好订阅的RSS推送了Pseric写的这篇文章 - Expire ...

  2. unreal3对象属性自动从配置文件中加载的机制

    unrealscript中有两个与属性自动配置相关的关键字: config/globalconfig 当把它们应用于属性时,对象在创建后,该属性的初始值会被自动设置为相对应ini文件中的值. 举例来说 ...

  3. springMVC注解@initbinder日期类型的属性自动转换

    在实际操作中经常会碰到表单中的日期 字符串和Javabean中的日期类型的属性自动转换, 而springMVC默认不支持这个格式的转换,所以必须要手动配置, 自定义数据类型的绑定才能实现这个功能. 一 ...

  4. 最新iOS 6 in Xcode4.5新特性——Storyboard和属性自动绑定

    最新iOS 6 in Xcode4.5新特性编程之二(上)——Storyboard和属性自动绑定 从Xcode 4.3开始,Storyboard 就是iOS 5和iOS 6中令人兴奋的一个新特性,他将 ...

  5. crontab自动失效注意事项

    若用户密码过期,用户的crontab计划任务会自动失效.重设用户密码修改时间后,crontab会自动恢复. #使用chage -l 查看用户密码过期时间 chage -l user #使用chage ...

  6. 很多人以为 connect 和 disconnect 应该像 new 和 delete 一样成对出现 这是错误的(只要 sender 或 receiver 其中之一不存在了,connect 会自动失效。QObject::connect 函数是线程安全的)

    其实我写文章也是边查资料边编辑的 有时候是怕自己的阐述不严谨,有时候是怕自己重复造轮子 就像有些人不停的教大家QLabel QDialog QWidget 个人是不屑的 命令模式 用 Qt's Und ...

  7. 表单中的日期 字符串和Javabean中的日期类型的属性自动转换

    搞了一上午的bug最终还是因为自己springMVC的注解不熟悉的原因,特记录. 在实际操作中经常会碰到表单中的日期 字符串和Javabean中的日期类型的属性自动转换, 而springMVC默认不支 ...

  8. 自己实现简单的AOP(五)使Demo适应webApi、亦可完成属性自动注入

    在前文的Demo中,webApi的Controller是不能自动注入的,原因是 IHttpController 和 IController 是通过两个不同的途径进行激活的. IHttpControll ...

  9. webstorm 支持vue element-ui 语法高亮属性自动补全

    如果webstorm中 提示 Unknown html tag el-*** 说明没有加载 node_modules 下的 element-ui 解决办法就是: 在webstorm 打开的状态下 第一 ...

随机推荐

  1. C语言生成程序问题

    问题: 我用VS2013写好C语言程序调试运行后就在debug文件夹下生成了EXE文件,可以在本机运行.但是这个EXE文件在别的没装过VS2013的电脑上就不能直接运行,说丢失MSVCR120D.dl ...

  2. VxVM vxsnap ERROR V-5-1-0 Volume cannot be linked due to size/regionsize incompatibility

    在做vxsnap addmir时报错如下: #> vxsnap -g OLS_DATA_DG -b addmir OLS_DATA_ACC_P mirvol=OLS_DATA_ACC_SM1 V ...

  3. Java enum(枚举)使用详解之四

    用法五:实现接口 所有的枚举都继承自java.lang.Enum类.由于Java 不支持多继承,所以枚举对象不能再继承其他类. public interface Behaviour { void pr ...

  4. Oracle监听程序没法启动的一种解决办法

    遇到的是监听日志多了 oracle\diag\tnslsnr\WIN-MLPKEV0JE05\listener\trace 删除 日志关闭 lsnrctl  set log_status off;

  5. eclipse中maven的配置与使用

    以eclipse Juno版本为例 1.插件安装 eclipse==>help====>install new software===>add name :m2e location: ...

  6. mysql case

    1.table CREATE TABLE `lee`(`id` INT(10) NOT NULL auto_increment,`name` varchar(20) DEFAULT null,`bir ...

  7. Android键盘属性

    在主xml中android:windowSoftInputMode的属性"stateUnspecified"软键盘的状态(是否它是隐藏或可见)没有被指定.系统将选择一个合适的状态或 ...

  8. JavaScript去除空格的三种方法(正则/传参函数/trim)

    方法一: 个人认为最好的方法.采用的是正则表达式,这是最核心的原理. 其次.这个方法使用了JavaScript 的prototype 属性 其实你不使用这个属性一样可以用函数实现.但这样做后用起来比较 ...

  9. (内存地址hashcode与对象内容hashcode)分析== 和 equal()方法

    ==.equals()和hashCode()字符串测试 1.hashCode() 是根据 内容 来产生hash值的 2.System.identityHashCode() 是根据 内存地址 来产生ha ...

  10. [hdu2255]奔小康赚大钱(二分图最优匹配、KM算法)

    题目大意:求二分图的最优匹配(首先数目最大, 其次权值最大). 解题关键:KM算法 复杂度:$O(n^3)$ #include<cstdio> #include<cstring> ...