Concept-第14章翻译

14、管理

Oracle数据库 10g 在向数据库自动管理的趋势方面代表一个主要的里程碑。它使许多常规的管理工作自动化,并且在一定程度上使关键DBA的功能简单化,比如:性能诊断,SQL调优,以及内存管理。它也通过带有潜在好处的特定的推荐提供一些顾问来指导DBA。甚至,当一个问题被预先主动地发现时oracle数据库 10g 会潜在提前发送警告,因此帮助了预先主动地管理数据库而不是被动地管理数据库。

这篇文章包含下面的主题:

*安装oracle数据库和使数据库启动

*智能的下部结构

*性能诊断和发现并修改故障

*应用程序和SQL优化

*内存管理

*空间管理

*存储管理

*备份和恢复

*配置管理

*工作负荷管理

*自动的存储管理

*任务调度程序

 

安装oracle数据库和使数据库启动

Oracle通用安装是一个图形用户界面来安装oracle软件。它所有的安装任务都自动化,执行全面的首要必须的检查(比如:操作系统版本,软件包以及容量),安装被选的组件以及执行安装之后的配置。

安装进程是一个独立的来自动地为常规的监控和管理建立需要的基础下部组织。企业管理数据库管理控制台是自动地被配置好来让你不需要任何手动配置来使数据库管理任务启动起来。企业管理数据库控制台提供所有基本的功能性来管理单独的一个数据库,包括警告信息,任务调度,以及软件管理。除此之后,所有的oracle服务组件比如数据库,监听器,管理框架等等被配置好为了能够自动启动和关闭数据库。

 

简单的数据库创建

数据库创建助手DBCA是一个专用来数据库创建的图形用户界面(GUI)工具。这个工具让你创建数据库的所有配置,使所创建的数据库成为一个独立的数据库,一个RAC数据库,或者是一个备份库。在数据库创建的过程中,DBCA指导你设置一个自动地基于磁盘的备份然后如果可能的话,使用(Lightweight Directory Access Protocol )轻量级目录访问协议服务来注册数据库。使用DBCA所创建的数据库是完全被安装好并且为各个方面的使用已经做好准备。

 

实例客户端

实例客户端是一个为一个整个数据库应用程序配置OCIOCCIJDBC-OCI,或者是ODBC驱动的最简单的方法。在一个小的文件集合中实例客户端提供必要的oracle客户端库。安装很容易,就只要将一些共享库复制到指定客户端电脑中的一个文件夹中。如果文件夹通过操作系统路径变量(比如:LD_LIBRARY_PATH或者PATH实例客户端)是可以访问的,然后应用程序将会以实例客户端模式来操作。实例客户端部署不需要ORACLE_HOME环境,也不需要整个oracle客户端安装所提供的大量代码和数据文件,因此大大减少了客户端应用程序的磁盘空间的需求量。当将使用实例客户端配置的应用程序和运行在整个oracle_home环境下的同样的应用程序在功能上和性能上比较前者是没有损失的。

 

自动升级

使用数据库升级助手(DBUA),你可以升级任何数据库配置,包括RAC和备份库,就象回答一些简单的问题一样。它将自动地检查有足够的资源是可获取的,确保遵循作好的习惯比如在升级过程之前备份下数据库,替换陈旧和已经被取消掉的初始参数等等,以及验证核实操作的成功完成。

升级过程是可以重新开始的,允许升级过程从中断点自动地重新开始。你也会得到升级所需要花费的时间的一个估算值。

 

基础的初始参数

Oracle数据库提供大量的初始参数为了能够在不同的环境下优化数据库的操作。只有这些参数的一些需要明确地被设置好,因为在大多数案例中默认值足够了。

大约有30个基础参数。剩余的参数被保护用来允许DBA专家手动调整以适应数据库的行为来满足没有压倒性的行为的独特需求。

 

数据加载,传输和归档

数据泵使数据和元数据从一个oracle数据库到另一个oracle数据库的加载和卸载有更快的速度。对于最大的吞吐量数据泵自动地管理数据加载和卸载成倍增长的流和并发的流并且同时确定流操作的每个点时间。

可传输的表空间让你快速地在oracle数据库之间移动。这个比执行同样数据的导入/导出或者加载/卸载操作要快地多,因为传输表空间只需要数据库文件和集成表空间结构信息的复制。你也可以使用传输表空间来移动索引数据,因此当导入数据或者加载数据时,为了避免索引重建你不得不使用传输表空间来移动索引数据。

数据泵功能和跨平台传输表空间的特征为移动数据进出数据库提供了一个强大的简单的使用方法,也是一个高性能的工具。

 

智能基础结构

Oracle数据库有一个复杂的自我管理基础结构,这个基础结构允许数据库了解自身情况并且这些信息来调整工作负荷的变化或者自动地修补任何潜在的问题。这个自我管理结构包括下面几部分:

*自动的工作量仓库

*自动的维护工作任务

*服务产生的警告

*顾问框架

 

自动的工作量仓库

自动的工作量仓库(AWR)是在每个数据库中的一个内置知识库。在规定的间隔,oracle数据库对所有数据库的主要的统计和工作量信息做一个快照并且将它们存储在AWR。默认情况下,快照每60分钟做一次,但是你能够改变它的频率。在AWR中存储了一段时间之内(默认为7天)的快照,在这段时间之后这些快照的信息将会被删除。

允许系统级和用户级的分析操作在这些被捕获的数据基础上执行,并且为了诊断问题也减少了重复工作量的需求。

优化工作已经被执行了来确保数据的捕捉执行地非常地有效来使工作量最小化。在这些优化中的一个例子是在SQL语句中的捕捉,它维护了在快照之间SQL语句数据的增量。这些让oracle数据库只捕捉那些严重影响到系统加载的语句因为前一个快照是以有效的形式而不是必须将捕捉自从这些语句第一次出现在系统中之后在工作极限标准之上的已经执行掉的所有语句。

AWR为所有oracle数据库自我管理功能形成一个基础。AWR是信息的来源给予oracle数据库一个历史的视角来观察oracle是如何被使用的并且使数据库能够做决定,这些决定对于每个环境来说都是精确的并且是明确裁剪过的决定。

 

自动维护任务

通过分析存储在AWR中的信息,数据库能够鉴别出执行常规维护工作的需要,比如:优化器统计表的更新。自动的维护任务基础结构使得oracle数据库能够自动地执行这样的操作。它使用调度程序来在一个预定义的维护窗体中运行如此的任务。默认地,维护窗体在每天晚上10点开始延续到第二天早上的6点并且这样贯穿周末。维护窗体的所有属性是自定义的,包括起始和结束时间,频率,周的天数等等。对于维护窗体在正常数据库操作上的自动地维护任务的影响能够受到与之相关的一个数据库资源管理器资源计划的限制。

优化器统计表使用自动维护任务基础结构来自动地刷新统计信息。

 

服务产生的警告

对于不能够自动解决并且需要管理员注意的问题,比如:运行时空间耗尽,这时需要oracle数据库提供服务产生的警告。Oracle数据库能够监控自身并且发送警告信息以有效和及时的方式来通知你任何问题。

监控活动发生在当数据库执行它的常规操作时。这样确保一旦问题发生,数据库就会意识到问题。被数据库所产生的警告不仅能够通知问题,也能够对所报道的问题如何解决提供一些建议。这样保证问题能够很快被解决并且帮助阻止潜在的失败。

 

顾问框架

Oracle数据库在数据库中对于不同的子系统包括许多顾问来自动地决定相应的子组件的操作如何能够更好的被优化。SQL优化顾问和SQL访问顾问,例如:为了能够运行SQL语句更快提供建议。内存顾问可以帮助你不需要采取尝试和错误的技术方式就能够估计各种内存组件的大小。段顾问处理空间相关的问题,比如:建议废空间的重新回收,同时撤消顾问也指导你正确地设置撤消空间的大小。各种顾问会贯穿这章将被讨论。

