Oracle9i数据库的功能比Oracle8i更强大吗?绝对是的。它还更易于使用。Oracle服务器部门的一个小组负责人Valerie Kane说:“我们抽调了大批从事最乏味、最费时任务的数据库管理员,使他们集中精力投入到Oracle9i的开发活动中。”结果开发了一个在一些领域中几乎能够自我管理的数据库服务器。管理数据库的一些方法已经发生改变,下面是这些方法的一个快速指南,以及数据库管理员们用心写下的Oracle9i关键特性的概述。
第一部分 使常规任务自动化
认识到常规任务对于DBA们是非常费时后,Oracle在Oracle9i中将主要精力集中于简化这些任务的管理上。Scott Gossett是Oracle University的一位老师,他说:“对于一般的DBA,诸如日常盘区管理、恢复数据库、管理内存空间,以及解决数据库运行速度过慢之类的日常任务会占去其25%到30%的时间。Oracle9i能够使很多此类任务自动化,这不仅节省了DBA的时间,也减少了产生手工错误的可能性。”得到改进的领域包括:
扩展数据文件:在该数据库的以前版本中,DBA们必须为盘区(extent)指定正确的大小。 Thinkspark公司是位于德克萨斯州Austin市的一家咨询培训公司和软件提供商,Steve Bertoldi是该公司的一位教师,他说:“盘区管理占大多数DBA工作量的一大部分,它是必须做的,但又很费时。其形式有:用完了表空间留给数据段或临时段的空间,用完“回滚”(rollback)空间,或者尝试设置正确的盘区大小。大多数数据库都没有正确指定盘区大小,或者没有使用合适的本地管理的表空间。现在,Oracle9i提供了Resumable Space Management(可恢复空间管理)功能,大大简化了空间管理问题。”相关链接
Oracle9i数据库
www.oracle.com/oramag/mar02/index.html?oracle9i.html
Oracle文档
www.oracle.com/oramag/mar02/9idoc.html
Oracle9i 课程
www.oracle.com/oramag/mar02/edu.html
管理Undo(Rollback)段:在Oracle8i及以前版本中,由DBA来计划和管理Undo(撤销,以前称为“rollback”)段的数目和大小,以及事务的大小是否需要额外的临时“回滚”(rollback)段。Oracle9i提供自动化的“撤消”管理,因此,DBA只需将创建“撤消”表空间的可用空间以及查询的一般大小输入数据库中,数据库就能决定如何最好地管理这一过程。所涉及到的新的关键init.ora参数是undo_management和undo_retention。
加利弗尼亚州萨克拉曼多(Sacramento)市加利弗尼亚运输部的Oracle数据库管理员Jim Reilley说:“在Oracle9i之前,我必须确保有足够数量的大小正确的“回滚”段,以避免因面向变化的事务处理而产生的 ‘覆盖错误。这类事务会导致重写已变块(-1555号错误)。在Oracle9i中,使用自动撤消,并恰当地设置undo_retention就可以避免绝大多数的-1555号错误,这是很令人兴奋的。”
管理大型查询:资源管理器(Resource Manager)是一个分配和维护数据库资源的软件包,其智能性在Oracle9i中得到了增强。它可以自动检测长时间运行的操作、测量后台资源消耗以防止需要大量内存的查询中断OLTP操作。例如,DBA可以设置资源管理器,将任何运行时间达到一特定值(如5分钟)的查询自动归入低优先级组。Oracle9i 高级产品经理Sushil Kumar 说:“这一特性可以降低多个大型事务耗尽全部可用内存的潜在危险,而不需要DBA不断地监控哪一个事务正在占用大量资源。”
Oracle9i还改进了基于成本的优化器,使DBA能够进行系统统计并使用统计结果生成最优计划,使得SQL语句调整变得更容易。其他一些改进,诸如分解的查询功能和分组设置,考虑到了更精确的SQL语句和处理。
管理操作系统文件:在以前的Oracle数据库版本中,数据库不能自动创建和删除计算机中的数据库文件。Oracle管理文件(Oracle Managed Files,OMF)是Oracle9i的新增功能,可以自动管理与数据库相关的操作系统(OS)文件。如果一个数据库对象需要的系统文件不存在,OMF会创建该文件。与此类似,如果一个数据库对象被撤消后,它所对应的系统文件便不再需要,OMF会删除该文件。Kumar说:“另外,如果因为某些原因,CREATE(创建)操作失败了,Oracle9i会自动删除未完全创建的文件。所有这些以前需要手工去做的事情现在都可以自动处理了。”
位于圣地亚哥的GERS是为零售商提供电子商务应用软件的供应商。它的系统开发经理Steve Miller,计划使用OMF。他说:“我们这个团队的任务之一是监控和管理所有内部开发和质量保证数据库,其中包括对数据文件的管理--数据文件创建于何处。有时,我们中会有人在错误的地方创建数据文件,我们用来进行备份的软件可能会漏掉这些文件。所以,能够指明这些数据文件的创建位置并保证这些位置总是处于使用状态,为DBA提供了很大的方便。”
第二部分 减少停机时间
各公司用来衡量其数据库(及其数据库管理员)成绩的方法之一就是看其正常工作时间和停机时间的比例。显然,正常工作时间所占比例越大,数据库就越具价值。
据Oracle9i产品营销经理Willie Hardie说,Oracle在Oracle9i中对降低计划停机时间做了优先考虑。他说:“我们知道,当今的世界是无法承受数据库瘫痪的损失的。所以,我们对可能导致DBA使其Oracle数据库瘫痪的所有事情都备加关注,哪怕只是几分钟。”
其结果是产生了一大批新特性和改进,这些特性和改进使DBA可以做一些联机改变和动态改变。而以前这些改变可能需要关闭数据库并使其脱机。Hardie说:“保持系统运转所节省下来的时间不可估价的。另外,DBA不必再将下班时间和周末时间花费在这些日常维护上。”
联机修改参数:Oracle9i中一个大的改动是关于维护数据库启动时所用参数的。在Oracle8i及以前的版本中,数据库从init.ora文件的本地拷贝中读取参数。Oracle9i中的新文件是一个驻留在服务器端的二进制文件--SPFILE。你可以使用ALTER SYSTEM命令来改变SPFILE中的值;也可以使这些改变马上生效而不必关闭机器;还可以指定这些改变是暂时的,还是永久的(即,当该实例关闭后,这些改变是否仍然有效)。SPFILE一个很大的优点是允许动态重新分配空间,包括改变块的大小。
联机重组表:另一个新的选项是不需脱机就可以对表进行重组。可以在实例联机时,改变表的排序或因空间原因对其进行重组。Oracle9i甚至允许联机修改表定义模式和元数据。
Thinkspark公司的Bertoldi提供了一个关于这种联机重组功能什么时候有用的例子。“当一个模型或应用程序从测试环境转为正式产品时,所有的错误都应该已经解决,”他解释道,“不幸的是,事实并不总是如此。能够联机修改表的能力可以大幅度地降低动态修改数据模式的开销。因为这些操作可以联机执行,所以也缩短了数据库的总停机时间。”
使备用数据库自动化:在Oracle9i之前,DBA维护备用数据库时有几种方法可供选择,但很多步骤是手工的,并且其过程并不完美。为使数据保护更为全面,Oracle在Oracle8i中引入了Data Guard,并在Oracle9i中做了很大改进。Data Guard是比以前所提供的备用数据库更为完备的数据保护和恢复功能。“在Oracle9i中,” Kumar解释道,“Data Guard自动管理和监控备用数据库。使用简单的命令就可以执行复杂的操作,例如,创建备用数据库、进行切换或故障恢复等。它是一个全面的管理框架,不仅在任何时候都能监测备用数据库,还可以使所有的复杂任务简单化。”
“现在只有一个单一的控制点可以让DBA们控制和改变数据库,” Oracle的Hardie补充说,“这意味着你不必再进行创建备用数据库、对之进行设置、将其连到主数据库、激活备用数据库等等这些手工步骤。”
“你可以设置Oracle9i使主数据库与备用数据库之间没有偏差,”Oracle University的Gossett说,“当你在主数据库中做了改变,并提交后,这些改变也会被提交到备用数据库的一个日志文件中。设想一个股票交易或类似的操作,在这类事情中,你希望确保能在另一个地方得到所有交易的完整拷贝--这种功能当然是非常有价值的。”
恢复数据库:在Oracle8i及以前的版本中,恢复管理器(Recovery Manager,RMAN)要求你为每个restore和recover操作输入管道设置信息--例如:
{run allocate channel... setlimit channel... backup format...
release channel... }
Oracle9i中的恢复管理器支持永久的配置信息,简化了restore和recover操作,现在的命令非常简单,如下所示:
restore database; recover database;
第三部分 调整性能
在对DBA们的时间要求方面,性能调整(调节参数、SGA存贮器、缓冲冲突比)对于日常维护仅处于第二位。因为每个数据库都是以不同的优先级运行的,所以每个数据库都将从不同的调整安排中受益。Oracle9i中,极大地改进了内置智能系统,它可以分析数据库结构和性能需要,还可对特定数据库的要求建议如何最佳优化空间和参数。
“对于DBA来说,有些事情几乎不可能在外部完成,” Oracle的Kumar说,“因为从外部不可能看到这类事情的细节。而另一方面,由于提高了服务器的统计和计算能力,它便可以为你决定这类小事情。”
使用报告:使用Oracle9i的缓冲存储报告(Buffer Cache Advisory),数据库可以实际监测缓冲区并提供关于如何更好地调整它的信息。“所以,如果你想知道通过改变缓冲区大小能否得到最大性能改善,而不想采用反复试验的方法--改变缓冲区大小,看看效果,再改变,再观察--那么,你可以用GUI工具得到假设分析(what-if)情形