如果希望一个数据对象长期地缓存在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. 问题:不支持Dictionary;结果:在Web Service中傳送Dictionary

    在Web Service中傳送Dictionary 有個需求,想在Web Service中傳遞Dictionary<string, string>參數,例如: 排版顯示純文字 [WebMe ...

  2. elasticsearch(3) curl命令

    curl 操作http的get/post/put/delete CURL 命令参数-a/--append 上传文件时,附加到目标文件-A/--user-agent <string> 设置用 ...

  3. js和jQuery判断数组是否包含指定元素

    最近遇见一些前台基础性问题,在这里笔者觉得有必要记录一下,为了以后自己查阅或者读者查看. 已知var arr = ['java','js','php','C++']; 问题:arr数组是否包含‘jav ...

  4. Ok6410挂载NFS

    虚拟机: apt-get install portmap apt-get install  nfs-kernel-server mkdir   /nfs/root/mNFS chmod 777 /nf ...

  5. android wifi框架

    ---恢复内容开始--- frameworks/base/services/java/com/android/server/wifi 中的ReadMe文件 WifiService: Implement ...

  6. python 爬虫 下载图片

    import os#导入操作系统模块from urllib.request import urlretrieve#下载url对应的文件from urllib.request import urlope ...

  7. C++用指针变量作为函数的参数接受数组的值的问题的总结

    实参和形参的四种结合方式 实参 形参 实例 数组名 数组名 1.1 数组名 指针变量 1.2 指针变量 数组名 1.3 指针变量 指针变量 1.4 本文以输入10个整数,然后对其进行排序,然后输出的程 ...

  8. SQl Server Tsql基本编程 ,循环语句 ,存储过程

    一些比较重要但是不一定经常用的 句子 Tsql定义变量 declare @a int :  定义的变量前面必须用@,数据类型是SQL里的数据类型,执行的时候要把需要的有关联的代码一起执行,单独执行一条 ...

  9. iOS 聊天界面

    #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...

  10. SSH (Struts2+Spring3.0+Hibernate3)框架(二) 框架的配置

    一.准备工作: 1. JDK -> jdk1.6.0_17 安装(环境变量配置): JAVA_HOME = C:\ jdk1.6.0_17; PATH = %JAVA_HOME%\bin; %J ...