为了确保在顾问行使职责并且允许他们顾问之间无缝地相互作用方式上的一致性和统一性,oracle数据库包含一个顾问框架。这个顾问框架提供一个一致的行为方式,以这个一致的方式顾问被调用并且结果被报道。尽管这些顾问主要是被数据库用来优化自身的性能,它们也可以被管理员调用来研究一个特定的子组件的运行机理。

 

性能诊断和发现和修理故障

AWR里面所捕捉到的数据的基础上,自动数据库诊断监控(ADDM)让oracle数据库诊断它自身的性能和决定被鉴别出来的问题如何能够被解决。ADDM在每个AWR统计捕捉之后自动地运行,使性能诊断数据能够容易获取。

ADDM检查在AWR中被捕捉到的数据并且运行分析来决定在当前预示的基础上系统的主要问题。在许多案例中,ADDM会建议解决方法并且使被期待的优势量化。ADDM对系统的性能诊断是采取全盘的方法,使用在组件之间的一般的流通时间。ADDM鉴别出那些消耗最多时间的系统区域。ADDM会深究到鉴别问题的根本原因,而不是只是现象,并且报道这个问题对系统整体的影响。如果一个建议被采用,这个建议的好处将会在时间方面被期待到。贯穿时间的使用可以使一些问题或者建议的影响具有可比性。

ADDM关注那些耗费时间最多的数据库活动上,并且通过复杂的问题级别树来追溯到根本原因。ADDM检查到的一些普遍的问题包括:

*CPU瓶颈

*很弱的连接管理

*过多的分解

*锁竞争

*I/O容量

*不够大的内存结构,比如:PGA,缓冲器,日志缓冲

*SQL语句的严重负荷

*昂贵的PL/SQLJAVA执行时间

*严重的检查点负荷和原因;例如:很小的日志文件,具有侵略性的MTTR (Mean-Time-To-Recover,即平均故障恢复时间)的参数设置

*RAC-特定的问题

除了报道潜在的性能问题之外,ADDM也报道系统的非问题区域。这个子组件,比如:I/O和内存,对系统性能影响不重要的在早期阶段被从级别树上剪除掉了并且列出来以便你可以很快的看到在这些区域执行活动只有一点点的改进。

你不再需要首先收集大量诊断数据并且然后花费几个小时来分析这些数据为了能够找到性能问题的解决方法。你可以简单地遵循ADDM所做出带有一点点拨作用的推荐方法。

 

应用程序和SQL优化

Oracle数据库完全使SQL语句的优化过程自动化。ADDM鉴别那些耗费不寻常的许多系统资源并且引起性能问题的SQL语句。除此之外,在CUP方面以及在共享内存消耗上面比较厉害的SQL语句自动地被AWR捕捉到。因此,高负荷的SQL语句的家别在数据库中自动地发现并且不需要任何干涉。

在鉴别资源消耗比较多的SQL语句之后,oracle数据库能够自动地分析这些语句并且使用自动优化器来推荐一些解决方案。自动的SQL优化带着顾问来被暴露出来,所以被称为SQL优化顾问。SQL优化顾问将一个或者多个SQL语句作为输入并且产生一个带有优化建议的已经被优化好的执行计划。你不需要做任何其他的事情而是只要调用SQL优化顾问即可。

解决方案正好来自优化器而不是来自预定义的带有启发式的外部工具。这个提供几个优势:a)优化是由最终负责执行计划和SQL性能的系统组件来完成的;b)优化过程完全基于成本的,然后优化过程自然地会考虑任何对查询优化器的变更和增进;c)优化过程考虑一个SQL语句的过去的执行统计信息并且为这个语句自定义优化器的设置。并且d)优化过程会收集与常规的统计信息有关的辅助信息,这些常规的统计信息是基于通过优化器被认为是有用的信息。

自动优化器的建议被氛围下面的几类:

*统计分析:自动优化器会因为丢失或者是陈旧的统计信息来检查每个查询对象并且提供一个建议来搜集相关的统计信息。自动优化器也会搜集辅助信息来提供丢失的统计信息或者纠正陈旧的统计信息以防建议没有被采用。因为oracle数据库自动地搜集优化器统计信息,所以这个不应该成为问题除非自动统计搜集机制被禁用。

*SQL剖面:自动优化器检验它自己评估并且搜集辅助信息来移走估算错误。自动优化器也以在SQL语句过去的执行历史的基础上自定义的优化器设置(例如:first rows 或者all rows)形式搜集辅助信息。自动优化器也使用辅助信息构造一个SQL剖面并且作出一个建议来创建这个SQL剖面。然后自动优化器授权给查询优化器(在正常模式下)来产生一个优化好的计划。SQL剖面最强大的方面是它们使查询的优化不需要修改任何的语法改变并且因此也能够提供一个唯一的常驻数据库中的解决方案来优化嵌入在已经打好包的应用程序中的SQL语句;

*访问路径分析:自动优化器考虑一个新的索引被使用是否能够很大的改进在查询中对每张表的访问速度,并且当适当的时候作出一些建议来创建这样的索引;

*SQL结构分析:自动优化器试图鉴别那些导致它们自己有坏的执行计划的SQL语句并且然后做一些相关建议来重新构建它们。所建议的重新构建可以是对SQL代码在语法方面的修改也可以是语义的变化;

访问路径和SQL语句结构分析在一个正处于开发中或者处于管理员和开发人员都有访问应用程序代码的国产商品的应用程序中的性能优化方面是有用的。

SQL访问顾问能够自动地为一个给予的工作量,推荐的索引,基于函数的索引,以及一些会因为工作量在适当的时候创建,保留或者是删除的物化视图分析计划设计。岁于当度的语句场景,顾问只建议一些只影响当前语句的调整。对于完整的商业工作量,顾问会在考虑对整个工作符合的影响之后作出一些建议。

在产生建议的同时,SQL访问顾问除了会考虑这些建议可能会给查询带来的性能方面的改进之外,也会考虑在数据操作活动(比如:插入,更新,以及删除)中新加索引和新加物化视图的影响。在SQL访问顾问已经过滤过工作负荷之后,但是当SQL访问顾问还在鉴别所有可能的解决方案的同时,你可以异步地打断这个进程来获取在打断进程这个时间点为止最好的找到的最好的解决方案。

SQL访问顾问提供一个使用简单的接口并且只需要非常少的系统知识。SQL访问顾问可以在不影响生产库系统的情况下运行,因为这样数据可以从生产库系统中被搜集并且这些数据可以被移到其他SQL访问顾问能够运行的机器中去。

 

内存管理

系统全局区域(SGA)是一个包含一个oracle数据库实例的数据和控制信息的共享内存区域。自动共享内存管理使被一个oracle数据库实例所使用的SGA的管理自动化。使用SGA_TARGET参数简单的定义对于一个实例可以获取的SGA内存的总数量。Oracle数据库然后在各种被需要的组件之间自动地分配可获取的内存。

Oracle提供动态的内存管理来允许动态地调整oracle共享内存组件的大小。Oracle数据库也通过自我调整初始运行参数来控制私有内存的分配的方式来对SQL执行的工作内存的透明管理。这样的方式帮助了有少量用户的系统上的用户来为用户的应用程序减少需要优化内存参数的时间和精力,比如:数据仓库和报表应用。在有许多用户应用的系统上,这种方式也允许应用程序为单个的工作量避免内存优化。

Oracle提供下面的顾问来为了数据库的理想性能帮助设置内存分配的大小。

