Oracle 11g New 自动维护任务以及I/O校准

来源:互联网 发布:数据库别名有什么作用 编辑:程序博客网 时间:2024/05/29 08:08


  • 自动维护任务

维护窗口
Oracle Database 10g提倡在维护窗口期间执行自动维护任务。自动任务包括统计信息收集、段指导和自动SQL 优化。
在Oracle Database 11g中,自动维护任务功能依赖于在维护窗口期间启用的资源管理器。
因此,窗口打开时,会自动启用与窗口关联的资源计划,其目标是防止维护工作消耗过多的系统资源。每个维护窗口都与一个资源计划关联;该计划指定了窗口持续期间的资源分配方式。
在Oracle Database 11g中,WEEKNIGHT_WINDOW 和WEEKEND_WINDOW(Oracle Database 10g中定义的)已被日常维护窗口取代。自动任务将分配给特定的窗口。所有日常窗口都默认属于MAINTENANCE_WINDOW_GROUP。
您仍然可以随心所欲地定义其它维护窗口和更改日常维护窗口的开始时间和持续时间。同样,将禁用或删除任何被认为是不必要的维护窗口。可通过使用EM 或调度程序的界面来完成此操作。

  • 默认维护计划
默认维护计划
维护窗口打开时,会自动设置资源管理器中的DEFAULT_MAINTENANCE_PLAN,以控制自动维护任务使用的CPU 数量。为了能够给维护窗口期间的各项可能任务指定不同的优先级,为DEFAULT_MAINTENANCE_PLAN分配了多个使用者组。组和计划之间的层次结构如图中所示。
对于高优先级任务:
• 将“优化程序统计信息收集”自动任务分配至ORA$AUTOTASK_STATS_GROUP使用者组。
• 将“段指导”自动任务分配至ORA$AUTOTASK_SPACE_GROUP使用者组。
• 将“自动SQL 优化”自动任务分配至ORA$AUTOTASK_SQL_GROUP使用者组。
注:如有必要,可以手动更改分配给ORA$AUTOTASK_HIGH_SUB_PLAN中多个自动维护任务使用者组的CPU 资源百分比。

  • 自动维护任务优先级
自动维护任务优先级
“自动维护任务”功能是通过自动任务后台进程(ABP) 实施的。ABP 相当于自动任务与调度程序之间的中介,其主要用途是将自动任务转换成AUTOTASK作业,供调度程序执行。同样重要的是,ABP 还会维护所有任务的执行历史记录。ABP 将其专用资料档案库存储在SYSAUX表空间中;您可以通过DBA_AUTOTASK_TASK查看该资料档案库。
ABP 是在启动维护窗口时由MMON启动的。所有实例只需要一个ABP。MMON进程将监视ABP,并在必要时重新启动ABP。
ABP 可以确定需要为每项维护任务创建的作业列表。此列表按以下优先级排序:紧急、高和中。在每个优先级组中,作业是按执行的首选顺序排列的。ABP 按照以下方式创建作业:先创建所有紧急优先级的作业,然后创建所有高优先级的作业,最后创建所有中优先级作业。ABP 将作业分配到多个调度程序作业类。这些作业类将作业映射到基于优先级的使用者组。
注:使用Oracle Database 11g时,不存在与特定自动任务永久关联的作业。因此,不能使用DBMS_SCHEDULER过程来控制自动任务的行为。请改而使用DBMS_AUTO_TASK_ADMIN过程。

  • 控制自动维护任务
 
 

 

 

控制自动维护任务
“自动维护任务”功能可以确定任务的执行时间和顺序。DBA 可以控制以下项目:
• 在维护窗口最终不足以承受维护工作量时,调整维护窗口的持续时间和开始时间。
• 控制在每个窗口期间将资源分配给自动维护任务的资源计划。
• 启用或禁用部分或全部维护窗口中的单个任务。
• 在RAC 环境中,通过将维护工作映射到某项服务,将维护工作转移至一个或多个实例。对实例子集启用服务会将维护工作转移至这些实例。
如图中所示,Enterprise Manager 是控制自动维护任务的首选方式。但是,也可以使用DBMS_AUTO_TASK_ADMIN程序包进行控制。

  • Oracle DB 的重要I/O 度量
