再上一篇:13.3索引分区
上一篇:13.4再论分区和性能
主页
下一篇:13.6小结
再下一篇:14.1何时使用并行执行
文章列表

13.5审计和段空间压缩

Oracle 9i 10g编程艺术:深入数据库体系结构

就在不久之前,还没有诸如HIPPA 法案(http://www.hhs.gov/ocr/hippa)所强制的那些美国政府限 制。像安然这样的一些公司仍在运营,美国政府尚不要求符合Sarbanes-Oxley法案。那时,总认为审计是 “以后哪一天可能要做的事情”。不过,如今审计已经摆到了最前沿的位置,许多DBA都要为其财政、商业 和卫生保健数据库保留审计跟踪信息,需要保证长达7年的审计跟踪信息在线。
在 数据库中可能只是插入审计跟踪信息,而这部分数据在正常操作期间从不获取。审计跟踪信息主 要作为一种证据,这是一种事后证据。这些证据是必要的,但是从很 多方面来讲,这些数据只是放在磁盘 上,占用着空间,而且所占的空间相当大。然后必须每个月或每年(或者每隔一段时间)对其净化或归档。 如果审计从一开始就 设计不当,最后很可能置你于“死地”。从现在算起,如果7年后需要第一次对旧数 据进行净化或归档时你才开始考虑如何来完成这一工作,那就太迟了。除非你做了适当的设计,否则取出 旧信息实在是件痛苦的事情。
下面来看两种技术:分区和段空间压缩(见第10章)。 利用这些技术,审计不仅是可以忍受的,而 且很容易管理,并且将占用更少的空间。第二个技术可能不那么明显,因为段空间压缩只适用于诸如直接 路径加载之类的 大批量操作,而审计跟踪通常一次只插入一行,也就是事件发生时才插入。这里的技巧是 要将滑动窗口分区与段空间压缩结合起来。
假 设我们决定按月对审计跟踪信息分区。在第一个业务月中,我们只是向分区表中插入信息;这些 插入使用的是“传统路径”,而不是直接路径,因此没有压缩。在这 个月结束之前,现在我们要向表中增 加一个新的分区,以容纳下个月的审计活动。下个月开始后不久,我们会对上个月的审计跟踪信息执行一 个大批量操作,具体来 讲,我们将使用ALTER TABLE命令来移动上个月的分区,这还有压缩数据的作用。 实际上,如 果再进一步,可以将这个分区从一个可读写表空间(现在它必然在一个可读写表空间中)移动 到一个通常只读的表空间中(其中包含对应这个审计跟踪信息的其他分 区)。采用这种方式,就可以一个 月备份一次表空间(将分区移动到这个表空间之后才备份);这就能确保有一个正确、干净的当前表空间只 读副本;然后在这个月 不再对其备份。审计跟踪信息可以有以下表空间:
一个当前在线的读写表空间,它会像系统中每一个其他的正常表空间一样得到备份。这个 表空间中的审计跟踪信息不会被压缩,我们只是向其中插入信息。
一个只读表空间,其中包含“当前这一年”的审计跟踪信息分区,在此采用一种压缩格式。 在每个月的月初,置这个表空间为可读写,向这个表空间中移入上个月的审计信息,并进行压 缩,再使之成为只读表空间,并完成备份。
用于去年、前年等的一系列表空间。这些都是只读表空间,甚至可以放在很慢的廉价存储 介质上。如果出现介质故障,我们只需要从备份恢复。有时可以随机地从备份集中选择每一年 的信息,确保这些信息是可恢复的(有时磁带会出故障)。
采 用这种方式,就能很容易地完成净化(即删除一个分区)。同样,归档也很轻松,只需先传送一个 表空间,以后再恢复。通过实现压缩可以减少空间的占用。备份的 工作量会减少,因为在许多系统中,单 个最大的数据集就是审计跟踪数据。如果可以从每天的备份中去掉某些或全部审计跟踪数据,可能会带来 显著的差别。
简单地说,审计跟踪需求和分区这两个方面是紧密相关的,而不论底层系统是何种类型(数据仓库或 是OLTP系统)。