共享池顾问通过跟踪内库缓存使用共享内存的使用情况来决定共享内存的理想的大小。对于类库缓存获取的内存的大小能够显著地影响一个oracle实例的解析速度。共享池顾问统计表提供关于类库缓存的信息,让你预知共享池的大小如何变化能够影响在共享池中对象的保持时间。

缓存顾问决定缓存区的理想大小。当配置一个新的实例,很难知道缓存的准确大小。典型地,你首先做一个缓存大小的估算,然后在一个实例上运行一个具有代表性的工作负荷并且检查相关的统计信息来看缓存是否在设定的大小之下还是之上。许多统计表能够被用来检查缓存活动。这些表包括v$db_cache_advice视图以及缓存击中比率。

JAVA池顾问决定了该流池的理想大小。V$STREAMS_POLL_ADVICE视图给予对于STREAM_POOL_SIZE参数的不同的值所产生的溢出和未溢出的字节量的估算。你可以使用这些估算值来为流和为逻辑备份优化STREAM_POOL_SIZE参数。自动的工作负荷库报道了关于V$STREAMS_POLL_ADVICE视图和CPU的使用帮助你优化流性能。

程序全局区域(PGA)顾问优化分配给单个服务进程的PGA内存。在自动PGA内存管理模式下,oracle通过动态地控制分派给SQL数据库区域的PGA内存的大小来遵守PGA_AGGREGATE_TARGET的限制。数据库其他区域在一个通道的模式下执行,除非被PGA_AGGREGATE_TARGET参数对PGA内存的限制是如此的低以至多通道执行需要减少PGA内存的消耗并且遵守PGA目标大小的限制。

当配置一个新的实例时,对于PGA_AGGREGATE_TARGET参数设置的适当是很难的。你可以按照下面的三步来设置这个参数:

1、  PGA_AGGREGATE_TARGET参数做一个第一次的估算;

2、  运行一个在这个实例上具有代表性的工作负荷并且使用oracle数据库收集的PGA统计表的信息监控性能来看是否最大的PGA的大小是在设定的PGA_AGGREGATE_TARGET参数值大小之下还是之上;

3、  利用oraclePGA顾问统计表调整PGA_AGGREGATE_TARGET参数;

当使用自动共享内存管理,大多数的普通的配置组件被自动地设定大小。这些组件包括下面:

*共享池(对于SQLPL/SQL执行)

*JAVA池(对于JAVA执行情形)

*大池(对于大量分配比如RAMN备份缓存)

*数据库缓存

*数据库流池

没有必要明确地设置这些组件中任何一个的大小,并且对于这些组件的参数默认地显示的值为0。无论什么时候一个组件需要内存,它能够请求内存通过内部的自动调整机制来将将内存从另一个组件中传输过去。这种内存传输也是不需要用户干涉的透明的举动。

每个组件的性能是被oracle实例所监控的。实例使用内部的视图和统计信息来决定如何最优化地在自动分配大小的组件之间分配内存。因此,当工作负荷改变时,内存被重新分配来确保在新的工作负荷下最优化的性能。这种算法试图通过考虑长期和短期趋势来找到最优化的分配方式。

你可以通过为每个组件定义最小值来练习对自动优化组件大小的一些控制。一旦你知道在特定的组件中一个应用程序需要最小的内存数量来保证正常运行,使用对组件大小设置的控制方法是非常有用的。

如果一个服务参数文件被使用的话,自动优化的组件的大小是在数据库关闭的时候被记录下来的。这个意味着系统会使用自从上次系统关闭时系统所保留的参数。

使用自动的SGA内存管理的最重要的好处是不同的SGA组件的大小是灵活的并且不需要手动干涉的来根据工作负荷的大小需要来调整大小。除了使可用内存的利用率最大化,自动共享内存管理能够加强工作负荷的性能。使用手动配置,被编译好的SQL语句会经常因为不足够的共享内存大小而被逐出共享池。这个将导致频繁的硬解析并且降低性能。但是,当使用自动管理,内部的优化算法监控工作负荷的性能并且如果确定如果增加共享池的大小的话会减少硬解析的数量则会增加共享池的大小。这个将提供提高性能,不需要任何额外的资源或者手动的优化精力。

 

空间管理

Oracle数据库自动管理本身的空间消耗,对于潜在的空间问题发送警告信息,并且建议一些可行的解决方案。Oracle的那些帮助你很容易地管理空间的特性包括如下面:

*自动回滚段管理

*oracle管理的文件

*空闲空间管理

*主动空间管理

*智能的容量规划

*空间回收

 

自动回滚段管理

早期的oracle版本使用回滚段来管理回滚信息。对于回滚段的空间管理是很复杂的。自动回滚段管理减少了管理回滚段的复杂性并且让你努力去控制在回滚段被覆盖之前回滚信息被保留的时间长短。Oracle强力推荐你使用回滚表空间来管理回滚信息而不是使用回滚段。

回滚顾问改进了事务的可管理性,特别是对于自动回滚段管理。回滚顾问对被给的回滚表空间提出可能的最好的保持力。当你想设置回滚保留时间为一个特别的值时,回滚顾问也建议你设置回滚表空间的大小。

回滚顾问是基于系统活动统计之上,包括最长的查询运行时间和回滚产生的速度。顾问信息包括如下:

*当前回滚保持时间

*当前的回滚表空间大小

*最长的查询持续时间

*可能的最好的回滚保持时间

*对于当前的回滚保持时间必须的回滚空间大小

 

Oracle管理的文件

使用oracle管理的文件,你不需要直接管理组成oracle数据库的文件。Oracle使用标准的文件系统接口来根据需要创建和删除文件。这个使数据库文件的创建和删除的常规任务自动化。

 

空闲空间的管理

Oracle允许使用位图来管理表的空闲空间,也可以使用传统的基于空间管理的数据字典方式管理空闲空间。位图映射的执行消除了许多表空间相关的调整,同时也提供了在负荷高峰期间改良的性能。除此之外,oracle也提供数据文件自动的扩展,所以文件可以基于在文件中的数据量来自动增长文件的大小。数据库管理员不需要手动跟踪和识别所有数据库文件的空间使用率。

 

主动空间管理

Oracle数据库引入一个没有干扰的并且能够定期的检查一直在监控的空间使用情况。数据库在正常的空间分配和空间释放操作期间自动地监控空间使用情况并且如果空闲空间的可用性低于预定义的极限时会警告你。空间监控功能是内置功能,不会有性能影响,并且对于所有的空间类型都可以使用的。通过企业管理器和SQL的方式都可以使用空间监控功能。因为监控是当在数据库中空间被分配和空间释放的同时工作的,这样就保证无论什么时候需要空间使用的情况信息就可以立即获取这些信息。

使用服务产生的警告通知就会执行。这些警告是当一些与空间相关的事件在数据库中发生时就被触发的。例如:当一个表空间的空间使用极限被超过或者当一个恢复的会话遇到一个超空间的情形,然后一个警告信息就会发起。一个警告被及时地被发送为了能够采取正确的措施。你可能选择获取警告信息并且给表空间增加空间来允许挂起的操作从它停留的地方继续运行。

数据库本来就有一组默认的警告阈值集合。你可以给指定的表空间覆盖掉默认阈值或者通过企业管理器来为整个数据库重新设置一个新的默认阈值。

 

智能的容量规划

空间可能被分配过剩是因为很难预知一个对象需要的空间或者没有能力预知一个对象的增长趋势。对于频繁被更新的表,因为空间分配过剩导致的段可能会有许多内部的碎片和可能甚至有行链接。这些问题导致从性能降低到空间浪费一系列的各种问题。Oracle数据库提供一些特性来处理这些挑战。

Oracle数据库能够基于表的结构以及估算的记录数来预知所给表的大小。这个是一个强大的”what if”工具允许在对象被创建或者被重建之前对该对象大小的估算。。如果表空间有不同的数据扩展管理策略,然后这个工具将会帮助你决定哪种数据扩展管理策略会使表空间产生最少的内部碎片。

