免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2144 | 回复: 0
打印 上一主题 下一主题

ORACLE数据库在线重组解决方案 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-05 08:55 |只看该作者 |倒序浏览
追随行业“最佳实践”
从Oracle 8i开始,最佳实践包括使用本地管理表空间。这可以保证所有的新区自动具有标准大小,而不用考虑任何清除区碎片的问题。本地管理的方法通过使用位图来跟踪区,因而不需要访问数据字典。通过本地管理的表,可以获得存储、性能、和管理效率的提升。
除了使用本地管理表之外,防止低效使用空间的第二个方法可以通过设定区存储参数PCTINCREASE=0,同时设定INITIAL和NEXT两个参数相等来实现。这样可以分配大小均匀的区,并能预测空间的大小要求。拥有相同大小的区的表可以共享一个被设计来用于标准区分配要求的表空间。这种隔离可以根据表是小型的、中型的、或者大型的,从而对使用的各个表空间分配相同大小的区。
消除行链接和行迁移
在插入或者更新一行,且行的大小变得比原始的数据块大小更大时,会出现行链接。在这种情况下,Oracle分割该行的数据并把数据链接存储在为该段预留的一串数据块中。行链接是源于数据块大小不兼容所导致的复杂结果。
当更新已有的一行,但更新后的行不能保存在原来的数据块时,出现行迁移。Oracle将该行迁移到一个新块上去。 Oracle必须在原始行和包含迁移行的新块之间建立链接。行链接和行迁移都会降低性能并浪费数据库空间。
对大型表分区
对大型表分区使得数据库管理员能够把表和索引,分成较小的独立单元,这可以极大地提高表的易管理性并平衡I/O。相应地这使得维护过程如对表的分析和在线备份,也被分解为有效的可管理的任务。
转换成索引组织表(IOT)
索引组织表(IOT)是其内容按照B-树索引进行组织的表。索引和表没有分别的存储要求,故而它们合并成一个数据库对象。索引组织表可以节省空间、并只用查询一个数据库对象、并提高基于主键的查询性能。性能增益和节省的存储空间使得数据库重组是值得的。
系统体系结构的变化
如果系统由于I/O出现性能问题,则系统的体系结构可能会改变,考虑添加更多硬盘,均衡数据负载的分布。当出现这种情况时,表和相关对象必须从热点区域移动到一个新的物理磁盘。在线的数据库重组提供了一种高效的、节省时间的方法,来将数据转移到新的磁盘设备上。
传统的数据库重组方法
上面所举的所有例子都是对一个表进行数据库重组的无可非议的理由。当数据库重组可能带来的负面影响与从中获得的性能优势进行比较时,就需要进行权衡。传统的数据库重组方法会伴随着一些风险和时间上的考虑,这种情况下小的性能问题会被忽略。传统的数据库重组的一般方法如下所示。
传统的数据库重组阶段 让表空间离线。 使用优化的存储参数创建一个新的临时表(TT1)。 将原始表(T1)中数据复制到临时表(TT1)中。删除原始表。 将(TT1)重命名为(T1)。重新创建索引,并应用约束。重新创建依赖关系。 让表空间在线。
离线的数据库重组必须谨慎协调,尤其是在绝大多数OLTP环境中,维护的时间窗口通常都很小。任何错误如果不能迅速补救,都会造成巨大的财产损失,这同时也对本来就已经严格控制的时间窗口增添了额外的压力。
今天,有大型表和高可用性要求的数据库,为了最大化正常运行时间和性能,对在线的数据库重组能力产生了极大的需求。

