【Oracle 12c 新特性】ILM – 数据库内归档

233a92bb67dc64726e499c1264d90b4c.png
张乐奕

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

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

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

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

11047fd87d574273fb4f5191f76d5897.png

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

89eff287be29846a62a6da74a8f4fa58.png

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

a6fac709d2eaec66d395d9945b728831.png

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

61ca1a6162a20b81e6cc054c580130a7.png

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

d75d44674952a24f7d5f2af3c97d480b.png

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

cf4fb1038ac56fdd4e424096df0f8515.png

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

aedda8b1b1628449ae6d9a6bf951780d.png

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

8c173fb976fffa25ff9d7857b94ed816.png

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

4349d57896ec4f0a0fe830e93120a244.png

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

d0dc6780640c3f7b761290de98c16c14.png

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

ab192c753f98e34bdc7a491e69b1b379.png

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

746b77323be8c305def8acb161c42fe5.png

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

如何加入云和恩墨大讲堂微信群

搜索盖国强(Eygle)微信号:eeygle,或者扫描下面二维码,备注:云和恩墨大讲堂,即可入群。每周与千人共享免费技术分享,与讲师在线讨论。

5e0c3c98c6fb520940c3bf52c1dbab0a.png

云和恩墨

数据驱动,成就未来。整合业界顶尖的技术与合作伙伴资源,围绕数据及相关领域,提供解决方案和专业服务。

业务架构

电子渠道(网络销售)分析系统、数据治理

IT基础架构

分布式存储解决方案

数据架构

Oracle DB2 MySQL NoSQL

专项服务:架构/安全/容灾/优化/整合/升级/迁移

运维服务:运维服务  代维服务

人才培养:个人认证  企业内训

软件产品:工具软件(SQL 审核、监控、数据恢复)

应用架构

应用软件开发:数据建模 | SQL审核和优化 | 中间件服务

恩墨学院

恩墨学院是云和恩墨(北京)信息技术有限公司旗下的培训事业部,创业数年专注于数据库认证、技能培训,以专业的讲师塑造品牌,以专业的训练保证就业,目前已经发展成为国内数据库领域培训领导品牌。

4ea649a729bbffffab1c9fed8bc27bd5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值