增长趋势报告使你采取下一步的容量规划增长的计划。大多数数据库系统随着时间增长。增长的规划是供应资源的一个重要方面。为了避免数据库不停地随着时间的增长,oracle数据库跟踪在AWR中的历史的空间利用情况并且使用这些信息来预知将来的资源需求。

 

空间回收

Oracle数据库通过对数据段的收缩来优化空间利用率,并且数据库提供内部的空间来重组数据。一个数据段的收缩使该段对于在表空间中其他数据段是不可用的,并且可能改进查询和DML操作的性能。

数据段收缩功能使在一个数据段的使用空间压缩并且然后从该数据段中释放该使用空间。被释放的空间被回收到该表空间中去并且该回收的空间对于表空间的其他对象也是可用的。稀疏分布的表对于全表扫描来说会有性能问题。通过执行数据段收缩,在一张表中的数据被压缩并且数据段的高水位线也降低了。这样使全表扫描读更少的数据块运行的速度更快。

数据段收缩是一个在线操作当数据段正在被收缩时,被收缩的表对于查询和DML操作还是可以进行的。另外,数据段收缩执行时不需要额外的空间。在线数据段收缩比在线表重定义来收缩和回收空间的方式更有优势。你可以对数据库中的一个或者多个对象规划数据段收缩作为晚上的任务不需要额外的空间提供给数据库。

在使用了自动段空间管理方式的表空间中数据段收缩作用于堆表,索引表,索引表溢出段,LOBsLOB段,物化视图以及允许行移动的索引上。当数据段收缩在带有索引的表上执行时,当记录因为压缩需要行移动时索引被自动地被维护。但用户定义的触发器没有被触发,因为压缩纯粹是一个物理操作并且不影响应用程序。

注意:数据段收缩只在运行行移动的表上能够被执行。显式地跟踪对象的rowid的应用程序是不能够别收缩的,因为该应用程序跟踪了该对象中行的物理地址。

Oracle数据库自动地运行数据段顾问来评估整个数据库目的是为了简单地鉴别能够被收缩的数据段。数据段顾问对单个的对象执行增长趋势分析来决定在7天之内在该对象中是否会有额外的可用空间。然后对筛选出来的对象进行收缩来回收可用空间。

注意:数据段顾问工具不对回滚表空间和临时表空间评估。

除了使用在工作负荷库中的已有的统计信息,数据段顾问也会考虑直接对对象进行采样来获取该对象的精确统计信息。尽管这个操作是会消耗大量的资源,但是它能够提供更为精确的分析结果。

尽管数据段收缩减少了行链接,并且oracle数据库建议使用在线重一定来消除链接的行,数据段顾问工具实际能够检测到一些在超过阈值的行链接。例如:如果一行在被更新时行记录的大小增长以至该行在一个数据块中不能够放的下,然后数据段顾问建议重组该数据段以提高I/O性能。

注意:数据段顾问不会检测到通过插入操作所引起的行链接

 

存储管理

自动存储管理(ASM)提供文件系统及其卷上的管理器的集成来管理oracle数据库文件。ASMI/O负荷分配到所有可用的资源上来优化性能,同时也不需要手动I/O优化(即将数据库文件展开避免热点)。ASM通过让你增长数据库的大小同时并且不需要你关闭数据库来调整存储空间的分配来帮助你管理动态的数据库环境。

自动存储管理让你定义一个存储池(叫磁盘组)并且oracle管理文件的命名和在该存储池中数据库文件的放置。你能够使用SQL语句(create diskgroup, alter diskgroup, 以及drop diskgroup)来改变存储分配(加磁盘或者删除磁盘)。你也能够使用企业管理器和数据库配置助手(DBCA)来管理磁盘组。

oracle数据库为存储资源提供了一个简单化的管理接口。自动存储管理消除了对手动I/O性能优化的需要。数据库将存储资源虚拟为磁盘组的集合,并且提供冗余选项选项来实现高度的数据保护能力。ASM使带有自动负载均衡功能的没有干扰的存储配置变更更加方便。ASM使数据库文件分配到所有可用的存储资源上来优化性能和资源的使用。ASM是一种能力,通过使手动存储管理自动化的方式来节省时间并且增强了管理更大的数据库的能力并且也提高了工作效率。

 

备份和恢复

Oracle提供有些特性来帮助你能够简单地管理备份和恢复。这些包括如下:

*系统恢复管理器

*限时恢复

*自助错误修正

 

系统恢复管理器

oracle系统恢复管理器(RMAN)是一个强大的工具,这个工具使备份和恢复操作简单化,自动化以及能够改进操作的性能。RMAN能够做一个基于时间的备份,能够实现基于用户自定义的恢复窗体来自动管理备份和归档日志,能够实现可重启的备份和恢复,并且可对系统恢复进行测试。RMAN运行一个恢复窗体来控制备份什么时候过期。在备份数据过期之前,用户可以使用这些备份数据将数据库或者表空间恢复在某一时间点上的状态,从而发现逻辑错误并且修改受影响的对象。RMAN也会自动地使那些在恢复窗体之内但不再需要某一时间点上的数据恢复的数据库备份过期。即使当RMAN资料库不可用时,用户可以使用自动备份的数据库控制文件来恢复数据库。

DBCA能够自动调度基于磁盘备份的程序。你所做的就只要设定自动备份运行的时间窗口即可。在数据库中所有与恢复相关的文件和活动有一个统一的存储位置,该统一的位置被称为快速恢复区域,该区域的地址可以通过DB_RECOVERY_FILE_DEST初始参数来定义。当发生介质故障时为进行完全恢复数据库时所需要的文件比如:控制文件,归档日志文件,回闪日志,RMAN备份等等文件都在快速恢复区域中。

给快速恢复区域分配足够的空降确保oracle数据库有更快,更简单,更自动化的恢复。快速恢复实际以智能的方式来管理在存储在指定地址的文件来使空间利用率最大化并且避免扩展空间时出现空间不足的情形发生。快速恢复区域可以根据指定的RMAN保留周期策略来自动地删除那些不再需要的陈旧备份和归档日志文件。

增量备份让你只备份那些自从上次备份以来有变更的数据块。当使用数据块变更跟踪特性,oracle将跟踪所有数据库变化的物理位置。RMAN自动地使用变更跟踪文件来决定在一个增长的备份期间需要读哪些数据块并且直接访问那个数据块并且备份起来。增量备份减少每天备份所需要的时间,当是通过网络备份的话也节省了网络流量,并且减少了备份文件的存储空间。

增量备份能够被用来更新前一次所做的备份。使用增量地更新备份数数据的功能,你可以将RMAN增量备份数据与一个备份的数据文件合并在一起,然后生成包含增量备份所步骤的变更的更新之后的备份文件。增量备份消除了对整个数据库重复备份的需要。你只要对数据库做一次全备份然后随后使用增量备份来保持对全备份更新即可。基于增量地更新备份数据的一个备份策略能够帮助你的数据库介质恢复所需要的时间降低到最小。

 

限时恢复

Oracle允许更好的控制数据库停工期时间通过让你定义自从系统失败之后以秒来计算时间来限时恢复(MTTR)。限时恢复和动态的初始参数相结合,帮助改进数据库的可用性。在你设置好系统失败之后恢复所花的时间的一个时间限制,oracle自动地并且显然地确保系统在那个时间内启动好,与失败时间点上系统所运行的应用程序无关。限时恢复使在系统失败后提供最快可能的恢复。

联机日志文件越小,DBWRs进程将会频繁地做增量检查点次数越多,也就意味着物理写入次数也就越多。这样可能会相反地影响数据库的运行性能。并且,如果你设定FAST_START_MTTR_TARGET参数值,然后最小的重做日志文件的大小可能会导致增量检查点操作更加频繁,甚至超过了MTTR的需要。