Oracle DB 的重要I/O 度量
我们先简要总结一下Oracle DB 进程发出的I/O 类型。
数据库I/O 工作量一般分为小型随机I/O 和大型顺序I/O。小型随机I/O 在OLTP 应用环境中比较常用;在这种环境中,各个前台将数据块读入缓冲区高速缓存以进行更新,dbwr进程成批写入更改的块。大型顺序I/O 在OLAP 应用环境中比较常见。OLTP 应用程序的性能取决于小型I/O 的处理速度,而该速度又取决于磁盘的旋转速度和查找数据的速度。大型I/O 性能取决于连接服务器与存储数组的I/O 通道的容量;通道的容量越大,大型I/O 吞吐量就越大。
IOPS(每秒I/O 数):此度量表示在一秒的时间内可以处理的小型随机I/O 数。IOPS 速率主要取决于磁盘介质的旋转速度。通过增加更多的磁盘驱动器或者使用RPM 速率(每分钟转数)更高的磁盘驱动器,可以提高存储数组的IOPS 速率。
MBPS(MB/秒):计算服务器节点与存储数组之间可达到的数据传输速率取决于用于传输数据的I/O 通道的容量。通道越宽,可传输的数据就越多。流数据应用程序的吞吐量取决于可达到的数据传输速度。吞吐量是使用MBPS 度量测量的。
即使对于可传输的顺序数据量磁盘本身存在上限,但限制系统整体吞吐量的通常是通道容量。例如,通过GigE 交换机连接到NAS 服务器的主机就受限于128 MBPS 的传输容量。NAS 中通常有多个磁盘,这些磁盘总共可以提供超过128 MBPS 的传输容量。通道资源成为起限制作用的资源。
I/O 等待时间:等待时间是在测量I/O 子系统的性能时用到的另一个重要度量。通常,等待时间只是磁盘访问磁盘上的特定扇区所用的时间。但是,从数据库的角度来看,等待时间表示的是存储系统处理提交的I/O 请求所花费的全部时间。换而言之,它表示的是在提交了I/O 请求之后第一个传输字节到达之前的开销。等待时间值常用于优化系统时的小型随机I/O。如果排队等待磁盘进行处理的I/O 请求太多,则等待时间会随队列中的等待时间的增加而增加。为了减少I/O 请求的等待时间,数据通常在多个主轴中呈条带状分布,这样对一个文件的所有I/O 请求会在不同的磁盘中得到处理。较长的等待时间通常意味着系统超负荷。
除了上面提到的主要资源以外,还有一些存储数组组件会影响I/O 性能。磁盘数组供应商提供了一些高速缓存机制来提高读取吞吐量,但这些机制在数据库环境中的真实优势是不确定的,因为Oracle DB 使用高速缓存和预读机制,可直接从RAM 而不是从磁盘中读取数据。

  • I/O 校准和Enterprise Manager 







I/O 校准和Enterprise Manager 
要确定前面讨论的I/O 度量,可以使用Enterprise Manager“Performance(性能)”页上的“I/O Calibration(I/O 校准)”工具或PL/SQL。I/O 校准是ORION 工具的修改版本,以异步I/O 库为基础。因为校准需要发出足够的I/O 来使存储系统饱和,所以对性能要求较高的会话会受到负面影响。因此,应仅在系统上有很少的活动时才运行I/O 校准。
I/O 校准的运行时间大约为10 分钟。可以从Enterprise Manager 中直接启动I/O 校准任务(如图中所示)。为此,请单击“Performance(性能)”选项卡。在“Performance(性能)”页上,可单击“I/O”选项卡,然后单击“I/O Calibration(I/O 校准)”按钮。
在“I/O Calibration(I/O 校准)”页上,指定附加到数据库存储系统的物理磁盘的大致数目,以及单个块I/O 请求的最大可容忍等待时间。然后在“I/O Calibration(I/O 校准)”页的“Schedule(调度)”部分,指定执行校准操作的时间。单击“Submit(提交)”按钮创建对应的调度程序作业。
在“Scheduler Jobs(调度程序作业)”页上,可以看到运行校准任务所花费的时间。完成后,可在“I/O Calibration(I/O 校准)”页上查看校准操作的结果:每秒最大I/O 数、每秒最大兆字节数以及平均实际等待时间度量。

  • I/O 校准和PL/SQL 接口
