如果希望一个数据对象长期地缓存在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. sql语句优化方案

    1. 为查询缓存优化你的查询 NOW() 和 RAND() 或是其它的诸如此类的SQL函数都不会开启查询缓存,因为这些函数的返回是会不定的易变的. 所以,你所需要的就是用一个变量来代替MySQL的函数 ...

  2. AJAX——Json

    一.简介: 客户端利用Ajax请求服务器端时,数据在两者之间通常有两种格式:XML格式的数据:Json(JavaScript Object Notation/JavaScript 对象表示法)格式数据 ...

  3. java中常用的时间操作

    最近项目设计时间的转换和计算,长时间没用时间操作了,感觉手有点生,所以在这里记录一下: Date 常用的方法: getTime() .setTime(): SimpleDateFormate 常用的方 ...

  4. WPA密码攻击宝典

    原则:密码以8-10位为主.11位仅限于当地手机号.一般人的多年用数字做密码的习惯和心理,先数 字.再字母,或数字.字母重复几遍,字符几乎全用小写,所以淘汰大写及"~!@#$%^&* ...

  5. ES01 数据类型、正则表达式、身份证校验

    1 基本数据类型 参见W3C的教程即可 2 正则表达式 参考博文:点击前往 3 身份证校验 参考博文:点击前往 <div class="panel panel-primary" ...

  6. Condition实现多线程顺序打印

    Condition实现多线程顺序打印: import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.R ...

  7. IFC—IfcProduct实体继承框架

  8. HBase 协处理器统计行数

    环境:cdh5.1.0 启用协处理器方法1. 启用协处理器 Aggregation(Enable Coprocessor Aggregation) 我们有两个方法:1.启动全局aggregation, ...

  9. 华为2013年西安java机试题目:如何过滤掉数组中的非法字符。

    这道题目为记忆版本: 题目2描述: 编写一个算法,过滤掉数组中的非法字符,最终只剩下正式字符. 示例:输入数组:“!¥@&HuaWei*&%123” 调用函数后的输出结果,数组:“Hu ...

  10. PCL基础3.2-如何编写新的PCL类

    1.文件名为mainBilateralFilter.cpp的文件内容如下 #include <pcl/point_types.h> #include <pcl/io/pcd_io.h ...