重做日志文件大小顾问根据当前的FAST_START_MTTR_TARGET参数值和MTTR统计信息来决定最优化的重做日志文件大小。如果该重做日志文件没有导致增量检查点操作频繁,并且没有超过的FAST_START_MTTR_TARGET参数值的需要,则这个重做日志文件的大小上一被认为是最优化的大小。

MTTR顾问帮助你评估系统性能上的不同的MTTR设置对额外的物理写方面的影响。当使用MTTR顾问时,在系统运行一个典型的工作负荷之后,你可以查询V$MTTR_TARTGET_ADVICE来查看在其他MTTR设置下的缓存写的估算次数和当前的MTTR设置下的实际缓存写的次数的比率。例如:1.2的比率说明某一MTTR设置估算的缓存写次数超过实际的次数20%

通过查看不同的MTTR设置和它们对应的缓存写的比率,你可以决定哪个MTTR设置同时适合你的恢复和性能的需要。V$MTTR_TARTGET_ADVICE也提供关于总的物理写操作的比率,包括直接写和总的I/O操作的比率,包括读。

 

自助错误修正

当数据库还处于联机状态中时,Oracle的回闪技术让你查看和重绕在时间上来回地数据。你可以查询对象的过去版本,查询历史数据,执行变更分析,或者执行自助修正来将数据库从逻辑损坏中恢复。

自助错误修正通过只对被修改的数据进行操作从而改进了恢复。该种恢复错误的所需要的时间等于数据库导致错误操作执行的时间。

 

配置管理

企业管理器有一些强大的配置管理工具,这些工具帮助检查配置的变化以及变化前后之间的不同并且迫使使用最优的配置参数。这些配置管理功能也针对低层的硬件和操作系统。

企业管理器不停地监控所有oracle系统的配置情况比如:最优的参数设置配置,安全设置,存储和文件空间使用情况,以及推荐功能的使用情况。存在配置问题的系统被自动地标识出来并且附有特定系统配置问题的详细说明。例如:企业管理器建议你使用新的功能,比如如果没有启用自动回滚段管理或者本地管理的表空间,企业管理器会提醒你使用。这个自动地系统配置监控促使系统有最优的配置,减少管理员的工作负荷和保证系统的可用性,高性能性,以及安全性。

企业管理器也自动地警告你有新的重要补丁,比如:重要的安全补丁,并且标识出所有需要补丁的系统,你可以调用企业管理器的补丁向导来查找对于当前系统的可用补丁。

 

工作负荷管理

Oracle提供下面的资源管理特性:

*数据库资源管理器概述

*服务概述

 

数据库资源管理器概述

数据库资源管理器能够将oracle系统中的工作区分优先顺序。例如:对于联机用户来说有很高的优先级能够及时得到资源来减少响应时间,而对于批处理作业或者报表的用户优先级比较低,需要长点的响应时间。这个就需要对资源有更加精细的控制并且提供一些特性,比如:自动消费者组切换,最大活动会话控制,查询执行时间估算以及消费者组还原池容量限额配置等等功能。

你可以为每个消费组定义最大并发活动会话数量。当这个限制达到时,数据库资源管理器将所有并发地请求排成队列然后只有当存在的活动会话完成之后运行这些队列中等待的请求。

数据库资源管理器解决许多资源资源分配问题,这些问题操作系统不能很好地解决:

*过度的系统开销。这个是由于当服务进程的数量很多时,在oracle数据库服务进程之间的操作系统上下文切换导致过度的系统开销;

*低效率的调度。操作系统不会调度带有闩锁的进程,因为这样调度效率低;

*不适当的资源分配。操作系统在所有活动进程之间平均地分配资源并且不能够调整任务的优先级;

*没有能力管理数据库特定的资源;

使用oracle数据库资源管理器,你可以完成下面的功能:

*无论系统上的负载多少和用户数量的多少,保证一些用户拥有最小数量的进程资源;

*通过分配CPU时间的百分比来分配可用的处理资源给不同的用户和应用程序。在一个数据仓库中,将更高的CPU时间百分比分配给ROLAP(关系型联机分析处理)应用而不是分配给批处理作业;

*限制被用户组的成员运行的任何操作的并发度;

*创建一个活动会话池。这个池是由一个特定的最大用户会话数量组成的,最大会话数量是由用户组中允许的并发活动用户会话数量决定的。超过最大数量的额外的会话将排队等待执行,但是你能够设置一个超时值,超时的作业将会被终止;

*基于管理员定义的标准允许一个组中的用户自动切换到另一个组中。如果一个特定组中的一个成员创建了一个运行的时间超过了指定的时间段,该会话能够被自动切换到另一个使用不同资源需求的用户组中;

*阻止那些估计运行时间会超过预定义的时间限制的操作的执行;

*创建一个还原池。这个还原池是由那些可以被一组用户使用的回滚空间所组成的;

*使用一种特别的分配资源的方法配置一个数据库实例。你能够动态地改变这个方法,例如:从白天调整切换到晚上调整,并且不需要关闭数据库和重新启动数据库实例;

*识别那些可能会阻塞一个静默状态完成的会话;

因此数据库资源管理器可以平衡用户之间的资源消耗并且在具有不同的重要程度的任务之间根据优先级来分配系统资源来实现系统资源的合理分配。

 

数据库资源管理概念

根据数据库管理员制定的资源计划来将资源分配给用户。下面的术语是用于制定的资源计划中:

一个资源计划:定义了在不同的用户之间(资源消耗组)资源是如何被分配的;

资源消耗组:让你根据资源需求来将用户会话分组。资源消耗组是不同于其他用户角色;一个数据库用户能够拥有不同的会话分配有不同的资源消耗组;

资源分配策略:当分配任何特定的资源时决定使用什么策略。资源分配策略是被资源计划和资源消耗组所使用的;

资源计划指示:是一个分配消费者组到特定的计划中去并且通过为每个资源分配策略定义参数来在消费者组之间分配资源的方法;

数据库资源管理器也允许在计划中创建计划,被称为子计划。子计划也允许进一步在一个应用程序的不同用户之间细化资源的分配。

层次:提供一种在用户之间定义不寻常的资源的分配的机制。资源分配的层次可以被定义达到8个层次;

 

服务概述

服务呈现一组带有共同的属性,共同的服务级阈值以及具有相同优先级的应用程序。应用程序功能能够被分为多个标有服务标识的工作负载点。例如:oracle E*Business套件中为每个功能点定义一个服务,比如:总账功能,应付账款功能,定单功能等。Oracle的邮件服务可以将iMAP功能,postman,垃圾收集,监控等等功能定义为服务。一个服务可以跨越一个数据库的一个或者多个实例,可以跨越一个集群的多个数据库,并且一个实例也能够支持多个服务。

提供某一服务的实例数量对于应用程序来说是透明的。服务提供一个单独的系统镜象来管理全部的应用程序,并且服务允许每个工作负载点将被当作一个单独的单元来管理。

中间层应用程序和客户端应用程序通过定义TNS连接参数中的服务名来选择一个服务名。例如:可以设置一个服务作为Web服务或者一个应用服务的数据源。使用Net Easy*Connection工具,这个连接参数包括服务名和网络地址。例如:服务名:IP

在服务端工作的应用程序,比如:调度器,并行查询,以及oracle数据流高级队列设置服务名作为工作负载节点定义的一部分。对于调度器,作业被分配给作业类,并且每个作业类都利用一个服务来运行。对于并行查询和并行DML,查询协调器连接到一个服务,并且并行查询在查询期间继承查询协调器连接的服务。对于oracle数据流高级队列,数据流队列需要通过服务来被访问。运行在一个服务下的工作继承这个服务的阈值及属性,并且被看作该服务的组成部分。

