`
piaoling
  • 浏览: 261976 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

oracle动态性能表之shared_pool相关

阅读更多

1)v$shared_pool_advice
这张动态性视图是oracle根据当前系统的负荷进行分析,而得出的推荐值,相关字段如下:

 SHARED_POOL_SIZE_FOR_ESTIMATE  NUMBER  共享池的估计值

 SHARED_POOL_SIZE_FACTOR  NUMBER  当前共享池大小的倍数

 ESTD_LC_SIZE  NUMBER  估计librarycache的大小值
 ESTD_LC_MEMORY_OBJECTS  NUMBER  估计在当前指定的共享池中库缓存对象的数量

 ESTD_LC_TIME_SAVED  NUMBER  考虑在当前指定共享池的大小中找到库缓存对象,所节省的时间(秒)
 ESTD_LC_TIME_SAVED_FACTOR  NUMBER  考虑在当前共享池的大小的前提下,估计节省解析时间的倍数
 ESTD_LC_LOAD_TIME  NUMBER  估计在当前指定共享池的大小前提下,解析所消逝的时间(秒)
 ESTD_LC_LOAD_TIME_FACTOR  NUMBER  考虑在当前指定共享池大小的前提下,估计读取时间的倍数
 ESTD_LC_MEMORY_OBJECT_HITS  NUMBER  估计在当前指共享池大小下库缓存对象被命中的次数


 所以根据:

SELECT shared_pool_size_for_estimate, estd_lc_size, estd_lc_memory_objects,estd_lc_time_saved, estd_lc_time_saved_factor,estd_lc_memory_object_hits FROM v$shared_pool_advice;

我们便能很快得到oracle根据当前负荷给出的shared_pool推荐值,依据查询结果的命中次数趋于平缓时,oracle的推荐值。

 

2)V$LIBRARYCACHE

这张视图主要包括和librarycache的性能和活动的统计信息,根据这张视图我们可以轻易得到当前librarycache的各项指标信息,字段说明如下:

 NAMESPACE  VARCHAR2(15)  Library cache namespace
 GETS  NUMBER  请求获取的次数
 GETHITS  NUMBER  请求获取对象命中的次数
 GETHITRATIO  NUMBER  GETHITS 与GETS比值,即对象共享的命中率
 PINS  NUMBER  对象请求执行的次数
 PINHITS  NUMBER  对象请求执行命中的次数

 PINHITRATIO  NUMBER  PINHITS 与PINS比值,即对象执行的命中率
 RELOADS  NUMBER  对象被librarycache通过LRU算法清除后,又被重新解析放入librarycache中的次数

 INVALIDATIONS  NUMBER  请求执行对象时,发现对象被修改了(一般指DDL,dbms_stats,analyze等操),
                                           要 求 重新读取,而导致对象无效的次数
 DLM_LOCK_REQUESTS  NUMBER  Number of GET requests lock instance locks
 DLM_PIN_REQUESTS  NUMBER  Number of PIN requests lock instance locks
 DLM_PIN_RELEASES  NUMBER  Number of release requests PIN instance locks
 DLM_INVALIDATION_REQUESTS  NUMBER  Number of GET requests for invalidation instance locks
 DLM_INVALIDATIONS  NUMBER  Number of invalidation pings received from other instances

 

对于namespace,oracle官方建议只看前4项的值。
可以通过下面语句判断当前librarycache是不是太小了,如果reload-to-pin的值大于0.1,说明太小,应该增大shared_pool_size(因为不能直接设置librarycache大小,只能通过增加shared_pool_size来增加它)
    select sum(pins) "Executions",
        sum(reloads) "Cache Misses",
        sum(reloads) / sum(pins) " reload-to-pins"
    from v$librarycache;

另外如果GETHITRATIO  值小于95%的话,就说明shared_pool共享池SQL共享率比较低,需要检查一下SQL和共享池的大小。

3)v$sql
    存储的是具体的SQL 和执行计划相关信息,实际上,v$sqlarea 可以看做 v$sql 根据 sqltext 等做了 group by 之后的信息,v$sql   join  to  v$sql_plan  就代表了具体的sql的执行计划,通过下面3个字段做连接
 ADDRESS                                                  RAW(4)
 HASH_VALUE                                            NUMBER
 CHILD_NUMBER                                        NUMBER
举例:
select a.OPERATION,a.OPTIONS,a.OBJECT_name,a.COST,a.BYTES,a.IO_COST
  from v$sql_plan a where a.HASH_VALUE='3464022363' and a.ADDRESS=hextoraw('66726E58')
 and a.CHILD_NUMBER=0;
关于v$sql表示字段信息,参见下面v$sqlarea视图

4)v$sqlarea
     存储的SQL 和一些相关的信息,比如累计的执行次数,逻辑读,物理读等统计信息,通过这个动态性能视图,可以查看SQL的执行情况,找出最消耗资源的SQL。相关重要字段信息说明如下:
     HASH_VALUE:SQL语句的Hash值。
     ADDRESS:SQL语句在SGA中的地址
     PARSING_USER_ID:为语句解析第一条CURSOR的用户
     VERSION_COUNT:语句cursor的数量
     KEPT_VERSIONS:
     SHARABLE_MEMORY:cursor使用的共享内存总数
     PERSISTENT_MEMORY:cursor使用的常驻内存总数
     RUNTIME_MEMORY:cursor使用的运行时内存总数。
     SQL_TEXT:SQL语句的文本(最大只能保存该语句的前1000个字符)。
     MODULE,ACTION:使用了DBMS_APPLICATION_INFO时session解析第一条cursor时的信息
     SORTS: 语句的排序数
     CPU_TIME: 语句被解析和执行的CPU时间
     sorts       所有的子游标排序的次数
     executions     所有的子游标执行的总次数
     invalidations  所有的子游标无效的次数

     parse_calls     所有的子游标解析的次数

     disk_reads     所有的子游标磁盘读的量

     buffer_gets    所有的子游标缓冲区读的量(内存读)

     rows_processed   所有的子游标处理的行数综合

例如查询消耗资源最多的SQL语句:

 SELECT hash_value, executions, buffer_gets, disk_reads, parse_calls
 FROM V$SQLAREA
 WHERE buffer_gets > 10000000 OR disk_reads > 1000000
 ORDER BY buffer_gets + 100 * disk_reads DESC;

5)v$sqltext
    存储的是完整的SQL。

相关参数设置:
shared_pool_size
open_cursors   含义就是这个Session中能够打开游标的最大数
session_cached_cursors  设置session_cached_cursors减少软解析的次数
cursor_space_for_time
cursor_sharing                 取值:exact,similar,force
shared_pool_reserved_size

更新系统级的session_cached_cursors初始值
1)create pfile from spfile
2)shutdown abort
3)编辑INIT,在最后添加:session_cached_cursors=20

分享到:
评论

相关推荐

    oracle性能调整 Shared pool深入分析及性能调整.pdf

    ### Oracle性能调整:Shared Pool深入分析及性能优化 #### 一、Shared Pool概念与重要性 **Shared Pool** 是Oracle数据库实例内存结构SGA(System Global Area)中的一个重要组成部分,主要用于存储共享的数据结构...

    相克军 ORACLE 讲座 shared pool 笔记

    在相克军的ORACLE讲座中,这一章节详细探讨了Shared Pool的工作原理、优化策略以及相关问题的解决方法。 首先,Shared Pool由三个主要部分构成:Free(剩余空间)、Library Cache和Row Cache。Free区域是用来存储未...

    Oracle动态性能表.doc

    Oracle动态性能表是数据库管理员用来监控Oracle数据库性能的关键工具,其中包含了多个系统状态指标,能够帮助我们理解数据库的运行情况并进行性能优化。以下是一些主要的性能指标及其含义: 1. CPU used by this ...

    Oracle 动态性能表学习

    ### Oracle 动态性能表学习:深入理解 v$sysstat #### 一、v$sysstat 视图概述 在 Oracle 数据库管理中,动态性能视图(Dynamic Performance Views)是一组特殊的内置视图,提供了关于数据库实例及其内部组件的...

    Oracle数据库发生ORA-04031错误原因浅析及处理.pdf

    4. 解决方法是通过加大SHARED_POOL_RESERVED_MIN_ALLOC来降低缓冲进入共享池保留空间的对象数目,并且通过增大SHARED_POOL_RESERVED_SIZE和SHARED_POOL_SIZE来加大共享池保留空间的可用内存。 本文通过对ORA-04031...

    学习动态性能表_all_in_one

    Oracle数据库的动态性能表是DBA进行系统监控和性能调优的重要工具,其中`v$sysstat`是尤为关键的一个视图。这个视图记录了自数据库实例启动以来的全局实例级统计信息,涵盖了从事件发生次数、资源使用总量到执行时间...

    oracle性能调整的十大要点

    Oracle性能调整是数据库管理员的...以上十点涵盖了Oracle性能调整的核心要素,尤其是在处理Shared Pool相关问题时,它们提供了一套全面的优化策略。通过有效的调整,可以显著提升Oracle数据库的响应速度和整体性能。

    oracle动态链接表

    Oracle 动态链接表是一种特殊的表,用于存储 Oracle 实例中的各种性能指标和统计信息。下面是 Oracle 动态链接表的知识点总结: 1. v$sysstat 表:存储自数据库实例运行那刻起就开始累计全实例(instance-wide)的...

    Oracle性能优化10大要点[归类].pdf

    本文主要探讨了Oracle性能调整的十大要点,重点关注了Shared Pool和Buffer Cache两个关键领域。 首先,Shared Pool是Oracle数据库中存储解析后的SQL语句、数据字典信息和其他共享对象的地方。它的优化对于整体性能...

    如何解决Oracle数据库中的04031错误

    - **检查初始化参数**:确认SGA相关参数如`SHARED_POOL_SIZE`是否合理设置,并监控`V$SGA_TARGET`在10g及以上版本中自动调整的情况。 3. **解决ORA-04031**: - **增加SHARED_POOL_SIZE**:如果诊断结果显示共享...

    计算机软件及应用Sharedpool深入分析及性能调整PPT学习教案.pptx

    Sharedpool是Oracle数据库管理系统中的一个重要组成部分,它负责存储和管理SQL语句、执行计划、控制信息等,以提高数据库的性能。通过缓存用户提交的SQL语句,Sharedpool能够减少重复解析的工作,从而节省系统资源。...

    Oracle参数优化

    Oracle参数优化是提升Oracle数据库性能的关键环节,涉及到数据库初始化参数的合理配置。在Oracle数据库运行过程中,各个参数对系统性能的影响显著,尤其是对数据库的I/O效率、内存管理和SQL解析等方面。 首先,`DB_...

    Oracle性能优化技术内幕part_3

    另外,Oracle的Shared Pool和Buffer Cache管理也需要根据系统特性进行调整。 七、并行执行 并行执行是Oracle处理大数据量操作的有效手段。通过并行查询(Parallel Query)和并行DML(Data Manipulation Language)...

    如何解决Oracle 常见错误 ORA-04031(PDF)

    在深入探讨如何解决ORA-04031错误之前,我们需要先了解几个与共享池(`shared pool`)密切相关的Oracle实例参数: 1. **`SHARED_POOL_SIZE`**:此参数定义了共享池的总大小。可以设置为具体数值(例如1024),也可以...

    oracle性能调优

    4. **Redo Log Buffer**:虽然不在Shared Pool内,但与Buffer Cache紧密相关。适当增大Redo Log Buffer可以减少因redo数据写入磁盘引发的等待。 综上所述,Oracle性能调优需要综合考虑多个因素,包括内存结构的配置...

    Oracle9i数据库的性能优化技巧.pdf

    Oracle9i数据库的性能优化是数据库管理中的关键环节,它涉及到多个层面的调整与优化,以提高系统的响应速度和整体效率。Oracle数据库的核心文件包括数据文件、控制文件和日志文件,而辅助文件则有参数文件、口令文件...

    Oracle 性能 调优

    在Oracle数据库系统中,为了确保高效稳定的数据处理能力,合理配置内存参数是至关其性能的关键因素之一。本文将深入探讨Oracle数据库内存管理的核心概念及其调整方法。 ##### 1. SGA(共享全局区) **定义**:SGA...

    Oracle数据库性能优化

    ### Oracle数据库性能优化——SharedPool原理及性能分析 #### SharedPool的基本原理 Oracle数据库通过引入SharedPool机制,显著提高了数据库的性能。在Oracle 7版本以前,并没有SharedPool的概念,每个用户连接...

    Oracle性能优化技术内幕part_1

    再者,Oracle的缓存机制,如Buffer Cache和Shared Pool,对性能影响深远。理解如何调整这些缓存的大小,以及何时使用redo log、undo segment和临时表空间,是优化性能的重要一环。适当的缓存大小可以减少磁盘I/O,...

Global site tag (gtag.js) - Google Analytics