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深入分析及性能优化 #### 一、Shared Pool概念与重要性 **Shared Pool** 是Oracle数据库实例内存结构SGA(System Global Area)中的一个重要组成部分,主要用于存储共享的数据结构...
在相克军的ORACLE讲座中,这一章节详细探讨了Shared Pool的工作原理、优化策略以及相关问题的解决方法。 首先,Shared Pool由三个主要部分构成:Free(剩余空间)、Library Cache和Row Cache。Free区域是用来存储未...
Oracle动态性能表是数据库管理员用来监控Oracle数据库性能的关键工具,其中包含了多个系统状态指标,能够帮助我们理解数据库的运行情况并进行性能优化。以下是一些主要的性能指标及其含义: 1. CPU used by this ...
### Oracle 动态性能表学习:深入理解 v$sysstat #### 一、v$sysstat 视图概述 在 Oracle 数据库管理中,动态性能视图(Dynamic Performance Views)是一组特殊的内置视图,提供了关于数据库实例及其内部组件的...
4. 解决方法是通过加大SHARED_POOL_RESERVED_MIN_ALLOC来降低缓冲进入共享池保留空间的对象数目,并且通过增大SHARED_POOL_RESERVED_SIZE和SHARED_POOL_SIZE来加大共享池保留空间的可用内存。 本文通过对ORA-04031...
Oracle数据库的动态性能表是DBA进行系统监控和性能调优的重要工具,其中`v$sysstat`是尤为关键的一个视图。这个视图记录了自数据库实例启动以来的全局实例级统计信息,涵盖了从事件发生次数、资源使用总量到执行时间...
Oracle性能调整是数据库管理员的...以上十点涵盖了Oracle性能调整的核心要素,尤其是在处理Shared Pool相关问题时,它们提供了一套全面的优化策略。通过有效的调整,可以显著提升Oracle数据库的响应速度和整体性能。
Oracle 动态链接表是一种特殊的表,用于存储 Oracle 实例中的各种性能指标和统计信息。下面是 Oracle 动态链接表的知识点总结: 1. v$sysstat 表:存储自数据库实例运行那刻起就开始累计全实例(instance-wide)的...
本文主要探讨了Oracle性能调整的十大要点,重点关注了Shared Pool和Buffer Cache两个关键领域。 首先,Shared Pool是Oracle数据库中存储解析后的SQL语句、数据字典信息和其他共享对象的地方。它的优化对于整体性能...
- **检查初始化参数**:确认SGA相关参数如`SHARED_POOL_SIZE`是否合理设置,并监控`V$SGA_TARGET`在10g及以上版本中自动调整的情况。 3. **解决ORA-04031**: - **增加SHARED_POOL_SIZE**:如果诊断结果显示共享...
Sharedpool是Oracle数据库管理系统中的一个重要组成部分,它负责存储和管理SQL语句、执行计划、控制信息等,以提高数据库的性能。通过缓存用户提交的SQL语句,Sharedpool能够减少重复解析的工作,从而节省系统资源。...
Oracle参数优化是提升Oracle数据库性能的关键环节,涉及到数据库初始化参数的合理配置。在Oracle数据库运行过程中,各个参数对系统性能的影响显著,尤其是对数据库的I/O效率、内存管理和SQL解析等方面。 首先,`DB_...
另外,Oracle的Shared Pool和Buffer Cache管理也需要根据系统特性进行调整。 七、并行执行 并行执行是Oracle处理大数据量操作的有效手段。通过并行查询(Parallel Query)和并行DML(Data Manipulation Language)...
在深入探讨如何解决ORA-04031错误之前,我们需要先了解几个与共享池(`shared pool`)密切相关的Oracle实例参数: 1. **`SHARED_POOL_SIZE`**:此参数定义了共享池的总大小。可以设置为具体数值(例如1024),也可以...
4. **Redo Log Buffer**:虽然不在Shared Pool内,但与Buffer Cache紧密相关。适当增大Redo Log Buffer可以减少因redo数据写入磁盘引发的等待。 综上所述,Oracle性能调优需要综合考虑多个因素,包括内存结构的配置...
Oracle9i数据库的性能优化是数据库管理中的关键环节,它涉及到多个层面的调整与优化,以提高系统的响应速度和整体效率。Oracle数据库的核心文件包括数据文件、控制文件和日志文件,而辅助文件则有参数文件、口令文件...
在Oracle数据库系统中,为了确保高效稳定的数据处理能力,合理配置内存参数是至关其性能的关键因素之一。本文将深入探讨Oracle数据库内存管理的核心概念及其调整方法。 ##### 1. SGA(共享全局区) **定义**:SGA...
### Oracle数据库性能优化——SharedPool原理及性能分析 #### SharedPool的基本原理 Oracle数据库通过引入SharedPool机制,显著提高了数据库的性能。在Oracle 7版本以前,并没有SharedPool的概念,每个用户连接...
再者,Oracle的缓存机制,如Buffer Cache和Shared Pool,对性能影响深远。理解如何调整这些缓存的大小,以及何时使用redo log、undo segment和临时表空间,是优化性能的重要一环。适当的缓存大小可以减少磁盘I/O,...