数据库资源管理器服务分别将与资源消费者组以及优先级绑定在一起。这样就让数据库中的服务按照服务的重要性的顺序来管理。例如:你可能够为高优先级别的联机用户和低优先级别的内部报告应用程序来定义单独的服务。同样,你可以定义金,银,铜级别的服务来区分为同一个应用程序服务的请求的优先顺序。

当为一个系统计划服务时,包含与其他服务相关的每个服务的优先级别。以这种方式,数据库资源管理器首先满足高优先级别的服务,紧接着是次优先级别的服务依次下去等等。

 

通过服务进行工作负载管理

自动负载资料库让你可以为服务进行多方面的分析负载的性能。自动负载资料库自动地维护响应时间和CPU消耗矩阵,与性能和资源统计信息有关的等待事件,基于阈值的警告以及所有服务的性能指标。

在服务器端使用服务,模块以及活动标签来鉴别在一个服务中的操作。(模块和活动标签被应用程序所设置)端对端的监控能够获取汇集信息并且在服务,模块以及活动标签级别上跟踪来鉴别高负载的操作。Oracle企业管理器管理响应时间和CPU消耗的服务质量的阈值,监控高负载的服务,并且下钻到每个服务的负载的模块和活动标签。

当使用监控会话来获取服务信息对于性能管理没有意义,但使用自动负载资料库来获取汇总信息对性能管理是有用的。例如:使用连接池或者使用事务进程监控器的系统中,会话是被共享的,这样使得监控会话的统计信息不准确。

服务,模块,以及活动标签提供主要的和次要的边界线来区分工作活动和处理流程。汇总级别信息让你对运行在同一级别(服务级别,模块级别,以及活动标签级别)的SQL语句组来进行优化。这些统计信息能够被用来管理服务质量,用来评定资源消耗,用来调整与其他服务相关的服务的优先级,并且指出那些需要优化的位置。在RAC中,基于这些实例当前的性能将不同的实例上的服务作为一个服务提供给用户。

为平衡在实例之间为提供一个服务的负载,使用连接时程序和运行时程序算法来完成这个功能。平衡服务端连接负载的矩阵被扩展并包含了服务性能信息。连接可以根据当前服务的性能被分布到不同的实例节点上。在负载平衡时根据服务性能的实际情况以及完全的优先级来调节在各实例节点上的大小以及当前负载情况。这样也避免将更多的负载工作分配到那些已经停机或者故障的节点上。

自动负载资料库持续地记录服务性能信息。当运行时在中间层和对RAC的事务处理器中进行平衡时这些统计信息是可以获取使用的。例如:当向提供服务的实例请求运行时平衡时oracleJDBC连接池会使用服务统计数据。

 

通过服务实现高可用性

RAC通过服务使得数据库的操作不会被中断。服务是和支持RACoracle集群组件高可用性的框架紧密集合在一起的。当一个故障发生时,服务会继续在未受到故障影响的节点和实例上继续工作。被故障所影响到服务的节点很快被oracle集群组件恢复,并且正在进行恢复的会话会自动地被平衡分布到系统中去。对于有计划的停机时,RAC提供了重定位,禁用,以及启动服务的服务接口。重定位指将服务迁移到其他实例上并且用户可以选择是否要将会话断开连接。为了防止oralce集群系统在维护或者修理期间的一个没有计划的故障做出响应,在计划停机的一开始就将正在进行维护的节点上的服务已经禁用掉。进行维护的节点上的服务然后在计划停机的结束时被启用。这些基于服务的操作,再结合基于服务的方案预编译(DBMS_SCHEMA_COPY)功能,减少了许多计划停机的停机时间。例如:应用程序升级,操作系统胜迹,硬件升级以及修理,轮换升级各个节点上的oracle的补丁,以及修改参数值都可以通过将一个或者多个服务节点在一个时间点上隔离系统运行以上操作。RAC提供的无间断服务能力能够扩展到应用程序和中间层。当一个服务的状态变更时,(例如:启动,停止,重新启动),新的状态会通过事件或者调用通知相关的系统组件。应用程序可以使用这种通知来实现对故障的快速检测,在故障之后紧跟着停止使用受故障影响的连接,并且当受故障的组件被修复之后才可以使用。例如;当在一个实例上的服务启动时,事件和调用被用来立即触发开始使用该服务。当在一个实例上的服务停止时,事件被用来通知使用该实例上服务的应用程序停止使用该服务。使用通知不必客户端等待TCP超时。在oracleJDBC连接池和透明应用故障恢复中都集成了服务状态通知事件。

Oracle Data Guard环境中,生产节点为业务提供生产服务。其他的备用节点是在当只能在只读模式下操作时提供报表服务。RACData Guard 代理是集成在一起的,以便当进行故障恢复,结点切换,以及当修改保护模式时,生产服务在原来的生产节点上删除掉然后再在新的生产节点上新创建一个生产服务。在oracle集群组件管理本地地服务工作和Data Guard管理迁移工作之间有一个控制变更的命令。当Data Guard完成迁移工作时,oracle集群组件自动地恢复对使用高可用性操作的管理。

 

自动存储管理

如今的数据库要求计划停机时间最小,并且DBA经常需要来在不停地增加的许多数据库文件环境中管理多个数据库。自动存储管理可以帮助你完成一些手动存储管理的工作,提高了 DBA的工作效率。

自动存储管理垂直地集成了文件系统和专为oracle数据库文件制定的卷管理。自动存储管理支持条带化存储并且对所有的数据进行的镜象来优化系统性能,同时不再需要手动I/O优化(自动将数据文件分布开避免热点)。自动存储管理通过让你不需要关闭数据库来调整存储分配增长数据库的大小这样来帮助管理一个动态的数据库环境。自动存储管理也通过支持条带存储和镜象的方式来使用低成本模块存储来提供更好的性能和更好的可用性。

自动存储管理让你创建一个存储池,然后自动存储管理来管理在该存储池中数据库文件的命名和文件的存放位置。你可以使用下面的SQL语句来改变存储分配(向磁盘中添加存储或者删除存储):CREATE DISKGROUP.ALTER DISKGROUP以及DROP DISKGROUP

你也可以使用企业管理器来管理磁盘组。对于创建和删除文件, oracle数据库内部地从这些磁盘组中获取空间来分配存储空间。磁盘组中的部分当在设置时,你可以定义故障恢复磁盘组作为额外的冗余磁盘级别来防止当磁盘中部分比如磁盘控制器或者磁盘阵列因为损坏而造成数据丢失。故障恢复磁盘组智能地存储数据镜象,如果一个单独的组件出现故障的话,自动存储管理就可以使用故障恢复磁盘存放的数据镜像来恢复数据防止数据丢失。

Oracle数据库也为存储资源提供了一种简单的管理接口。使用自动存储管理就不再需要手动/O性能优化。它使对一个磁盘组的集合功能上简单化为存储功能,并且提供冗余选项来实现高度的数据保护。自动存储管理无需中断数据库操作来进行存储分配并且提供自动的负载平衡功能。自动存储管理将数据库文件分布到所有可用的存储资源上来优化性能和优化资源的使用效率。自动存储管理也通过十手动存储工作自动化来节省时间,这样因此就提高了oracle更加高效地管理更多更大的数据库。不同的数据库版本能够和不同的自动存储管理版本合作。对于自动存储管理实例和数据库实例的10.1.x.y10.2.x.y版本任意组合都能够透明地相互操作。

 

基础的自动存储管理概念

这部分定义可自动存储管理的基本概念

磁盘组

