UDN-企业互联网技术人气社区

板块导航

浏览  : 1475
回复  : 0

[讨论交流] 【Oracle 12c 新特性】ILM – 数据库内归档

[复制链接]
菊花一朵朵的头像 楼主
发表于 2016-3-23 19:31:57 | 显示全部楼层 |阅读模式
本帖最后由 菊花一朵朵 于 2016-3-23 19:33 编辑

00b1c9f29bfd7b2ae0302a6dfbc4f000.jpg

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

  本文将介绍 Oracle Database 12c 中关于数据生命周期管理多个新特性中相对最简单的一个 — 数据库内归档(In-Database Archiving)。使用的测试表是上一篇介绍数据时间有效期管理中使用的TV表(包括表结构和测试数据),如果您还没有看过上一篇文章,可以先阅读 Oracle 12c 新特性之: ILM 数据生命周期管理。

  相比起数据时间有效期管理而言,数据库内归档非常简单,只有一个开关,对于一条数据,要不就是允许显示(活跃的),要不就是不显示(归档掉),这是由数据库管理员来人工操作的。

  在设置数据库内归档之前,必须要在表级别启用该特性。如另一篇文章所提,In-Database Archiving 支持多租户架构,可以在 PDB 中使用。

1c461eadba1e78432db098cff306f5a9.png

  Oracle 仍然是使用隐藏列来实现这个功能的,在启用该特性以后,会自动在表上增加 ORA_ARCHIVE_STATE 字段,这是一个 VARCHAR2(4000) 的字段。

6c3e915501de9cebbe1ea07c6fcc7f5a.jpg

  先检查一下TV表中的数据分布,一共有9个不同的时间段,前面5个都只有1条记录,后面4个则有大量测试记录。

28c9a96b577e41e1105d6096eae3e3f0.jpg

  尝试将所有 20130811 09:50 之后的记录全部设置为归档模式。直接使用 UPDATE 语句将ORA_ARCHIVE_STATE 字段更新为任意非0的字符,0表示该记录是活跃的,任何非0字符都表示该记录被归档。

11ecc8defdc3cf5d66cead510cec7bf3.png

  再次执行相同的查询语句,可以看到只存在活跃的5条记录了。

19342983c24fb903cdd96904ebbc260c.jpg

  可以在会话级别设置即使是记录被归档,也仍然显示出来。

9f8e7d31a529d8ed6ac6d974aa0c3587.jpg

  检查 ORA_ARCHIVE_STATE 值,可以看到所有活跃数据的 ORA_ARCHIVE_STATE 字段值均为0,这也是在表级别启用数据库内归档以后的默认值。

c00ea217c2b1500d4c7fc7b52deeb54b.jpg

  将其中的一些记录的 ORA_ARCHIVE_STATE 字段更新为另外的非0字符。

58c2d0dbb91fd498f9ca9ea7bd511f5a.jpg

  在会话级别重新设置不显示归档数据,可以看到只要是 ORA_ARCHIVE_STATE 字段不为0的记录都不会显示。

cfb29d5bffcb4d0195b649e124e55f15.jpg

  性能考虑,这一点数据库内归档与时间有效性是相同的,都只是对隐藏字段进行了filter操作。即使是只显示活跃数据,也仍然需要扫描全表。这一点在真实应用中可以通过创建索引来避免全表扫描,可以参看MOS Note: Potential SQL Performance Degradation When In Database Row Archiving (Doc ID 1579790.1),也就是数据库内归档只应该在一个具备良好性能的SQL基础上对返回结果进行过滤,而不要期望归档的记录不参与扫描。

6779b6ccc5bfd5b9a5e38426051b6d75.jpg

  数据库内归档可以跟时间有效性管理一起配合使用。在会话级别激活时间有效性,可以看到检索不再返回任何数据。执行计划中显示 filter 条件融合了数据库内归档跟时间有效性两层过滤。

5c687ca627663eda0af953d21c97261e.png

  将时间有效期设置为 20130811 09:39:50,根据上一篇文章我们设置的1分钟有效期,只有在 20130811 09:39:40 插入的这条活跃记录可以被显示出来。

40edfc659736ddc9a817dc29ffbf6605.jpg

  结论:数据库内归档是一个 Oracle 利用隐藏字段实现的非常简便的功能,可以快速实现行级数据隐藏,对应用完全透明,也利于后续的数据归档清理。当然,数据架构人员在规划的时候一定要考虑性能因素,良好的设计一定是基于综合因素的全面考量。

                                     原文作者:张乐奕  来源:云和恩墨
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部