zoukankan      html  css  js  c++  java
  • [转]Oracle DB 性能管理

    • 使用Oracle Enterprise Manager 监视性能
    • 使用自动内存管理(AMM)
    • 使用内存指导调整内存缓冲区的大小
    • 查看与性能相关的动态视图
    • 排除无效和不可用对象产生的故障
     
    • 性能监视
    要管理Oracle Database 11g并保持其正常运行,数据库管理员(DBA) 必须通过定期监视性能来查找瓶颈所在,然后更正问题。
    DBA 可以查看的性能度量有数百种,包括从网络性能和磁盘输入/输出(I/O) 速度到运行单个应用程序操作所花费的时间等所有相关方面。这些性能度量通常称为“数据库度量”。
     
    • Enterprise Manager 的性能页
    Enterprise Manager 中的“Performance(性能)”页是一个门户,它提供了一组功能强大的性能监视和优化工具。此页的第一组图概述了进程和活动会话活动。“Average Active
    Sessions(平均活动会话数)”图中显示了CPU 使用级别及造成大多数等待事件的资源。
    单击这些类别可查看有关等待时间的详细信息。I/O 数据被分为输入类型和输出类型(例如日志文件读取、控制文件写入等)。
     
    • 细化到特定的等待类别
    细化到特定的等待类别后,可查看具体到五分钟时间间隔的详细资料,同时可以看见这段时间内与特定的等待事件相关联的顶级运行SQL 和顶级运行会话。这样可对系统执行速度
    下降的问题进行事后分析,从而确定可能存在的原因。
    示例显示了平均活动会话图形的“Concurrency(并发)”类别进行细化的结果。
     
    • 性能页:吞吐量
    单击“Performance(性能)”主页上的“Throughput(吞吐量)”和“I/O”选项卡,可以查看实例吞吐量图和实例磁盘I/O 图。上图中选择的是“Throughput(吞吐量)”选项卡。
     
    • 性能监视:顶级会话
    单击“Additional Monitoring Links(其它监视链接)”部分中的“Top Consumers(顶级使用者)”会进入“Top Consumers(顶级使用者)”页。
    “Top Consumers Overview(顶级使用者概览)”页以图形格式显示以下内容:
    • 顶级服务
    • 顶级模块(按服务统计)
    • 顶级操作(按服务和模块统计)
    • 顶级客户机
    在“Top Consumers(顶级使用者)”页上单击“Top Sessions(顶级会话)”选项卡,可查看占用资源最多的会话的重要统计信息:
    •CPU
    • PGA 内存
    • 逻辑读取数
    • 物理读取数
    • 硬性语法分析计数
    • 排序计数
     
    单击某个列名,将按照该列的值对结果进行排序。此页上的表中列出了按逻辑读取数排序的会话。
    • 性能监视:顶级服务
    在多层系统中,如果存在作为共享数据库连接的应用程序服务器,就不能通过查看会话来获得分析性能所需要的信息。将会话按服务名称分组可以更加准确地监视性能。
    在幻灯片示例中,有1个服务:SYS$BACKGROUND。无论特定请求使用什么会话,只要通过其中一个服务连接会话,会话的性能数据就会被捕获并
    列在该服务名之下。
    • 管理内存组件
    • 自动内存管理(AMM)
    – 使你可以指定分配给实例的总内存(包括SGA 和PGA)
    • 自动共享内存管理(ASMM):
    – 使你可以通过一个初始化参数指定SGA 总内存
    – 使Oracle 服务器可以管理分配给共享池、Java 池、
    缓冲区高速缓存、流池和大型池的内存量
    • 手动设置共享内存管理:
    – 通过多个单独的初始化参数调整组件的大小
    – 使用适当的内存指导提出建议
     
    在Oracle Database 11g中,可以指定分配给实例的总内存。可以根据需要,在系统全局区(SGA) 和程序全局区(PGA) 之间动态地重新分配内存。此方法称为自动内存管理(AMM),
    它仅适用于支持动态释放内存的平台。这样就简化了内存管理任务。
    内存指导可帮助你在各种级别设置初始化参数。具体使用哪个指导将取决于要在哪个级别指定内存参数。如果启用了AMM,则只能使用内存大小指导。
    使用自动共享内存管理(ASMM) 可以将SGA 作为整体进行管理。SGA 包含多个组件。
    其中许多组件的大小都可在初始化参数限制范围内动态地进行调整,以便获得最佳性能。
    启用AMM 后,ASMM 也会自动启用。如果只启用ASMM 而未启用AMM,则可使用SGA 大小指导。
    通过设置各组件的初始化参数,可以手动管理该组件的大小。如果Oracle 服务器通知你出现了与SGA 或PGA 组件大小相关的性能问题,可以使用该组件的内存指导来确定适当的新设置。内存指导可以模拟参数更改的效果。
     
     
     
    • 启用自动内存管理(AMM)
    如果在配置数据库时未启用自动内存管理(AMM),可以执行以下步骤来启用它:
    1. 在“Database(数据库)”主页上,单击“Server(服务器)”选项卡。
    2. 在“Database Configuration(数据库配置)”区域,单击“Memory Advisors(内存指导)”。此时将显示“Memory Advisors(内存指导)”页。
    3. 单击“Enable(启用)”启用自动内存管理。此时会出现“Enable Automatic Memory Management(启用自动内存管理)”页。
    4. 为自动内存管理的“Total Memory Size(内存总大小)”和“Maximum Memory Size(最大内存大小)”设置适当的值。
    注:如果更改“Maximum Memory Size(最大内存大小)”,必须重新启动数据库实例。
    5. 单击“OK(确定)”。
    以后可通过增大“Total Memory Size(内存总大小)”字段或初始化参数MEMORY_TARGET的值来增大内存总大小。但不能将该大小设置为大于“Maximum
    Memory Size(最大内存大小)”字段或MEMORY_MAX_TARGET参数所指定的值。
    启用AMM 后,可使用内存大小指导来帮助调整最大内存大小和目标内存大小。注:Oracle 建议使用自动内存管理来简化内存管理任务。
     
     
    • 启用自动共享内存管理(ASMM)
     
    如果已启用AMM,则会自动启用自动共享内存管理。如果在配置数据库时未启用AMM 或ASMM,可以执行以下步骤来启用自动共享内存管理:
    1. 在“Database(数据库)”主页上,单击“Server(服务器)”选项卡。
    2. 在“Database Configuration(数据库配置)”区域,单击“Memory Advisors(内存指导)”。
    此时将显示“Memory Advisors(内存指导)”页。
    3. 向下滚动到SGA 部分。单击“Enable(启用)”启用自动共享内存管理。
    此时会出现“Enable Automatic Shared Memory Management(启用自动共享内存管理)”页。
    4. 指定SGA 总大小。单击“OK(确定)”。
     
    以后可通过增大“Total SGA Size(SGA 总大小)”字段或初始化参数SGA_TARGET的值来增大SGA 的总大小。但不能将该大小设置为大于“Maximum SGA Size(最大SGA
    大小)”字段或SGA_MAX_SIZE参数所指定的值。
    禁用AMM 时,也可以访问PGA 指导。建议使用PGA 指导设置PGA 内存值。单击“PGA”选项卡可访问PGA 属性页。单击“Advice(建议)”调用PGA 指导。
    注:Oracle 建议使用自动共享内存管理来简化内存管理任务。
     
     
    • 自动共享内存指导
    如果启用了ASMM,则不应为ASMM 所管理的特定共享内存组件设置初始化参数。启用AMM 后,可使用SGA 大小指导帮助你选择SGA 总大小的最佳值。
    启用ASMM 之前,应该从SPFILE 中删除单个内存区参数,因为设置这些参数会使ASMM 受到限制。看到ASMM 分配的效果之后,如果决定要调整特定组件的分配值,可以为这些组件指定值。如果指定的值比目前的值小,这些值将被视为各个组件的最小内存大小。如果指定的值比目前的值大,那么只要有空闲内存,就可以将内存组件的大小重新上调至你提供的值。执行此操作会限制可用于自动调整的内存量,但在环境需要对大小进行特殊调整、而ASMM 又无法满足此需要时,可使用此功能。
    相关的初始化参数如下:
    • SHARED_POOL_SIZE
    • LARGE_POOL_SIZE
    • JAVA_POOL_SIZE
    • DB_CACHE_SIZE
    • STREAMS_POOL_SIZE
    要在启用ASMM 后调整这些参数,必须使用ALTER SYSTEM命令。
     
     
    • 动态性能统计信息
     
    要有效地诊断性能问题,必须使用统计信息。Oracle 服务器会在不同粒度级生成多种类型的统计信息。
    在系统范围级、会话级和服务级,均会计算出等待事件和累积统计信息。在上图中,视图的顶行显示累积统计信息,底行则显示等待事件的视图。
    分析其中任一范围内的性能问题时,通常会查看感兴趣的某一时段内统计信息的变化(差值)。所有可能的等待事件都会列入V$EVENT_NAME视图目录。
    所有统计信息均编录在V$STATNAME视图中;Oracle DB 中大约有480 种统计信息。
     
    显示系统范围的统计信息
    示例:
    sys@TEST0924> SELECT name, class, value FROM v$sysstat;
     
    NAME                                                                  CLASS      VALUE
    ---------------------------------------------------------------- ---------- ----------
    ...
    table scans (short tables)                                               64      119823
    table scans (long tables)                                                64         20
    table scans (rowid ranges)                                             64          0
    table scans (cache partitions)                                         64          0
    table scans (direct read)                                                64          0
    table scan rows gotten                                                   64      19567742
    table scan blocks gotten                                                 64     463215
    ...
     
    638 rows selected.
    系统范围的统计信息按优化主题和调试目的分类。这些类别包括一般实例活动、重做日志缓冲区活动、锁定、数据库缓冲区高速缓存活动等等。
     
    • 故障排除和优化视图
    上图中列出了部分视图,这些视图有助于确定导致性能问题的原因或分析数据库的当前状态。
     
     
    • 无效和不可用对象
    对性能的影响:
    • PL/SQL 代码对象要重新编译。
    • 索引要重建。
     
    无效PL/SQL 对象和不可用索引会对性能产生影响。无效PL/SQL 对象必须先重新编译,然后才能使用。这需要将编译时间加到尝试访问PL/SQL 程序包、过程或函数的第一个操作中。如果PL/SQL 重编译未成功,则操作会因发生错误而失败。优化程序会忽略不可用索引。如果SQL 语句性能的好坏取决于已标记为不可用的索引,则只有重建索引才能改善性能。
    无效PL/SQL 对象:可通过查询数据字典来查看PL/SQL 对象的当前状态。可使用以下命令行查找到无效PL/SQL 对象:
    SELECT object_name, object_type FROM DBA_OBJECTS WHERE status = 'INVALID';
    默认情况下,每24 小时会检查一次“所有者的无效对象计数”度量。如果单个所有者的对象数超过两个,就会发出预警。
    如果查找到INVALID状态的PL/SQL 对象,需要回答的第一个问题是“此对象曾经是VALID的吗?”应用程序开发人员常常会忘记清除不起作用的代码。如果PL/SQL 对象因
    代码错误而无效,则除了纠正代码错误之外,没有什么别的方法。如果该过程在过去曾经有效,最近才变为无效,则可选择以下两种方法解决这个问题:
    • 不做任何处理。如果需要,大多数PL/SQL 对象在被调用时会自动重新编译。用户在对象重新编译时会经历短暂的延迟。(大多数情况下,这种延迟不十分明显。)
    • 手动重新编译无效对象。
    使用Enterprise Manager 或通过SQL 命令可手动重新编译无效的PL/SQL 对象:
    ALTER PROCEDURE HR.add_job_history COMPILE;
    手动重新编译PL/SQL 数据包,需要执行以下两个步骤:
    ALTER PACKAGE HR.maintainemp COMPILE;
    ALTER PACKAGE HR.maintainemp COMPILE BODY;
     
     
    不可用索引:可通过查询DBA_INDEXES数据字典视图查找无效索引:
    SELECT index_name, table_name FROM DBA_INDEXES WHERE status = 'UNUSABLE';
    对于分区索引,状态保存在DBA_IND_PARTITIONS视图中。
    通过重建不可用索引来重算指针,可使不可用索引变为有效。重建不可用索引会在新位置重新创建索引,然后会删除不可用索引。
    使用Enterprise Manager 或通过SQL 命令可完成此操作:
    ALTER INDEX HR.emp_empid_pk REBUILD;
    ALTER INDEX HR.emp_empid_pk REBUILD ONLINE;
    ALTER INDEX HR.email REBUILD TABLESPACE USERS;
    如果省略了TABLESPACE子句,则会在索引曾经所在的相同表空间中重建索引。
    使用REBUILD ONLINE子句,用户可以在重建时继续更新索引表。(如果不使用ONLINE关键字,用户必须等待重建完成后才能对受影响的表执行DML。如果索引不可用,即便
    使用了ONLINE关键字,也不会在重建过程中使用该索引。)
    Enterprise Manager 使用“Reorganize(重组)”操作修复UNUSABLE索引。
    注:重建索引时需要有可用于重建的空闲空间。请在尝试重建前验证是否有足够的空间。Enterprise Manager 会自动检查空间要求。
     
    来源:http://blog.csdn.net/rlhua/article/details/12561191
  • 相关阅读:
    451. Sort Characters By Frequency
    424. Longest Repeating Character Replacement
    68. Text Justification
    44. Wildcard Matching
    160. Intersection of Two Linked Lists
    24. Swap Nodes in Pairs
    93. 递归实现组合型枚举
    98. 分形之城
    97. 约数之和
    96. 奇怪的汉诺塔
  • 原文地址:https://www.cnblogs.com/gispf/p/3727845.html
Copyright © 2011-2022 走看看