一个磁盘组是作为一个逻辑单元来管理的一个或者多个自动存储管理磁盘。在磁盘组中的数据结构是存储在磁盘组内部,并且在磁盘组中消耗掉一些磁盘空间。自动存储管理的磁盘可以在数据库处于运行时被添加到磁盘组中或者从磁盘组中删除。自动存储管理均衡数据分布来确保对于一个磁盘组中的所有磁盘有一个平衡的I/O负载甚至在当磁盘组配置发生改变时也能够确保所有磁盘上有平衡的I/O负载。

任何单独的自动存储管理文件只被包含在一个磁盘组中。但是,磁盘组中可以包含属于多个数据库的文件,并且一个单独的数据库可以使用来自多个磁盘组的存储资源。一个或者多个磁盘组可以被指定为为一个数据库中所创建的文件的默认磁盘组。

当创建一个数据库时或者当一个应用程序被开发时磁盘组能够被创建。当数据库服务配置被改变时磁盘组也发生改变。

大多数安装可能都有两个磁盘组。有不同的磁盘组的原因下面列出:

*对具有不同容量的磁盘或者不同的性能特征的磁盘进行分组;

*对具有不同的外部冗余能力的磁盘进行分组;那些具有相同的外部冗余能力的磁盘放在同一个磁盘组中,但是将具有不同外部的冗余能力的磁盘应该放在不同的磁盘组中;

*将数据库中的数据库区域和快速回闪恢复区域分开放在不同的磁盘组中;

 

磁盘组的种类

有三种磁盘组:正常的冗余,高冗余,以及外部冗余度。对于正常冗余,自动存储管理将根据在磁盘组模板指定的特性来为磁盘组中的所有文件提供冗余支持。与正常冗余相比,高冗余将对数据的保护程度更高。对于外部冗余,自动存储管理不会为磁盘组提供任何冗余支持。在磁盘组中的磁盘应该提供冗余(例如:使用一个磁盘阵列),或者如果一个磁盘组内的磁盘出现故障时(例如:在测试环境下)用户必须愿意忍受磁盘组中数据的丢失。

 

自动存储管理文件

当数据库请求自动存储管理文件时,自动存储管理才创建文件。自动存储管理给每个被创建的文件命名时在名字的最后都带有一些数字。你可以为这个自动存储管理的文件名创建更多友好的别名。对于自动存储管理文件要查看其别名,查询V$ASM_ALIAS数据字典视图。V$ASM_ALIAS只能在ASM实例中能够被查询。用户能够通过查询在数据库中带有V$前缀的视图(V$DATAFILE,V$LOGFILE,V$CONTROLFILE等等)来查找到ASM文件的名字。一般地,用户不需要知道文件名。

所有存在的需要一个文件的情形被增强带有一种机制,这种机制可以识别自动存储管理文件命名的语法。

当创建一个文件时,一些文件的属性永久地被设置。在这些设置好的属性中包括保护策略和条带化策略。自动存储管理文件对于操作系统和外部工具是不可见的,但是对于数据库实例,RMAN以及其他oracle提供的工具是可见的。

 

自动存储管理模板

在文件创建期间自动存储管理模板是自动存储管理所使用的属性的集合。模板通过将复杂的文件属性说明映射到一个单独的名字上的方式来使文件的创建简单化。通过对oracle中每种文件类型都存在一个默认的模板。每个磁盘组包含属于它自己的模板定义。在不同的磁盘组中允许具有相同名字的模板但是它们具有属于它们自己的独特的属性。

你可以改变默认模板的属性或者添加属于你自己独特的模板。这样就让你创建适当的文件属性作为一个模板。在文件已经被创建好之后你如果需要改变一个自动存储管理文件属性,然后必须使用RMAN工具将文件复制进一个带有新的属性的文件中去。

 

自动存储管理磁盘

按照自动存储管理磁盘单元大小来从磁盘组中添加或者删除存储资源。ASM磁盘可以是整个物理磁盘,也可以是磁盘阵列(storage array)内的一个逻辑单元号(Logical Unit NumberLUN),网络接入存储(Network Attached StorageNAS)文件服务器(filer)中的一个文件。ASM磁盘应该相互独立来获取最优的I/O性能。例如:使用一个磁盘矩阵,你可以定义一个互为镜像的物理磁盘一个逻辑单元号作为一个单独的ASM磁盘。如果同一个物理驱动盘的集合被磁盘阵列条带化并且被用户定义了两个逻辑单元号,这个可能会造成不佳的性能。

如果使用网络接入存储(Network Attached StorageNAS)文件服务器(filer),被定义为ASM磁盘的文件必须是 1M 的倍数大小。为了最优的性能,如果网络接入存储(Network Attached StorageNAS)文件在同一个磁盘组中,然后他们应该有独立的物理磁盘。

用户不应该指定包含数据但一个不能被覆盖的设备。比如:在一些操作系统中,一些分区在分区的头部包含有分区表的信息。这样的分区不应该被定义为ASM磁盘。

自动存储管理在对ASM磁盘进行I/O操作时是通过一个单独的逻辑路径。因此,如果在ASM中你使用一个多路径的驱动器,然后你应该对ASM磁盘指定一个逻辑路径并且确保ASM定位字符串(ASM_DISKSTRING初始参数)对每个ASM磁盘只包含一个单独的逻辑路径。

在一个集群中,ASM磁盘必须在集群中所有的 ASM实例是可见的,但是对于每个实例节点上保存的ASM路径不必完全相同,只要每个实例上的ASM_DISKSTRING初始参数包括那个实例所使用的磁盘路径即可。

一个磁盘名字对集群中所有的节点都是共同的。名字必须是被管理员所定义,或者当磁盘被加到一个磁盘组中时磁盘名字已经被自动存储管理所产生。自动存储管理磁盘名字摘要信息是需要设置的,因为不同的主机可能使用不同的操作系统名字来引用同一个 磁盘。

自动存储管理提供镜像功能来减少因为磁盘故障而造成的数据丢失的几率。这个是有必要的,因为在一个单独的自动存储管理磁盘中没有副本的数据丢失会损坏在磁盘组中的每个文件。

 

故障恢复组

故障恢复组是由管理员分配的一组可以共享的磁盘组组成。恢复故障组被用来决定自动存储管理磁盘中的拿一个是用来存储冗余数据的复制品。故障恢复组的使用确保了数据和冗余数据不需要都存放在同一个磁盘上从而避免数据和备份数据同时丢失。

故障恢复组的组成是和设备相关的。故障恢复组是根据系统能够容忍什么样的组件故障来确定故障恢复组的组成。例如:假设你有5个磁盘并且有一个SCSI 控制器。SCSI 控制器出现故障使得所有的磁盘不可用。在这个场景中,应该将每个磁盘放在不同的故障恢复组中。但是,如果你有两个SCSI 控制器,每个SCSI 控制器与两个磁盘有关系,并且你需要可以容忍SCSI 控制器发生故障,然后你应该为每个SCSI 控制器创建一个故障恢复组。

默认地,自动存储管理分配给每个磁盘一个属于自己的故障恢复组。当向一个磁盘组中增加一个磁盘或者创建一个磁盘组时,你可以为这些磁盘组设定故障恢复组。自动存储管理能够优化文件分布来减少由于故障带来的数据丢失的几率。

一个故障恢复组是在一个磁盘组中被维护的并且一个磁盘组中可以使用多个故障恢复组。但是,改变一个磁盘恢复组需要先从磁盘组中删除磁盘然后再向磁盘组中添加磁盘并且命名为新的故障恢复组名字。

 

自动存储管理实例

自动存储管理实例是一个特定的管理磁盘组中磁盘的oracle实例。必须为数据库实例配置和运行自动存储管理实例来访问自动存储管理文件。如果在数据库创建时使用了配置助手,则配置助手会自动配置自动存储管理。

自动存储管理实例不能够用于加载数据库。自动存储管理实例为数据库实例简单地调整数据分布。数据库实例不需要通过一个自动存储管理实例而对磁盘组中的磁盘直接做I/O操作。

多个或者单个数据库实例可以共享磁盘组文件。在一个单独的节点上,会有一个典型的自动存储管理实例在该节点上,自动存储管理实例管理所有的磁盘组。在RAC环境中,在每个节点上都会有自动存储管理实例,它和RAC中的其他节点的自动存储管理实例共同管理所有的磁盘组。

所有的自动存储管理有关的管理命令必须提交给自动存储管理实例,而不是提交给使用自动存储管理文件的数据库实例。

 

自动存储管理实例的后台进程

一个自动存储管理实例包含两个进程。一个进程负责协调磁盘组的负载均衡操作。该进程称为RBAL。另一种进程是在数据扩展时执行的实际的均衡移动。在一个时间点上可能会有很多该种进程,并且它们被命名为ARB0ARB1,等等。一个自动存储管理实例有许多和数据库实例中(SMONPMONLGWR等等)同样的的进程。

 

数据库实例后台进程

一个使用一个自动存储管理磁盘组的数据库实例包含一个叫ASMB的后台进程,这个进程和自动存储管理实例通信。另一个叫RBAL的进程负责将打开自动存储管理的所有磁盘。

 

使用自动存储管理的优势

*自动存储管理提供更简单地管理

 没有必要定义和管理文件名。一个文件无论在哪里被创建,一个磁盘组也被指定。每个新文件自动地得到一个新的唯一的名字。这样就防止了在不同的数据库中使用了同样的文件名的情况发生。磁盘组命名法避免了为同一个文件使用不同的名字。

*对于许多情形下,自动存储管理提供了外部卷管理和文件系统所提供的功能。

 自动存储管理包括存储可靠性特征,比如,镜像。存储可靠性策略是针对文件的,而不是针对卷的。因此,相同的磁盘组能够采用通过镜像,奇偶检验的方式保护文件,或者根本不用保护的方式。

*自动存储管理改进性能

自动存储管理通过自动地将数据库文件分布到一个磁盘组中的所有磁盘中去从而使得性能最优。它具有裸设备的I/O性能,但是比管理裸设备更加方便容易。

不象逻辑卷管理器,自动存储管理维护操作不需要数据库停机也可以操作。这样就允许当磁盘在使用时允许添加磁盘或者删除磁盘。

自动存储管理消除了手动磁盘优化的需要。文件创建属性可以被磁盘组预定义的模板所控制,从而提高了效率。

 

Oracle调度器

Oracle数据库包括一个功能丰富的作业调度器。你可以在预定的时间点(比如:每周晚上1100点)调度作业或者反复执行作业,或者一个指定的事件(比如库存数下降到一定程度)发生时调度作业。

你使用DBMS_SCHEDULER包或者使用企业管理器来创建和操作调度器对象如比:作业,程序,以及调度周期。因为调度器对象是标准的数据库对象,你能够使用系统和对象权限来控制对这些调度对象的访问。

程序对象(或者程序)包含了被调度器运行的关于存储过程,命令的元数据,也包含了所有参数的默认值。调度对象中包含了有关运行时间的信息以及作业执行模式。作业对象(作业)将程序和调度对象结合在一起,并且在使用调度器时所操作的主要对象。你能够创建多个引用同样程序的作业但是必须运行在不同的调度周期中。一个作业能够覆盖程序参数的默认值,所以多个作业能够引用同一个程序但是提供不同的参数列表执行。

调度器在企业管理器中提供全面的作业日志功能并且可以通过SQL*PLUS可以查看这些视图。你能够配置一个作业在当作业启动,完成,或者当作业发生其他的状态改变时抛出事件。你的应用程序可能通过oracle流高级队列来处理这个事件,并且采用适当的措施。例如:如果一个作业异常终止的话,调度器和一个客户事件处理应用程序能够合作工作来标志或者发送一个e-mail邮件给数据库管理员。

调度器也包含作业流程,这个作业流程是一起合作完成一个任务的一系列的程序组。作业流程中的每个程序是作业流程中的每个步骤,并且你可以定义规则来决定每个步骤什么嗣后运行并且步骤之间的有什么依赖关系。一个作业流程的例子是:运行程序AB,但是只有程序AB成功完成之后程序C才能运行,否则运行程序D

调度器是和数据库资源管理器集成在一起的。你可以将调度器作业和资源消费组联系起来,并且你可以创建被称为窗体的调度对象,这个调度对象在不同的时间自动地激活不同的资源计划。当在资源计划中有一个变化时,运行着的作业然后会看见在分配给这些作业的资源也发生变化。

 

调度器做了什么?

调度器提供了复杂的企业调度功能。你能够使用这个功能来做下面的操作:

*调度基于时间的作业执行

*使作业的调度符合业务的需求

*管理和监控作业

*在簇环境下执行和管理作业

*使用调度器传输文件

 

调度基于时间的作业执行

一个作业调度器最基本的能力是调度一个作业。当一个作业应该运行时这个调度器会提供这种让你指定作业的能力。你能够在指定的时间点上(例如; 2003 1 23 日早上 100点)调度一个作业执行,以任何时间间隔(例如;一年中的每一天),或者以一个相对的时间(例如:一个月的最后一天)或者当一个文件到达一个系统时。

你可以基于时间来调度作业,这样的方式让你可以控制一些基本的元素,这些基本元素包括你的作业什么时候执行,以及对于什么时候应该执行作业的问题使用强大的日历功能来设置详细的条件。你也可以基于事件来调度作业,这些事件指系统状态的改变,例如:一个作业的失败。基于事件的调度使你能够处理一些对于一个作业什么时候被执行但却不能够提前知道精确执行时间的情形。使用基于事件的例子是对于一个新的员工被雇佣的时候可以使用基于事件的作业。

 

使作业的调度符合业务的需求

调度器是按照业务需求想要的方式来调度作业的。这样就会使有限的计算机资源在竞争的作业之间合理地被分配,因此按照业务需求来处理作业。有共同特征和行为的作业能够被组织起来成为一个大的实体叫作业类。你可以通过控制分配给每个类的资源来给这些类排个优先级。这样让你确保重要的作业有高优先级和足够的资源来使作业完成。在一个作业类中的作业也被排好优先级。

调度器也提供一个基于调度周期改变优先级的能力。因为重要的作业的定义能够通过时间来改变,调度器让你按照不同的时间来定义不同的类优先级。

管理和监控作业

在一个作业从被创建到作业的执行完成会有多个状态的改变。所有的调度器活动被登记,并且将信息记录下来,比如:作业的状态和作业完成的时间,这样作业很容易被跟踪。这些信息被存储在视图中。可以使用企业管理器或者通过一个SQL查询语句来查询得到作业信息。这些视图提供的关于作业和这些作业执行的信息能够帮助你更好地调度和管理作业。例如;你可以很容易地跟踪用户scott用户下所有失败的作业。

 

在簇环境下执行和管理作业

一个簇是数据库所有合作执行同一个任务的实例的集合。Oracle数据库的RAC可以不需要读一你的应用程序做任何改变而可以提供可扩展性和可靠性。在这样的簇环境下调度器完全支持作业的执行。为了平衡在你系统上的负载和为了更好的性能,你也可以指定作业执行所使用的服务。

 

使用调度器传输文件

你可以使用DBMS_SCHEDULER包在一个单独的数据库内部和数据库之间传输文件。第三方的文件传输工具也支持调度器的使用。你可以在数据库正在读或者写文件的时候查询V$SESSION_LONGOPS动态性能视图来监控被调度器所运行的运行时间比较长的文件传输作业信息。任何被一个调度作业使用的数据库连接必须是固定用户的数据库连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值