I/O 校准和PL/SQL 接口
可以使用PL/SQL 接口运行I/O 校准任务。执行DBMS_RESOURCE_MANAGER程序包中的CALIBRATE_IO过程。此过程可以校准存储的I/O 容量。校准状态和结果可从V$IO_CALIBRATION_STATUS和DBA_RSRC_IO_CALIBRATE视图中获得。
下面简要说明了为CALIBRATE_IO过程指定的参数:
• num_disks:数据库存储中物理磁盘的大致数目。
• max_latency:数据库块大小的I/O 请求的最大可容忍等待时间(毫秒)。
• max_iops:可支持的每秒最大I/O 请求数。I/O 请求是随机分布的数据库块大小的读取。
• max_bps:可支持的最大I/O 吞吐量(MB/秒)。I/O 请求是随机分布的1MB 读取。
• actual_latency:在max_iops速率下数据库块大小的I/O 请求的平均等待时间(毫秒)。

使用注意事项:
• 只有具备SYSDBA权限的用户才能运行此过程。
• 一次只能运行一个校准任务。如果同时运行了另一个校准任务,则该任务将失败。
• 对于RAC 数据库,工作量是从所有实例中同时生成的。
• 仅当TIMED_STATISTICS初始化参数设置为TRUE(在STATISTICS_LEVEL设置为TYPICAL或ALL时进行此设置)时,才会计算等待时间。

  • I/O 统计信息:概览

I/O 统计信息:概览
为了针对Oracle 实例发出的所有I/O 提供一组一致的统计信息,Oracle Database 11g引入了一系列虚拟视图,用于收集三个维的I/O 统计信息:
• RDBMS 组件:组件按其功能分成12 个类别(如图中所示)。
• 如果启用了资源管理,则将为当前启用的资源计划中的所有使用者组收集I/O 统计信息。
• 另外,还会针对已经打开的单个文件收集I/O 统计信息。
每个维都有读取和写入操作的统计信息。因为读/写可能会在单个块或多个块的操作中出现,因此将这些读/写操作分成四种不同的操作(如图中所示)。对于每个操作类型,将累计对应请求的数量和兆字节数。除了上述内容,还会为组件和使用者组统计信息累计I/O 等待时间总和(毫秒)和等待总数。
对于文件统计信息,除了单个块读取的统计信息外,还将累计总服务时间(微秒)。
虚拟视图可以显示统计信息的累计值。组件和使用者组的统计信息将被转换为AWR 度量,将对这些AWR 度量进行定期取样并将其存储在AWR 资料档案库中。可以在Enterprise Manager 的“Performance(性能)”页上直接检索这些跨时间表的度量。
注:V$IOSTAT_NETWORK可以收集与访问远程数据库实例上的文件相关的网络I/O 统计信息。

  • I/O 统计信息和Enterprise Manager 

I/O 统计信息和Enterprise Manager 
可以在Enterprise Manager 的“Performance(性能)”页上直接检索I/O 统计信息。在“Performance(性能)”页上,单击“Average Active Sessions(平均活动会话数)”图形下方的“I/O”子选项卡。
在“I/O”子页上,可以看到三个可能维上的I/O 统计信息细分:I/O Function(I/O 功能)、I/O Type(I/O 类型)和Consumer Group(使用者组)。选中其中的一个选项可查看相应的维图形。图中显示了与I/O 功能维对应的两个图形:
• 每秒I/O 兆字节(按RDBMS 组件)
• 每秒I/O 请求数(按RDBMS 组件)
注:“Others(其它)”RDBMS 组件类别对应于不是直接从SQL(如PL/SQL 和Java)中发出的所有项目。

  • I/O 统计信息和Enterprise Manager 
 
 
 
 
I/O 统计信息和Enterprise Manager(续)
在“I/O 功能”统计信息图中,单击一个特定组件可以向下细化到该组件。图中的示例向下细化到“Buffer Cache Reads(缓冲区高速缓存读取数)”组件。此时将定位到“I/O Rates by I/O Function(按I/O 功能统计的I/O 速率)”,在该页中可以看到针对该特定组件的三个重要图形:MBPS、IOPS 和等待时间。