在线数据库重组的好处
企业级的商业应用程序必须对位于各个时区的全体用户可用。由于能够在线地执行大多数数据库重组任务,没有中断数据流,这提供了空前的时间优势。大多数用于ASP和金融环境的服务级别协议都要求99.9%的正常运行时间,从而只有极其短暂的维护窗口。
非常昂贵的停机时间成本使得在线的数据库重组是和在线备份一样有价值的服务。有了在线的数据库重组,进行数据库重组时就不用再考虑时间限制。
NORAD DBControl Online数据库控制在线提供了业务能力,可以在事务运行的同时,对表及其相应对象进行数据库重组。该技术的应用包括如下在线功能:
􀀹 插入、重命名、重排序、或者删除表列
􀀹 添加、修改、以及删除约束(非主键)
􀀹 指定约束索引存储参数
􀀹 计划结构变化
􀀹 添加、修改、和删除索引
􀀹 添加、修改、和删除分区及其相应属性
􀀹 添加、修改、和删除子分区
􀀹 对表进行分区和反分区
􀀹 将普通堆表修改为索引表,或者反之
NORAD DBControl Online数据库控制在线提供了一种方法,可以极大地减少与表的数据库重组相关的停机时间。表可以被在线重组,以帮助达到可用性要求。离线数据库重组的标准方法无法提供有效容错的环境,来达到高可用性标准的要求。
在线数据库重组的方法
通常,用于在线的数据库重组和结构变化的DBControl Online方法如下所示。
设置阶段
通过适当的在线数据库重组(Online Reorganization)或者在线结构变化(Online Structural Change)对话框,使用被重组表的信息作模板,利用修改后的参数创建一个新表。
复制阶段
针对被重组表的DML语句被记录在一个日志表中,原来已经存在于原始表中的数据被载入到刚创建的重组表中。
同步阶段
NORAD 数据库控制在线(NORAD DBControl Online)会不断的应用事务(可选),来保持原始表和新建的重组表同步,直到主动刷新或切换阶段开始。
在切换之前,主动刷新会一次性地直接对新建的重组表应用所有未应用的事务。
切换阶段
可以设置多个条件,如对表上的活动状态设置一个阈值,来控制切换什么时候开始。当切换时,新建的重组表取代原始表的标识,而原始表则被删除(可选)。

个案研究
为了展示在线数据库重组的好处,创建一个表,该表有很大数目的插入行,并执行SQL语句计算行数,同时测量所耗时间,确定表的大小。接下来,很多行被删除,再次执行SQL语句计算行数,同时测量所耗时间。最后,该表会被在线数据库重组,最后计算行数并测量所耗时间,从而演示出相应的性能提高。
当数据最初被输入到TEST2中时,它包含2351526行,占据405168K空间。使用COUNT函数,强制进行一次完整的表扫描,给出表中行的小结。
SELECT COUNT(EMPNO)
FROM NORAD.TEST2;
COUNT(EMPNO)
2351526
Elapsed: 00:00:50.62
接下来,删除块中的行,在表中留出“间隙”
DELETE FROM NORAD.TEST2
WHERE EMPNO BETWEEN 499999 AND 1000001
OR EMPNO BETWEEN 1499999 AND 2000001;
1000000 ROWS DELETED
Elapsed: 00:04:86.02
进行第二次完整的表扫描
SELECT COUNT(EMPNO)
FROM NORAD.TEST2;
COUNT(EMPNO)
1351526
Elapsed: 00:00:48.45

这二者的时间差别很小,这是因为就Oracle 而言,表中的空间仍然是填充到高
水位,表的大小仍然为405232KB。需要对表进行数据库重组,以释放空块、缩
短表、加速性能。这是一个演示在线数据库重组的好处的最基本示例。使用
NORAD DBControl Online,在有事务在表TEST2 上运行时,对表TEST2 使用完
全相同的存储参数进行数据库重组。表的大小被减少到218400KB,释放了未用
的块,性能提升如下所示。
SELECT COUNT(EMPNO)
FROM NORAD.TEST2;
COUNT(EMPNO)
1354467
Elapsed: 00:00:20.03
所展示的好处:
􀂋 查询速度比原始表有60%的提升
􀂋 表的大小减小46%
􀂋 由于是在线的数据库重组,节省了开销和时间
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP