张乐奕

云和恩墨副总经理,Oracle ACE总监,ACOUG 联合创始人

ILM 全称是 Information Lifecycle Management,意思是信息生命周期管理,听上去很高端洋气的一个词,但是实际上几乎每个稍微大些的系统都已经在做 ILM 了,比如说将生产表中的数据定期插入到历史表中,并把生产表中的这些数据删除,这就是数据生命周期管理;又比如使用了分区,定期将过期的数据分区删除掉,或者置为 READONLY,让 RMAN 不再备份,这也是数据生命周期管理。

因此 ILM 由来已久,只要数据存在活跃-不活跃-静止这样的周期变化,那么 ILM 就必不可少,Oracle Database 12c 中提供了很多新功能用来方便地进行数据生命周期管理,有些功能甚至是我们期盼已久的。

时间有效期管理(Temporal Validity)以下简称 TV,TV 的功能大致上可以这样描述:在表中手动或者自动建两个时间类型的字段,一个表示有效期的开始时间,一个表示有效期的结束时间,就可以通过设置让只有在有效期内的记录才会被选择出来。

以下这个场景是我构想出来的,一张表里不断地 INSERT 数据,但是每条数据有效期只有1分钟,过了1分钟再查就看不见了,如果加以仔细策划,应该会是很有趣的功能。直接进入测试:

1) 设置 TV,需要使用 dbms_flashback_archive 包,需要该包的执行权限。

2) 创建测试表,period for 关键字是TV新功能的关键字,valid_time 是 TV 策略的名字,可以随便写。valid_time_start 和 valid_time_end 字段可以不手工定义,只要指定了 period for 关键字,Oracle 会自动创建两个不可见字段。我这里之所以手工定义开始和结束时间字段,是为了能够指定 DEFAULT 值。有效期开始时间 valid_time_start 是记录插入的当前时间,有效期结束时间 valid_time_end 是当前时间的后一分钟。由此定义出了一个跨度1分钟的有效期。

可以看到明确定义的 INSERT_TIME 字段用于演示,VALID_TIME_START 和 VALID_TIME_END 是明确定义的不可见字段。之外,Oracle 还自动创建了 VALID_TIME 字段,也是隐藏字段。

3) 插入一行当前时间

正常情况选择,这行记录总是存在的

为了应对这个新功能,在 Flashback Query 中新增了 as of period for 关键字。as of period for valid_time sysdate+1 表示我们想查询在明天都还有效的数据,因为根据我们的设定,所有数据都只在插入以后1分钟内有效,因此自然无法找到在明天还有效的数据,返回零条记录。

4) 再插入一条测试数据。

我们想查询昨天就有效的数据,但是所有的数据有效期开始都是插入数据的那个时间点,自然无法找到昨天就有效的数据,返回零条记录。

5) 除了使用 as of 这种闪回查询的语法,还可以直接在会话级别设置有效时间点。CURRENT 表示设置为当前时间点。

在我的测试过程中,TV 并不稳定,有时候即使设置了 as of,也仍然会返回所有记录,但是过一会儿再次执行完全相同的语句,又能够返回符合条件的记录。没有详细跟踪不稳定的原因,但是猜测与 cursor 执行计划重用有关,毕竟 Oracle 的实现只是增加了一个 filter 条件,如果由于某种原因,之前 cursor 的执行计划被重用,那么很可能这个 filter 条件就没有加上,随之而来的也就会返回所有记录。

6) 接下来,我们通过显示执行计划,看看 Oracle 是如何增加这个 filter 条件的。

首先禁用 TV。执行计划是很正常的全表扫描。

重新在会话级别启用 TV,可以看到在第二步,也就是全表扫描之后增加了一个 filter,由于指定的有效期是 CURRENT,因此 filter 条件是 VALID_TIME_START  小于等于 当前时间 小于 VALID_TIME_END,也就是只要指定的有效期落在 VALID_TIME_START 和 VALID_TIME_END 之间,这条记录就可以被显示出来。同时也可以看到如果这两个限制条件为空,也都作为开放区间,也就是为空就表示不做限制。

由于测试的记录都只有1分钟有效期,因此此时已经没有一条记录可以显示了。

通过执行计划显示后台机制是一方面,另一方面我们也可以看到实际上 TV 是会有性能问题的,如果 WHERE 条件中无法使用到索引而执行了全表扫描(我这里因为没有 WHERE 条件所以只能是全表扫描),那么无论最终符合有效期的记录是多少,总要先进行所有记录的扫描,我们可以通过前后两次的 consistent gets 基本相同来获得这个结论。

更直白的说,如果作为系统设计人员不去考虑索引的构建,而仅仅是启用了 TV,那么哪怕根据有效期限制,有10万记录的表只有1条会被显示出来,也仍然需要先扫描10万记录,然后再filter掉 99999 条,这对于程序员来说,如果不仔细阅读执行计划,就可能会造成很大的困扰,程序员会很奇怪,为什么这张表里面看上去只有1条记录,但是却要扫描那么长时间呢?

结论:数据有效期是 Oracle 利用隐藏字段和 Flashback Query 技术作的一个有趣的功能,但是数据架构人员在规划的时候一定要考虑性能因素。

------ The End

oracle12c生命周期,Oracle 12c 新特性之: ILM 数据生命周期管理相关推荐

  1. Oracle 12c 新特性之: ILM 数据生命周期管理

    张乐奕 云和恩墨副总经理,Oracle ACE总监,ACOUG 联合创始人 ILM 全称是 Information Lifecycle Management,意思是信息生命周期管理,听上去很高端洋气的 ...

  2. oracle12c启动apply,Oracle 12c 新特性 -- DG 默认使用 Real-Time Apply

    https://www.cndba.cn/dave/article/213 1    理论说明 在Oracle 12c 之前的Data Guard 环境中,默认情况下备库apply redo 是从备库 ...

  3. Oracle 12c新特性--LREG进程专门负责注册实例服务

    Oracle 12c引入了一些大量的新特性,数据库隐藏参数12.2比11.2就多了2000多个, 同时对之前版本的结构也发生了一些变化,虽然不如有些特性像temporary undo\immemory ...

  4. oracle 12c undo,Oracle 12c 新特性之临时Undo--temp_undo_enabled

    Oracle 12c 新特性之临时Undo--temp_undo_enabled 每个 Oracle 数据库包含一组与系统相关的表空间,例如 SYSTEM , SYSAUX , UNDO&TE ...

  5. Oracle 12C 新特性之扩展数据类型(extended data type)

    Oracle 12C 新特性-扩展数据类型,在12c中,与早期版本相比,诸如VARCHAR2, NAVARCHAR2以及 RAW这些数据类型的大小会从4K以及2K字节扩展至32K字节.只要可能,扩展字 ...

  6. Oracle 12c新特性-多租户的维护管理

    云和恩墨技术专家 现就职于云和恩墨,为某省电信公司数据库运维服务:在IT行业拥有10年以上的工作经历.擅长 ORACLE 数据库运维管理.shell 脚本开发:长期服务于电信.金融,政府行业:具有丰富 ...

  7. 【云和恩墨大讲堂】高凯 | Oracle 12c 新特性-多租户的维护管理

    "云和恩墨大讲堂" 线上课程周四晚继续开讲.本期我们邀请的嘉宾是云和恩墨西北区技术专家 - 高凯,在这里跟大家分享一下 Oracle 12c 新特性方面的主题.课程以图文形式在微信 ...

  8. oracle12c 新增维护时间窗口,ORACLE 12C新特性-自动维护全局索引 | 信春哥,系统稳,闭眼上线不回滚!...

    今天在网上看了一篇关于12C新特性-自动维护全局索引的帖子,经测试,貌似根本不是那么回事呀.如果对分区表进行分区DDL操作,如果不加update index字句,全局索引就会失效,下面先看一下是11. ...

  9. oracle12c asmfd,Oracle 12c新特性--ASMFD(ASM Filter Driver)特性

    1 说明 ASMFD 是 12.1 中就引入的新特性,它可以不用手动配置 ASM 磁盘,更重要的是它可以保护磁盘被其他非 Oracle 操作复写,例如 dd , echo 等命令. 更为详尽的介绍,请 ...

最新文章

  1. R语言:绘制知识图谱
  2. 如何理解高光谱图像数据
  3. 石嘴山考计算机在哪里报名,石嘴山中考报名系统
  4. Android - 广播机制和Service
  5. C++派生类构造函数调用规则
  6. cocos2d-x游戏开发(十一)细说场景切换
  7. cocos2d-x返回Android游戏黑屏解决办法
  8. phpVX活码系统源码
  9. 任正非表示支持小女儿姚安娜搞文艺
  10. NTV Media Server G3流媒体服务器搭建经验
  11. 游戏是如何限制多开的,如何解决
  12. log4j记录exception异常有价值信息及log4j级别
  13. ibm服务器安装系统后黑屏,i52430m装win10系统重启电脑进入会黑屏修复方法
  14. Android开发笔记(一百六十四)仿京东首页的下拉刷新
  15. unix linux 安装mono,关于mono在linux连接unixodbc的问题
  16. java并发-独占锁与共享锁
  17. python库下载安装_Windows版的各种Python库安装包下载地址与安装过程
  18. 树莓派挂载硬盘/U盘以及分区教程
  19. h计算机二级基础知识题库,2020计算机二级Office考试题库真题
  20. 显著性水平 P值 概念解释

热门文章

  1. Adobe相关(Windows平台)
  2. CANopen协议学习
  3. ACdream 之ACfun 题解
  4. 财会法规与职业道德【8】
  5. iOS 实现UIButton加小红点
  6. 自助提取公积金(北京)
  7. git项目拉下来之后无法找到主加载类
  8. java graphics2d renderinghints_java - Graphics2D错误 - 堆栈内存溢出
  9. 【知识点回顾】取余数怎么计算
  10. 云计算360度:微软专家纵论产业变革