用在线重组确保现代数据库的服务标准
介绍
在电子商务驱动现代业务应用的设计和需求,高性能和高可用性的数据库计算现已成为服务的标准。这个现代性能标准是与宕机时间的高昂成本相关的。为这种环境开发的管理技术要求在做标 准维护任务时,对系统几乎不能有影响。
在线重组将极大地有助于维护全部数据库的可用性,并且潜在地减少或消除计划中的宕机时间。这反过来将会增加应用的投资回报率(ROI)和降低拥有成本(TCO)。在线重组也将给予管理员空前的便性,在用户完全正常访问数据库的情况下,去修改表的物理属性和更改数据和表的结构。数据库重组的标准方法,是开发完善的操作系统和数据库脚本,来自动化重组或者把它们压缩到一个计划的宕机维护时间里。当然这是通常的方法,有宕机时间、管理和开发的成本。而且,如果这个重组方法失败了,就要等待下一次宕机机会的出现。
通常明智的做法是设置正确的初始表空间,从而避免重组。但是即便是最小心翼翼设置的表,在条件不断变化的情况下,也可能需要修改存储参数来获得最佳的空间利用率。
重组的原因
表及其依存对象,是重组的目标,为了达到空间的最有效利用,避免性能问题,或者适应新的硬
件构架。考虑以下几个情况:
数据存取
数据存取的目的是减少对在线数据空间的需求和通过压缩数据集合来提升应用的性能。单纯的存取不会带来这些好处,重组才是下一个关键的步骤,其目的是实现节省空间和存取过程的性能优化。
大量的存取和删除操作,在数据表段中留下了碎片。即使数据最重要的部分已经被从表中删除了,内部的自由空间也不会被回收到数据库用于其他技术白皮书:DBControl Online 基于Oracle的数据库管理对象。重组可以压缩数据段,回收碎片为数据库空间。
存取之后,表的水位线(HWM)保持不变。完整的表扫描操作,比如报表,仍然要遍历整个表段,即使多数地 方都是空的。重组降低了表的水位线,这样就提升了这些操作的性能,并且获得数据压缩的全部收益。
空间回收
当表空间中的自由空间处于数据稳健的末尾时,数据稳健可以改变大小,自由空间可以回收到操作系统中做为它用。然而,如果自由空间处于表空间的中部,就需要重组来把数据压缩,把自由空间移到数据稳健的末尾。回收自由空间到操作系统,可以使昂贵的磁盘系统获得更高效的利用,并且他延长了购买硬件的生命周期。
表与初始存储参数设计相背离
当表被初始创建时,数据库管理员必须估算下边存储参数。
块空间利用参数
PCTFREE 定义了在一个块中用于在现有行上进行更新的可用空间数量
PCTUSED 设置块上的空间阈值防止更新异常。如果数据块的可用率降低这个参数,这块就会拒绝更新。
INITRANS 定义了一个数据块内部可以并发更新行的初始事务数。
MAXTRANS 定义了一个数据块内部可以并发更新行的最大事务数。
分区分配参数
INITIAL 设置了初始表的分区大小。
NEXT 如果没有应用PCTINCREASE参数,本参数就定义了已分配的表分区大小
MINEXTENTS 表中应该分配的分区最小数目。
MINEXTENTS 表中可以分配的分区最大数目。
PCTINCREASE 第三个和每个连续的分区依赖于混合空间的增量,它等于NEXT参数和
PCTINCREASE值的乘积。
既然上述参数都是在创建表时估算的,它们就易于发生修改。一旦产品数据已经存入表中,关于数据更新大小和频率的真实行为就确定了。通过上述分析,存储参数可以被优化以满足实际性能需求,而优化就需要做重组。
忠于行业的“最佳实践”
从Oracle 8i开始,最佳实践包括本地管理表空间的应用。这考虑到了通过设置标准的大小来实现自动设定所有新分区的大小,以及删除与自由分区分片之间的任何关联。本地方法通过使用位图保留了分区跟踪,而不再需要访问数据字典。通过本地化管理表,可以获得存储,性能和管理的高效率。
除了本地管理表空间以外,避免空间低效使用的第二个方法,是通过设置分区存储参数PCTINCREASE为0,并使INTIAL与NEXT相等来实现的。这是考虑到分配统一的分区和可预见的调整大小需求。
具有相似大小分区的表可以共享一个根据标准分区分配要求设计的表空间。这种分段是考虑到每个表空间上分配相同的分区,依赖于数据表被当成小、中还是大表。
消除行链接和行迁移
行链接的发生,是因为在插入或更新行时,新行比原来的数据块大。当行链接发生时,Oracle把该行的数据分成两部分,以适应现有链中为该段预留的数据块,行链接是数据块大小不兼容造成的综合结果。而行迁移的发生,是当更新行时,它不适应原有的数据块,Oracle把该行迁移到一个新的数据块。Oracle必须把原来的行和包含迁移行的新数据块链接起来。行链接和行迁移都会降低性能,并且潜在浪费数据块空间。
对大表做分区
对大表做分区,将极大地提升表的可管理性,使DBA能够把表和索引分成较小的,独立的单元。它把维护过程(如表分析和在线备份)分成高效的、可管理的子任务。
转换为索引表(IOT)
索引表(IOT)的内容是按照二叉树进行组织的,索引和表是整合到一个数据库对象中,所以它们没有分离存储的需求。索引表可以节省空间,把查询消耗整合到一个对象中,提高基于主键的查询性能。为了获得性能和存储空间的节省,做重组是值得的。
传统重组方法
上述的案例是重组一个表的充分理由,随之而来的是如何权衡重组的潜在负面影响与它所带来的性能好处。传统的重组方法伴随着对一些风险和时间的考虑,这样次要的性能问题就可能被忽略了。传统表重组的一般性原则如下。
离线重组必须策划周详,特别是在许多联机事务处理(OLTP)环境中,维护窗口很小的情况下。任何错误如果不能得到迅速补救,就会带来巨大的经济负担,并对已经安排好的时间计划造成额外的压力。当今的数据库表都很大,并且对可用性要求高,这样产生的一个关键需求就是可以使系统正常工作时间和性能最大化的在线重组能力。
离线重组通常有如下几个步骤:
表空间离线。
用优化的存储参数创建一个新的临时表(TT1)。
删除原始表(T1)。
重命名表(TT1)为(T1)。
重建索引和约束。
重建依赖。
表空间上线。
离线重组一旦在上述过程中发生失败,就需要很长时间才能恢复,特别是在数据已经完全从数据库卸载之后。
在线重组的好处
企业级业务应用必须在任何时区对任何用户都是可用的。如果能够在线做重组,数据流没有中断,就提供了空前的时间优势。多数对SAP及财务环境的服务等级协议要求99.9%的可用时间,只留一个微不足道的维护窗口。由于宕机时间的成本,在线重组就如同在线备份一样有价值。有了在线重组,对表的重组过程就没有时间约束了。
在线重组产品(NORAD DBControl Online)提供
了在事务正常运行时重组表及其相关对象的能
力。这种技术应用包括了以下在线能力:
• 增加、修改、删除索引
• 增加、修改、删除分区及其属性
• 增加、修改、删除子分区
• 对表进行分区和取消分区
• 把非索引表修改为索引表,或者把索引表改
为非索引表
• 根据索引对表进行排序 NORAD DBControl Online提供了一个通过表重组来彻底减少宕机时间的方法。数据表可以在线扩大以帮助达到可用性要求。离线重组方法不能提供满足高可用性标准的高效、容错性强的环境。
在线重组方法
DBControl Online的在线重组和结构调整一般方法如下:
设置阶段
通过在线重组对话框,被改变的表信息可作为模板,用于按照修改过参数的新建数据表。
复制阶段
引入的数据操作语言(DML)综述被记录到日志表中,存储在原始表中的数据被加载到新的重组过的表中。
同步阶段NORAD DBControl Online可以有选择性地把原始表的事务应用到新表中以保持同步,直到主动刷
新和切换阶段开始。主动刷新在切换发生的前一刻把事务应用到重组后的表中。
切换阶段
可以设置几个原则,比如数据表活动的阈值,以控制切换开始时间。切换时,重组后的表取代原始表的身份,原始表可以删除或保留,取决于用户设置。
竞争优势
兼容性 NORAD DBControl Online提供了对Oracle各个版本和特性的广泛支持:
数据库: DBControl Online提供了对Oracle数据库从8.0.5到10.2.0的全面支持。
数据类型: DBControl Online支持LONG和LONG RAW数据类型,而且没有数据长度限制。
基于Oracle技术使
用Oracle自身的技术,使Bradmark具有几个关键优势:
健壮性 产品的体系结构在理念上完全适合事务负载高的大表,在在线重组和结构调整过程中,拥有对ORA-1555: Snapshot tooold”错误的完善保护。
可靠性复制和刷新阶段用到的所有过程是基于Oracle认可的方法和过程,而不是用私有的技术。DBControl Online与Oracle的技术一样可靠。
速度快使用内部触发器而不是外部触发器或重做日志途径,使本产品比竞争产品更快。使用Oracle的复制技术是复制的事务最小化,从而提升了复制的速度和数据库性能开销。
易管理本产品不像某些依赖于重做日志的产品,没有重做日志策略计划的负担,也不会为了适应重组的要求而明显地增大重做日志。这个产品适合于小的回滚段,并且对每个并发的重组只需要一个大的回滚段。
附加的在线功能
集成的告警和分发能力 与Bradmark的Surveillance产品结合使用时,DBControl Online提供了集成的告警机制,它为
DBA提供了重组过程的实施进程反馈。这些告警产生标准的弹出消息、发送Email或SNMP跟踪,发送Tivoli或OpenView的事件,或生成外部脚本。可以生成多种告警和动作,并且可以延时。
在线工作历史 在线工作历史窗口给你查看以前运行的在线工作的能力,这个特性对于将来的重组计划或者估计本次及其他重组的时间很有帮助。
多对象在线重组 DBControl Online提供了选择多个表进行重组的能力。根据期望的性能,你可以重组一个表空间中的所有表,也可以设置同时重组的表数目。
附加的数据库管理功能
除了主要的在线重组和分区管理功能,DBControl Online提供了丰富的数据库管理特性集合,这能减少或消除易错或耗时的任务。
诊断空间是高效使用的吗?有没有性能问题?NORADDBControl的诊断功能可以发现问题,比如浪费空间、行链接等导致数据库性能显著下降,没有做过“Analyze Statistics”命令做统计而导致使
用高成本的优化工具却生成低效的查询计划。分析可以运行于一个表、索引或这个表空间。
表空间地图
表空间地图可以帮助DBA识别对象的错误存储参数,而重组特性可以用来改正和防止空间分配的问题。一旦确认了对象需要重组,NORAD可以重组或重构,通过传统方法或在线方法。
离线重组对传统重组来说,NORAD使用了卸载/加载工具,它驱动Oracle的导入和导出功能,确保所有参考的完整性、权限、索引和相关对象在重组之后完整无缺。当表空间中的多数对象需要重组时,NORAD的表空间重组特性提供了快速的、传统的重组方式。使用NORAD的卸载/加载功能,表空间的所有对象被一次性卸载、删除、重建、加载。DBA可以为任何表空间、表、索引或簇指定新的存储参数。NORAD重建表空间和相关对象,可以立即执行,也可以通过脚本文件,或者设置进度表,在将来某个时间做重组。
趋势分析
趋势分析特性可以帮助数据库管理员确定当前空间利用上的问题,对未来空间的需求做出准确估计并定位出低效索引,从而能提高空间利用效率和性能。为了完成这些,NORAD将Oracle的ANALYZE语句得到的统计量存储在一个基于表的知识库中,并提供了强大的图形界面来图示这些统计量的时间变化曲线。数据库管理员可以用这些统计量作为新存储参数的基础,包括:何时利用对象重组特性去重组对象,确定何时有必要重建或结合索引,确定是否使用了正确的索引类型,或数据库的块大小是否要增加。
模式对象管理NORAD是为满足数据库管理人员的需求而特别设计的工具。它包括用图形化界面管理Oracle环境下的所有模式对象从而降低了管理这些对象的难度。通过为数据库管理员提供图形用户界面来创建、更改和删除模式对象,模式对象管理选项大大降低了数据库管理员必须完全掌握Oracle数据字典语言(DDL)的要求。
模式比较模式比较能很快查明测试环境和生产环境的差异,避免了这些差异影响用户输入数据而导致的可用性问题。模式对象结构的比较,包括识别由于数据类型不同而缺少的列,缺少的约束以及不同的存储参数。初始化文件比较特性可以用来探测那些可能导致可用性或性能问题的参数设置差异。
SQL调优Oracle数据库调优应该是一个整体的方法,它包括调整应用程序和数据库设计,SQL语句,内存分配,I/O以及资源争夺。通过NORAD的SQL调优特性,可以在应用程序开发阶段调优语句,或在测试和生产阶段隔离有问题的语句。
安全管理管理Oracle安全是数据库管理员所面临的最乏味的任务之一。NORAD为管理Oracle数据库提供了一个简单易用的方法来管理数据库安全,除授予和收回系统或对象权限外,还包括创建,更改和删除用户,角色和配置文件。
调度程序
一些数据库管理员的任务是很耗费时间的,所以希望能调度这些任务在非高峰阶段自动运行,这样可以使数据库管理员和数据库的生产力获得极大的收益。灵活的时间调度系统允许管理员立即提交工作或按照按照一个常规的或重复的时间表,比如在每月的某一天或在一个特定的日期。
贝塔斯曼商业案例研究
问题
当你运营一个图书俱乐部的时候,记录你客户订单的数据库就是你商业的生命源泉。如果你是欧洲最大的图书俱乐部,拥有3700万会员,数据库就将非常大非常忙。随着数据的不断增加、修改、删除,在贝塔斯曼书友会心脏位置的SAP系统及其内含的Oracle数据库中有了越来越多的碎片。这些碎片反过来导致性能下降,同时增加了对存储
的需求。在之前的12个月里,书友会把数据库停了12次,来做数据表的重组。每次数据库就要被停掉12至20个小时。即使这些宕机只在周日进行,也意味着电话销售业务不能获得客户采购订单系统所需要的全部信息。随着数据库的增长率以及存档所造成的碎片增加,很明显该公司需要一个产品来执行在线重组。
寻找解决方案
在线重组工具的选择涉及到了多个部分。Arvato系统负责支持和管理数据库服务器,并且将日常使用这个产品,所以要获得他们的采购很重要的。Sun是硬件合作伙伴,已经实施了一套镜像数据库解决方案,很重要的一点是要确保任何重组产品都不能与这个镜像功能冲突。在寻找适合的产品同时,贝塔斯曼书友会也需要找到一个能对相关不同组织提供多级支持的合作伙伴。
第一个候选产品是BRSPACE,SAP的工具。BRSPACE可以处理多数情况,但是它不能对有LONG和LONGRAW类型字段的表进行重组。虽然有LONG和LONGRAW类型字段的表不足5%,但它们是数据库中最大也最忙的表。一旦贝塔斯曼需要重组这些表,就意味着150小时的停机时间。而且,其中两个表已经变得太大,即使是在当年中最长的停机时间也无法完成重组。因此,贝塔斯曼要寻找一个能够处理所有表的工具。
对我们来说一个最重要的标准,就是这个工具必须得到SAP的认证。Bradmark的DBControl Online产品不仅通过了SAP沃尔夫斯堡实验室的综合评测并得到高度评价,而且SAP在英国的打包服务已经决定使用这个产品作Oracle在线重组的打包服务。这使贝塔斯曼对该产品的健壮性有极大的信心,而产品的健壮性无疑是决策过程中最重要的标准。
选择产品的另外一个关键标准是与镜像工具的兼容性,因为镜像工具提供了备份和恢复解决方案。由于镜像工具Libelle依赖重做日志来创建镜像,贝塔斯曼对于选择依赖重做日志做同步的工具比较犹豫,因为这样就不得不做大量的额外测试以保证两个产品之间的兼容性。幸运的是,Bradmark的产品使用Oracle的物化视图进行表的同步,不仅不会与镜像工具冲突,而且这个方法是得到Oracle和SAP认可的。
与Arvato和贝塔斯曼书友会一起,Bradmark在测试环境证实了DBControl Online产品的价值。在标准设置下证明多数数据表做重组的效果很好的同时,有几个有LONGRAW值的大表在标准设置下无法达到最佳性能。贝塔斯曼、Arvato和Bradmark共同调优配置参数,以便为需要重组的表在不同配置下提供最佳性能。
获得的收益
节省存储- DBControl Online产品在测试环境得到了验证,在2005年3月投入生产环境使用。从
那时开始,已经在线重组了很多表。重组在SD、MM、PS、FI、CO等R/3系统的模块上以及我们的BW环境中BW和SEM模块上执行过。虽然所有的重组都会有一些效果,当然对大表来说效果是最明显的。
下表是在我们的SAP R/3系统中使用DBControlOnline重组最初得到的结果:
表名 重组前大小(MB) 重组后大小(MB) 节省 节省百分比
CCITCTS/SRSTRAT 3632 1679 1953 54%
TST03 7800 4560 3240 42%
VBUP 19101 17560 1541 8%
LIPS 74023 75400 -1377 -2%
CE1Z001 35742 16289 19453 54%
VBFS 31992 30449 1543 5%
QMEL 13789 12812 977 7%
ZYYCS_IF_RETURN 2390 664 1726 72%
CCITCTS/OM_RET1 311 97 214 69%
CCITCTS/OMCTR13 742 195 547 74%
S262 14726 8489 6237 42%
VBPA 58007 36440 21567 37%
MSEG 12656 8720 3936 31%
VEDA 3828 3800 28 1%
LIKP 9882 7720 2162 22%
VRPMA 9335 7240 2095 22%
VAPMA 16562 13200 3362 20%
VLPMA 9179 7080 2099 23%
BSIS 12773 10160 2613 20%
Total 336470 262554 73916 22%
虽然重组可以在任何表上进行,贝塔斯曼书友会决定聚焦在超过1GB的表上,这些表大约有300个。由于其他的表被保持不动,经过对这300个表完全重组之后,总共节省的存储是750GB,约是数据库表空间的15%。由于在测试环境中还有一个灾备机,是生产环境的复制品,在所有3个环境中节省的总空间预计是2.2 TB。
终端用户响应时间– 在生产环境中终端用户响应时间的提升是最难了解的,主要是因为很多因素会影响用户响应时间,包括事务数、事务类型、CPU总负荷、网络性能等。在贝塔斯曼的分析中明确指出,相当一部分响应时间消耗在数据库操作上。其中一部分是由于SQL语句的低效,已经进行了调优;另外一个主要的提升是重建了索引。既然DBControl Online的解决方案能在重组过程中重建索引,现在已经用表重组替代了重建索引。由于能够提升性能,我们经常对数据表做重组。在300个表中,有50个表每周重组一次,200个表每月重组一次,50个表每季度重组一次。
为了尝试界定其他参数的影响,在重组关键表的前后,我们各对基于VBFA表的账单进程做了14天的度量并取平均值。重组后,这个表的存储空间需求从139GB减少到110GB。
虽然吞吐量随着帐单的处理而变化,但可以看出,以类似的账单处理数量相对比,在重组之后平均吞吐量提高了50%。这样的结果是缩短了通宵批量处理的时间,处理进度可以按照既定的时间表完成。
正常运行时间的提升– 使用DBControl Online产品做在线重组证明,贝塔斯曼已经将系统和数
据库的正常运行时间从99.2%提高到99.7%。就如他们所感觉的,这是一个很重要的区别,他们已经超越了99.5%这个障碍,使环境真正达到了24×7的运行状态。
IT人力计划的节省– 在线重组的一个明显好处就是节省了IT人员用于宕机时间计划和协调的工作时间。贝塔斯曼估计他们平均花在每次停机重组、通知各方(包括管理、用户、采购合作伙伴等)停机影响以及重新安排既定的批量任务的计划上的时间是6人时。通过在线重组,他们就不再有这些花费了。
结论贝塔斯曼书友会IT主管Torsten Fimmel博士评价到:“我对这个产品的操作方式及有关各方的紧密配合都非常满意。我们在测试的初期有一些性能问题,但是这些问题都在Bradmark团队和
Arvato系统的配合下迅速解决了。今天,我们感觉到拥有了一个非常适合我们的产品,这个产品使我们可以在常规状况下重组,保证数据库紧凑,我们可以在终端用户响应问题影响生产力之前把它们解决掉。DBControl Online使我们可以在不影响最终用户使用和不增加硬件成本的情况下,完成这项工作。”
介绍
在电子商务驱动现代业务应用的设计和需求,高性能和高可用性的数据库计算现已成为服务的标准。这个现代性能标准是与宕机时间的高昂成本相关的。为这种环境开发的管理技术要求在做标 准维护任务时,对系统几乎不能有影响。
在线重组将极大地有助于维护全部数据库的可用性,并且潜在地减少或消除计划中的宕机时间。这反过来将会增加应用的投资回报率(ROI)和降低拥有成本(TCO)。在线重组也将给予管理员空前的便性,在用户完全正常访问数据库的情况下,去修改表的物理属性和更改数据和表的结构。数据库重组的标准方法,是开发完善的操作系统和数据库脚本,来自动化重组或者把它们压缩到一个计划的宕机维护时间里。当然这是通常的方法,有宕机时间、管理和开发的成本。而且,如果这个重组方法失败了,就要等待下一次宕机机会的出现。
通常明智的做法是设置正确的初始表空间,从而避免重组。但是即便是最小心翼翼设置的表,在条件不断变化的情况下,也可能需要修改存储参数来获得最佳的空间利用率。
重组的原因
表及其依存对象,是重组的目标,为了达到空间的最有效利用,避免性能问题,或者适应新的硬
件构架。考虑以下几个情况:
数据存取
数据存取的目的是减少对在线数据空间的需求和通过压缩数据集合来提升应用的性能。单纯的存取不会带来这些好处,重组才是下一个关键的步骤,其目的是实现节省空间和存取过程的性能优化。
大量的存取和删除操作,在数据表段中留下了碎片。即使数据最重要的部分已经被从表中删除了,内部的自由空间也不会被回收到数据库用于其他技术白皮书:DBControl Online 基于Oracle的数据库管理对象。重组可以压缩数据段,回收碎片为数据库空间。
存取之后,表的水位线(HWM)保持不变。完整的表扫描操作,比如报表,仍然要遍历整个表段,即使多数地 方都是空的。重组降低了表的水位线,这样就提升了这些操作的性能,并且获得数据压缩的全部收益。
空间回收
当表空间中的自由空间处于数据稳健的末尾时,数据稳健可以改变大小,自由空间可以回收到操作系统中做为它用。然而,如果自由空间处于表空间的中部,就需要重组来把数据压缩,把自由空间移到数据稳健的末尾。回收自由空间到操作系统,可以使昂贵的磁盘系统获得更高效的利用,并且他延长了购买硬件的生命周期。
表与初始存储参数设计相背离
当表被初始创建时,数据库管理员必须估算下边存储参数。
块空间利用参数
PCTFREE 定义了在一个块中用于在现有行上进行更新的可用空间数量
PCTUSED 设置块上的空间阈值防止更新异常。如果数据块的可用率降低这个参数,这块就会拒绝更新。
INITRANS 定义了一个数据块内部可以并发更新行的初始事务数。
MAXTRANS 定义了一个数据块内部可以并发更新行的最大事务数。
分区分配参数
INITIAL 设置了初始表的分区大小。
NEXT 如果没有应用PCTINCREASE参数,本参数就定义了已分配的表分区大小
MINEXTENTS 表中应该分配的分区最小数目。
MINEXTENTS 表中可以分配的分区最大数目。
PCTINCREASE 第三个和每个连续的分区依赖于混合空间的增量,它等于NEXT参数和
PCTINCREASE值的乘积。
既然上述参数都是在创建表时估算的,它们就易于发生修改。一旦产品数据已经存入表中,关于数据更新大小和频率的真实行为就确定了。通过上述分析,存储参数可以被优化以满足实际性能需求,而优化就需要做重组。
忠于行业的“最佳实践”
从Oracle 8i开始,最佳实践包括本地管理表空间的应用。这考虑到了通过设置标准的大小来实现自动设定所有新分区的大小,以及删除与自由分区分片之间的任何关联。本地方法通过使用位图保留了分区跟踪,而不再需要访问数据字典。通过本地化管理表,可以获得存储,性能和管理的高效率。
除了本地管理表空间以外,避免空间低效使用的第二个方法,是通过设置分区存储参数PCTINCREASE为0,并使INTIAL与NEXT相等来实现的。这是考虑到分配统一的分区和可预见的调整大小需求。
具有相似大小分区的表可以共享一个根据标准分区分配要求设计的表空间。这种分段是考虑到每个表空间上分配相同的分区,依赖于数据表被当成小、中还是大表。
消除行链接和行迁移
行链接的发生,是因为在插入或更新行时,新行比原来的数据块大。当行链接发生时,Oracle把该行的数据分成两部分,以适应现有链中为该段预留的数据块,行链接是数据块大小不兼容造成的综合结果。而行迁移的发生,是当更新行时,它不适应原有的数据块,Oracle把该行迁移到一个新的数据块。Oracle必须把原来的行和包含迁移行的新数据块链接起来。行链接和行迁移都会降低性能,并且潜在浪费数据块空间。
对大表做分区
对大表做分区,将极大地提升表的可管理性,使DBA能够把表和索引分成较小的,独立的单元。它把维护过程(如表分析和在线备份)分成高效的、可管理的子任务。
转换为索引表(IOT)
索引表(IOT)的内容是按照二叉树进行组织的,索引和表是整合到一个数据库对象中,所以它们没有分离存储的需求。索引表可以节省空间,把查询消耗整合到一个对象中,提高基于主键的查询性能。为了获得性能和存储空间的节省,做重组是值得的。
传统重组方法
上述的案例是重组一个表的充分理由,随之而来的是如何权衡重组的潜在负面影响与它所带来的性能好处。传统的重组方法伴随着对一些风险和时间的考虑,这样次要的性能问题就可能被忽略了。传统表重组的一般性原则如下。
离线重组必须策划周详,特别是在许多联机事务处理(OLTP)环境中,维护窗口很小的情况下。任何错误如果不能得到迅速补救,就会带来巨大的经济负担,并对已经安排好的时间计划造成额外的压力。当今的数据库表都很大,并且对可用性要求高,这样产生的一个关键需求就是可以使系统正常工作时间和性能最大化的在线重组能力。
离线重组通常有如下几个步骤:
表空间离线。
用优化的存储参数创建一个新的临时表(TT1)。
删除原始表(T1)。
重命名表(TT1)为(T1)。
重建索引和约束。
重建依赖。
表空间上线。
离线重组一旦在上述过程中发生失败,就需要很长时间才能恢复,特别是在数据已经完全从数据库卸载之后。
在线重组的好处
企业级业务应用必须在任何时区对任何用户都是可用的。如果能够在线做重组,数据流没有中断,就提供了空前的时间优势。多数对SAP及财务环境的服务等级协议要求99.9%的可用时间,只留一个微不足道的维护窗口。由于宕机时间的成本,在线重组就如同在线备份一样有价值。有了在线重组,对表的重组过程就没有时间约束了。
在线重组产品(NORAD DBControl Online)提供
了在事务正常运行时重组表及其相关对象的能
力。这种技术应用包括了以下在线能力:
• 增加、修改、删除索引
• 增加、修改、删除分区及其属性
• 增加、修改、删除子分区
• 对表进行分区和取消分区
• 把非索引表修改为索引表,或者把索引表改
为非索引表
• 根据索引对表进行排序 NORAD DBControl Online提供了一个通过表重组来彻底减少宕机时间的方法。数据表可以在线扩大以帮助达到可用性要求。离线重组方法不能提供满足高可用性标准的高效、容错性强的环境。
在线重组方法
DBControl Online的在线重组和结构调整一般方法如下:
设置阶段
通过在线重组对话框,被改变的表信息可作为模板,用于按照修改过参数的新建数据表。
复制阶段
引入的数据操作语言(DML)综述被记录到日志表中,存储在原始表中的数据被加载到新的重组过的表中。
同步阶段NORAD DBControl Online可以有选择性地把原始表的事务应用到新表中以保持同步,直到主动刷
新和切换阶段开始。主动刷新在切换发生的前一刻把事务应用到重组后的表中。
切换阶段
可以设置几个原则,比如数据表活动的阈值,以控制切换开始时间。切换时,重组后的表取代原始表的身份,原始表可以删除或保留,取决于用户设置。
竞争优势
兼容性 NORAD DBControl Online提供了对Oracle各个版本和特性的广泛支持:
数据库: DBControl Online提供了对Oracle数据库从8.0.5到10.2.0的全面支持。
数据类型: DBControl Online支持LONG和LONG RAW数据类型,而且没有数据长度限制。
基于Oracle技术使
用Oracle自身的技术,使Bradmark具有几个关键优势:
健壮性 产品的体系结构在理念上完全适合事务负载高的大表,在在线重组和结构调整过程中,拥有对ORA-1555: Snapshot tooold”错误的完善保护。
可靠性复制和刷新阶段用到的所有过程是基于Oracle认可的方法和过程,而不是用私有的技术。DBControl Online与Oracle的技术一样可靠。
速度快使用内部触发器而不是外部触发器或重做日志途径,使本产品比竞争产品更快。使用Oracle的复制技术是复制的事务最小化,从而提升了复制的速度和数据库性能开销。
易管理本产品不像某些依赖于重做日志的产品,没有重做日志策略计划的负担,也不会为了适应重组的要求而明显地增大重做日志。这个产品适合于小的回滚段,并且对每个并发的重组只需要一个大的回滚段。
附加的在线功能
集成的告警和分发能力 与Bradmark的Surveillance产品结合使用时,DBControl Online提供了集成的告警机制,它为
DBA提供了重组过程的实施进程反馈。这些告警产生标准的弹出消息、发送Email或SNMP跟踪,发送Tivoli或OpenView的事件,或生成外部脚本。可以生成多种告警和动作,并且可以延时。
在线工作历史 在线工作历史窗口给你查看以前运行的在线工作的能力,这个特性对于将来的重组计划或者估计本次及其他重组的时间很有帮助。
多对象在线重组 DBControl Online提供了选择多个表进行重组的能力。根据期望的性能,你可以重组一个表空间中的所有表,也可以设置同时重组的表数目。
附加的数据库管理功能
除了主要的在线重组和分区管理功能,DBControl Online提供了丰富的数据库管理特性集合,这能减少或消除易错或耗时的任务。
诊断空间是高效使用的吗?有没有性能问题?NORADDBControl的诊断功能可以发现问题,比如浪费空间、行链接等导致数据库性能显著下降,没有做过“Analyze Statistics”命令做统计而导致使
用高成本的优化工具却生成低效的查询计划。分析可以运行于一个表、索引或这个表空间。
表空间地图
表空间地图可以帮助DBA识别对象的错误存储参数,而重组特性可以用来改正和防止空间分配的问题。一旦确认了对象需要重组,NORAD可以重组或重构,通过传统方法或在线方法。
离线重组对传统重组来说,NORAD使用了卸载/加载工具,它驱动Oracle的导入和导出功能,确保所有参考的完整性、权限、索引和相关对象在重组之后完整无缺。当表空间中的多数对象需要重组时,NORAD的表空间重组特性提供了快速的、传统的重组方式。使用NORAD的卸载/加载功能,表空间的所有对象被一次性卸载、删除、重建、加载。DBA可以为任何表空间、表、索引或簇指定新的存储参数。NORAD重建表空间和相关对象,可以立即执行,也可以通过脚本文件,或者设置进度表,在将来某个时间做重组。
趋势分析
趋势分析特性可以帮助数据库管理员确定当前空间利用上的问题,对未来空间的需求做出准确估计并定位出低效索引,从而能提高空间利用效率和性能。为了完成这些,NORAD将Oracle的ANALYZE语句得到的统计量存储在一个基于表的知识库中,并提供了强大的图形界面来图示这些统计量的时间变化曲线。数据库管理员可以用这些统计量作为新存储参数的基础,包括:何时利用对象重组特性去重组对象,确定何时有必要重建或结合索引,确定是否使用了正确的索引类型,或数据库的块大小是否要增加。
模式对象管理NORAD是为满足数据库管理人员的需求而特别设计的工具。它包括用图形化界面管理Oracle环境下的所有模式对象从而降低了管理这些对象的难度。通过为数据库管理员提供图形用户界面来创建、更改和删除模式对象,模式对象管理选项大大降低了数据库管理员必须完全掌握Oracle数据字典语言(DDL)的要求。
模式比较模式比较能很快查明测试环境和生产环境的差异,避免了这些差异影响用户输入数据而导致的可用性问题。模式对象结构的比较,包括识别由于数据类型不同而缺少的列,缺少的约束以及不同的存储参数。初始化文件比较特性可以用来探测那些可能导致可用性或性能问题的参数设置差异。
SQL调优Oracle数据库调优应该是一个整体的方法,它包括调整应用程序和数据库设计,SQL语句,内存分配,I/O以及资源争夺。通过NORAD的SQL调优特性,可以在应用程序开发阶段调优语句,或在测试和生产阶段隔离有问题的语句。
安全管理管理Oracle安全是数据库管理员所面临的最乏味的任务之一。NORAD为管理Oracle数据库提供了一个简单易用的方法来管理数据库安全,除授予和收回系统或对象权限外,还包括创建,更改和删除用户,角色和配置文件。
调度程序
一些数据库管理员的任务是很耗费时间的,所以希望能调度这些任务在非高峰阶段自动运行,这样可以使数据库管理员和数据库的生产力获得极大的收益。灵活的时间调度系统允许管理员立即提交工作或按照按照一个常规的或重复的时间表,比如在每月的某一天或在一个特定的日期。
贝塔斯曼商业案例研究
问题
当你运营一个图书俱乐部的时候,记录你客户订单的数据库就是你商业的生命源泉。如果你是欧洲最大的图书俱乐部,拥有3700万会员,数据库就将非常大非常忙。随着数据的不断增加、修改、删除,在贝塔斯曼书友会心脏位置的SAP系统及其内含的Oracle数据库中有了越来越多的碎片。这些碎片反过来导致性能下降,同时增加了对存储
的需求。在之前的12个月里,书友会把数据库停了12次,来做数据表的重组。每次数据库就要被停掉12至20个小时。即使这些宕机只在周日进行,也意味着电话销售业务不能获得客户采购订单系统所需要的全部信息。随着数据库的增长率以及存档所造成的碎片增加,很明显该公司需要一个产品来执行在线重组。
寻找解决方案
在线重组工具的选择涉及到了多个部分。Arvato系统负责支持和管理数据库服务器,并且将日常使用这个产品,所以要获得他们的采购很重要的。Sun是硬件合作伙伴,已经实施了一套镜像数据库解决方案,很重要的一点是要确保任何重组产品都不能与这个镜像功能冲突。在寻找适合的产品同时,贝塔斯曼书友会也需要找到一个能对相关不同组织提供多级支持的合作伙伴。
第一个候选产品是BRSPACE,SAP的工具。BRSPACE可以处理多数情况,但是它不能对有LONG和LONGRAW类型字段的表进行重组。虽然有LONG和LONGRAW类型字段的表不足5%,但它们是数据库中最大也最忙的表。一旦贝塔斯曼需要重组这些表,就意味着150小时的停机时间。而且,其中两个表已经变得太大,即使是在当年中最长的停机时间也无法完成重组。因此,贝塔斯曼要寻找一个能够处理所有表的工具。
对我们来说一个最重要的标准,就是这个工具必须得到SAP的认证。Bradmark的DBControl Online产品不仅通过了SAP沃尔夫斯堡实验室的综合评测并得到高度评价,而且SAP在英国的打包服务已经决定使用这个产品作Oracle在线重组的打包服务。这使贝塔斯曼对该产品的健壮性有极大的信心,而产品的健壮性无疑是决策过程中最重要的标准。
选择产品的另外一个关键标准是与镜像工具的兼容性,因为镜像工具提供了备份和恢复解决方案。由于镜像工具Libelle依赖重做日志来创建镜像,贝塔斯曼对于选择依赖重做日志做同步的工具比较犹豫,因为这样就不得不做大量的额外测试以保证两个产品之间的兼容性。幸运的是,Bradmark的产品使用Oracle的物化视图进行表的同步,不仅不会与镜像工具冲突,而且这个方法是得到Oracle和SAP认可的。
与Arvato和贝塔斯曼书友会一起,Bradmark在测试环境证实了DBControl Online产品的价值。在标准设置下证明多数数据表做重组的效果很好的同时,有几个有LONGRAW值的大表在标准设置下无法达到最佳性能。贝塔斯曼、Arvato和Bradmark共同调优配置参数,以便为需要重组的表在不同配置下提供最佳性能。
获得的收益
节省存储- DBControl Online产品在测试环境得到了验证,在2005年3月投入生产环境使用。从
那时开始,已经在线重组了很多表。重组在SD、MM、PS、FI、CO等R/3系统的模块上以及我们的BW环境中BW和SEM模块上执行过。虽然所有的重组都会有一些效果,当然对大表来说效果是最明显的。
下表是在我们的SAP R/3系统中使用DBControlOnline重组最初得到的结果:
表名 重组前大小(MB) 重组后大小(MB) 节省 节省百分比
CCITCTS/SRSTRAT 3632 1679 1953 54%
TST03 7800 4560 3240 42%
VBUP 19101 17560 1541 8%
LIPS 74023 75400 -1377 -2%
CE1Z001 35742 16289 19453 54%
VBFS 31992 30449 1543 5%
QMEL 13789 12812 977 7%
ZYYCS_IF_RETURN 2390 664 1726 72%
CCITCTS/OM_RET1 311 97 214 69%
CCITCTS/OMCTR13 742 195 547 74%
S262 14726 8489 6237 42%
VBPA 58007 36440 21567 37%
MSEG 12656 8720 3936 31%
VEDA 3828 3800 28 1%
LIKP 9882 7720 2162 22%
VRPMA 9335 7240 2095 22%
VAPMA 16562 13200 3362 20%
VLPMA 9179 7080 2099 23%
BSIS 12773 10160 2613 20%
Total 336470 262554 73916 22%
虽然重组可以在任何表上进行,贝塔斯曼书友会决定聚焦在超过1GB的表上,这些表大约有300个。由于其他的表被保持不动,经过对这300个表完全重组之后,总共节省的存储是750GB,约是数据库表空间的15%。由于在测试环境中还有一个灾备机,是生产环境的复制品,在所有3个环境中节省的总空间预计是2.2 TB。
终端用户响应时间– 在生产环境中终端用户响应时间的提升是最难了解的,主要是因为很多因素会影响用户响应时间,包括事务数、事务类型、CPU总负荷、网络性能等。在贝塔斯曼的分析中明确指出,相当一部分响应时间消耗在数据库操作上。其中一部分是由于SQL语句的低效,已经进行了调优;另外一个主要的提升是重建了索引。既然DBControl Online的解决方案能在重组过程中重建索引,现在已经用表重组替代了重建索引。由于能够提升性能,我们经常对数据表做重组。在300个表中,有50个表每周重组一次,200个表每月重组一次,50个表每季度重组一次。
为了尝试界定其他参数的影响,在重组关键表的前后,我们各对基于VBFA表的账单进程做了14天的度量并取平均值。重组后,这个表的存储空间需求从139GB减少到110GB。
虽然吞吐量随着帐单的处理而变化,但可以看出,以类似的账单处理数量相对比,在重组之后平均吞吐量提高了50%。这样的结果是缩短了通宵批量处理的时间,处理进度可以按照既定的时间表完成。
正常运行时间的提升– 使用DBControl Online产品做在线重组证明,贝塔斯曼已经将系统和数
据库的正常运行时间从99.2%提高到99.7%。就如他们所感觉的,这是一个很重要的区别,他们已经超越了99.5%这个障碍,使环境真正达到了24×7的运行状态。
IT人力计划的节省– 在线重组的一个明显好处就是节省了IT人员用于宕机时间计划和协调的工作时间。贝塔斯曼估计他们平均花在每次停机重组、通知各方(包括管理、用户、采购合作伙伴等)停机影响以及重新安排既定的批量任务的计划上的时间是6人时。通过在线重组,他们就不再有这些花费了。
结论贝塔斯曼书友会IT主管Torsten Fimmel博士评价到:“我对这个产品的操作方式及有关各方的紧密配合都非常满意。我们在测试的初期有一些性能问题,但是这些问题都在Bradmark团队和
Arvato系统的配合下迅速解决了。今天,我们感觉到拥有了一个非常适合我们的产品,这个产品使我们可以在常规状况下重组,保证数据库紧凑,我们可以在终端用户响应问题影响生产力之前把它们解决掉。DBControl Online使我们可以在不影响最终用户使用和不增加硬件成本的情况下,完成这项工作。”
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7178747/viewspace-160912/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7178747/viewspace-160912/
本文介绍了一种在线数据库重组技术,旨在提升现代电子商务环境下的数据库性能和可用性。通过在线重组,可在不停机的情况下优化数据库表结构,提高数据存储效率和查询速度,尤其适用于大型数据库。案例研究表明,采用在线重组技术后,存储空间显著节省,终端用户响应时间缩短,系统正常运行时间提升。


被折叠的 条评论
为什么被折叠?



