• 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 会自动检查空间要求。
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    Es6中的模块化Module,导入(import)导出(export)
    js:构造函数和class
    promise返回状态
    ES6之promise(resolve与reject)
    nodeJS 取参 -- req.body & req.query & req.params
    Android UI编程进阶——使用SurfaceViewt和Canvas实现动态时钟
    Android自定义控件前导基础知识学习(一)——Canvas
    Android挂载以点号(.)开头的文件夹或是文件
    Android UI编程之自定义控件初步(下)——CustomEditText
    Android UI编程之自定义控件初步(上)——ImageButton
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13317015.html
Copyright © 2020-2023  润新知