当前位置:Linux教程 - Oracle - 管理Oracle9i:DBA袖珍指南

管理Oracle9i:DBA袖珍指南



         管理Oracle9i:DBA袖珍指南
    作者:Liz Cully、Tome Haunert

    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)情形,也可以直接查询数据库,你将确切地看到不同大小的缓冲区究竟会有什么样的内存性能。这样,就可以根据数据库对性能的模拟,马上将缓冲区设置为最优大小,” Oracle的Kane说。


    新的缓冲区报告提供了帮助调整缓冲区的信息。


    Oracle9i版本2中将增加库缓冲报告(Library Cache Advisory)和程序全局区域(PGA)报告(Program Global Area Advisory)等新技术。库缓冲报告将帮助DBA决定库缓冲区的大小以达到期望的数据传递速度。而PGA报告将帮助你有效地设置PGA的大小。图表和假设分析提供设定大小建议,缩短做出这些决定所花费的时间。这三个报告可以使你做动态改变,而不再需要关闭数据库、改变参数、再重新启动。

    调整向导:Oracle9i为Oracle 数据库的调整向导增加了一些虚拟功能。例如,如果你想知道是否应该为一个表建立索引,你可以利用向导创建一个虚构索引,询问优化器性能提高情况如何,以及它会选择何种新的访问途径。

    诊断程序包:诊断程序包(Diagnostics Pack)中的性能概述图表使用内置智能对数据库做完全的“健康”检查,也就是说,查看数据库的运行情况如何。图表分为三个主要资源组:CPU、I/O和内存。在这些目录下,可以看到占用大部分CPU、大部分I/O或大部分内存的会话。此工具还提供钻取功能来帮助诊断问题。

    诊断程序包的屏幕显示标识哪里可能存在问题,或者哪里已经发生问题,提示你深层次检查它们,并提供可能的解决方案以削弱问题的危害,从而使数据库更有效地运行。

    自动的SQL运行内存管理:Oracle9i自动为SQL语句合理分配内存。Kumar解释说:“例如,如果一个数据库正在运行多个会话,此时,另有5MB的内存可资利用,数据库决定哪个会话应该得到这一额外内存。如果数据库检测到有一个长时运行的操作(例如,没有这5MB内存,此操作需运行40分钟,有了这5MB内存,则只需要运行35分钟),与此同时,还有一些操作如果没有这5MB内存可能需要运行大约5分钟,而有了这些内存,只需要不到1秒的时间。数据库立即做出判断:这5MB内存用于何处可以最显著地提高性能,并恰当地分配内存。”

    可恢复(Resumable)操作:另一节时功能是可恢复操作。过去,在加载一大批文件时,如果是在过程中间或快结束时发现了一个错误,你都必须查明已经向数据库中成功地输入了多少数据,然后撤消所有的事务处理,找到错误并改正错误,最后重新开始整个过程。可恢复操作允许在事务中没有产生错误的地方停止然后恢复操作。数据库自动检测空间错误并通知管理员。如果一个批处理需要增加段或表空间,可恢复空间管理(见第1节)允许你将它挂起、分配更多的空间,然后再从中断处恢复工作。这样将大大减少因盘区耗尽或增添表空间而引起的空间管理错误。

    “我们都碰到过这样的事情,” Bertoldi说,“查询已经完成了大约90%,表空间或是回滚段没有空间了。这一新特性为DBA提供了一个功能强大的方法用以检测空间,并可能自动为耗尽的段增加额外的空间。这一特性位于数据库内部,独立于其他任何外部调整工具。”

    使用外部文件:大多数静态数据库的数据不是经常更新,而是有规律地定期更新。可以使用外部文件来存贮信息。你不必将大量的数据加载到数据库中的数据文件中,可以使用可查询的平面文件来减小总开销,并保持数据可用(参见2001年9月刊的“用最新的武器装备自己”一文)。

    改进的LogMiner:LogMiner是恢复、调整和容量计划的一个有用工具。但在过去,这个工具有些神秘,还有点乏味。Oracle9i的GUI允许你在数据库中诊断过去的错误或问题,而不需深入了解那些陈旧的语法。如果数据库过去发生了一个错误,可以使用LogMiner来检查问题出现在哪里。


    诊断性能概述(Diagnostics Performance Overview)提供了关于CPU、内存及磁盘I/O“健康”状况的信息。


    回闪查询(Flashback Query):回闪查询也是Oracle9i的新特性。你可以使用它来检查数据库的当前问题和错误。回闪查询可以查询数据库的过去状态而不必回滚事务。在Oracle9i之前的版本中,如果需要检查一个特定的错误,你必须在物理上将数据库返回到发生错误的那一时间点。并且,在诊断过程中,所有的数据库对象都被锁定。有了回闪查询,在研究错误时,可以继续运行数据库。所有对象都保持联机而不必锁定。这一过程对终端用户是透明的,并不影响他们的事务处理。

    “我可以使用回闪查询解决一些问题,” GERS的Miller说,“我们总有一些高级用户,他们希望进入数据库并通过现行的SPL*PLUS提示来处理信息。像其他人一样,他们偶尔也会忘记诸如WHERE语句之类的一些事情,从而使更新(UPDATE)或删除(DELETE)的范围远大于他们所希望的。这种仅通过调整查询时间就能够及时返回以重新捕获信息的能力实在太灵巧了。”

    监控索引的用法:Oracle8i中没有简单、标准的方法来查看索引的用法。如果一个应用软件几年都没有使用某个特定的索引,你很可能不知道它。Oracle9i的V$OBJECT_USAGE视图允许DBA查看索引的用法,并删除那些占用空间、增加DML操作的索引。(参见1月刊的“用Oracle9i整理索引”)。

    第四部分 扩充数据库
    除了利用Oracle9i在传统管理与调整任务方面的改进之外,Oracle9i DBA们还应该知道如何使用一些极大地扩展了该数据库核心功能的新特性。Oracle9i的新特性改进了数据库操作,允许DBA通过SQL存贮XML、将传统数据库数据转换为XML等等。 “Oracle9i有几个基于XML的PL/SQL包,它们允许你使用该数据类型进行很多操作,”芝加哥技术咨询公司TUSC的总裁--Joe Trezzo解释道,“随着XML的广泛使用,能够将这些对象存入数据库并进行处理是一个很大的进步。”

    管理MTTR:所有的DBA都非常清楚尽可能降低平均恢复时间(mean time to recovery,MTTR)的重要性。“如果你有一些对停机时间和不可用性的业务规则或某种特定容许标准,可以将这些程序输入到数据库中,”Oracle的Kane解释道,“这样,如果有一个实例失败了,你可以告诉数据库你需要在两分钟或时间段内备份完毕。数据库将自我设置以确保达到你所设置的商业可用性标准。”

    通过设置init.ora的参数fast_start_mttr_target并找到同数据库相关的数字,就可以减少数据库在紧急状态下的停机时间。

    第五部分 管理整个企业


    最后要说说Oracle企业管理器(Oracle Enterprise Manager,OEM)。过去的版本中,OEM已作为可选项出现。在Oracle9i中,购买数据库时,OEM作为标准组件提供。

    举一个例子,数据库管理员Reilley现在计划使用OEM。“OEM的几乎所有新特性都是可控制的,同时也具有控制Oracle9i应用服务器(Oracle9i Application Server,Oracle9iAS)的功能,”他说,“所以,有了OEM,我可以通过一个单一的控制台来管理Oracle数据库和Oracle9iAS。”

    更新后的GUI将OEM定位为控制数据库的一个中心点,允许DBA们根据需要钻取到控制细节。它将DBA们从办公桌旁解放出来。加利福尼亚州 卡尔斯巴德市Dot Hill Systems公司的软件工程师--Krish Venkatesh对此功能非常感兴趣。“现在,当我旅行时,我可以在任何地方控制数据库,”他说。

    后续更多内容:这里所概述的Oracle9i在可管理性方面的改进,只是Oracle力求将DBA们日常的费时任务中解脱出来的一个开端。即将发行的Oracle数据库版本将显著地提高其自调整和自管理能力,使DBA们能够将精力集中于战略性业务问题上。

    Liz Cully ([email protected]) 是一个作家,同时也是一个Oracle认证专家,他住在纽约的萨洛港(Sag Harbor)。
    发布人:fei 来自: