此图表显示执行最大物理读取数的 SQL 语句。
提高 SQL 性能通常是提高应用程序性能的最有效的方法。在识别最有可能提高性能的语句时,您可能应该考虑 I/O 需求最高的语句。换句话说,考虑具有最大读取请求数的语句,且这些读取请求会导致访问磁盘上的数据文件。
另一个值得考虑的因素是执行该语句的频率。高 I/O 级别的语句可能每天只执行一次,执行次数比其他每天执行数千次的较低 I/O 级别语句要少得多。
查询导致过多磁盘读取的原因有很多种;例如一个全表扫描正在被执行。
还有大量的下钻图表可用于进一步诊断 I/O 的起因,它们包括:
有关如何最佳优化特定 SQL 语句的进一步研究,可通过选择所列出的任一 SQL 语句并使用 SQL Analyze 工具来进行。
此图表包括下列数据项:
此图表显示完整 SQL 文本,该文本是在某些 TOP SQL 图表中截断的。
某些 TOP SQL 图表中所显示的 SQL 是一种截断值,因为从 V$SQLAREA 中只可获得截断值。要获取完整 SQL 文本,必须查询 V$SQLTEXT_WITH_NEWLINES,以聚集查询的各个段。出于性能上的考虑,仅会在需要显示完整 SQL 文本时才显示此图表。
此图表包括下列数据项:
此图表使用可从数据库获得的统计数据为用户显示我们对总响应时间的最佳估计。这里将响应时间定义为数据库内所有会话所消耗的总等待时间加上总 CPU 时间,它除以提交数与回退数之和就得出每个事务处理的值。如果正在以只读模式访问数据库,或者未将 TIMED_STATISTICS 设置为 TRUE,则每个事务处理的值可能显示为 0。
监视只读数据库时,度量响应时间的较好方法可能基于每个执行,即每个 SQL 语句执行的平均时间长度。要查看此统计数据,请参阅每个执行花费的时间图表。
有关响应时间的各个部分 (即 CPU 时间和等待时间) 的进一步研究结果,可通过下钻到等待或受 CPU 限制得到。
此图表包括下列数据项:
此图表显示在采样周期内提交和回退的事务处理,以及 SQL 执行计数。这是一个良好的吞吐量概览。
此图表包括下列数据项:
此图表基于每个用户显示每个事务处理响应时间的细目分类。
跨每个用户的所有会话来总计 CPU 时间和等待时间。此图表有助于监视将其功能分散到不同用户的应用程序的响应时间。
此图表包括下列数据项:
此图表按用户显示吞吐量或负载统计数据。跨用户的所有会话来总计这些统计数据。
此图表包括下列数据项:
此图表是一个跨例程的事件列表,按照每个事件类型的等待时间总和来排序。
此列表将使用户能够快速识别例程等待哪个事件时间最长。每种事件类型受不同参数和条件的影响。进一步下钻是通过选择感兴趣的特定等待事件来完成的。一些等待事件具有专门的下钻图表以帮助诊断该等待的原因。
还有一般下钻,可用于所有等待事件。要确定有多少会话当前正在等待特定的事件,请使用等待此事件的会话图表。类似地,要查看当前正在等待此事件的 SQL 语句,请使用等待此事件的 SQL 语句图表。这会将您快速引向正在经历等待的 SQL 语句,并帮助您确定此等待对应用程序的影响。
此图表包括下列数据项:
此图表显示在采样周期内发生的例程范围内的等待数。仅显示具有非零计数的事件。也将显示等待计数以及超时数。
等待计数不如等待花费的实际时间重要。一个会话可能请求一种资源,并发出一个等待,但请求可能会被立即批准。尽管实际上并未发生等待时间,但等待计数仍将增加。
此图表包括下列数据项:
此图表与缓冲区忙事件有关。确定数据库正在等待的块 (缓冲区) 的类型将决定一种可能的解决方案,以减少对那些块的争用。我们感兴趣的三种类型的块是段标题块、数据块和空闲列表块。
本节简要说明这三种块类型。
段标题块等待数:
问题:由于对某个表有大量插入,事务处理的空闲列表就可能不足,因而访问事务处理的空闲列表就成了一个瓶颈。解决方案:添加更多的空闲列表组。还可能添加更多的空闲列表组,以解决太小的块限制空闲列表数 (甚至在独占模式下也是如此) 的局限性。
问题:由于表在不断增大,且不断地将所有的块用于空闲列表的新插入条目,所以该表的高水线标记 (HWM) 可能会一直增加。提升 HWM 的缺省值是 5,在一个忙碌的系统上,或相对平均插入大小,此值可能太小。解决方案:可以通过 init.ora 参数 _BUMP_HIGHWATER_MARK_COUNT 将 HWM 值增加到 255。注:此参数将确定在提升 HWM 时每个空闲列表应分配多少个块。因此,如果空闲列表的数目也很高的话,会使表增加到非常大。例如,如果我们有 100 个空闲列表,且设置 _BUMP_HIGHWATER_MARK_COUNT=100,这就意味着将 10000 个块 (可能) 添加到了区中。
问题:区的容量太小,因此表在持续增长。作为一条规则,拥有少量非常大的区比拥有大量很小的区要好。解决方案:增大每个区的尺寸。
数据块:用来存储数据 (索引或数据)。问题:多个会话可能同时从磁盘上读取同一个块 (这个问题每个块类都可能发生)。只有一个会话将进行读取,其他的会话将一直在缓冲区高速缓存中等待该块被读完。这些其他会话将在该缓冲区忙的等待事件中一直等待下去。解决方案:缓冲区高速缓存可能太小,无法将当前工作集保留在内存中。增大缓冲区高速缓存 (db_block_buffers) 将会有帮助,或者使用缓冲池以减少一个对象可能占用的缓冲区数 (例如,限制随机访问大型表或历史记录表在缓冲区高速缓存中可能占用的缓冲区数)。
问题:多个会话都在试图访问某个块中的同一行。因为每个块有太多的行 (大数据块中的很多小行),所以可能出现此问题。解决方案:减少每个块的行数 (需要更改 pctfree/pctuse 设置)。这是时间优化的空间。此表将使用更多的空间,但缓冲区忙等待的等待时间将减少。
问题:多个会话试图插入同一个块。为何是同一个块的原因是只有一个空闲列表 (或者空闲列表不够)。空闲列表只有一个头部。解决方案:将多个空闲列表添加到对象中将增加空闲列表的头部数目。这样就将争用点分布于各个空闲列表上,从而减少了缓冲区忙等待数。
空闲列表块:添加更多的空闲列表。如果是并行服务器,请确保每个例程都有其自身的一个或多个空闲列表组。
还原标题块:添加更多的回退段 (在独占模式下运行时)。将每个回退段的事务处理设置为 1 (独占模式)。
还原块:请考虑在独占模式下使回退段变大或仅以并行服务器模式增加 PCM 锁 (GC_ROLLBACK_LOCKS) 的数目。
此图表包括下列数据项:
此图表与缓冲区忙事件有关。确定数据库正在等待的块 (缓冲区) 的类型将决定一种可能的解决方案,以减少对那些块的争用。我们感兴趣的三种类型的块是段标题块、数据块和空闲列表块。
本节简要说明这三种块类型。
段标题块等待数:问题:由于对某个表有大量插入,事务处理的空闲列表就可能不足,因而访问事务处理的空闲列表就成了一个瓶颈。解决方案:添加更多的空闲列表组。还可能添加更多的空闲列表组,以解决太小的块限制空闲列表数 (甚至在独占模式下也是如此) 的局限性。
问题:由于表在不断增大,且不断地将所有的块用于空闲列表的新插入条目,所以该表的高水线标记 (HWM) 可能会一直增加。提升 HWM 的缺省值是 5,在一个忙碌的系统上,或对于平均插入大小,此值可能太小。解决方案:可以通过 init.ora 参数 _BUMP_HIGHWATER_MARK_COUNT 将 HWM 值增加到 255。注意:此参数将确定在提升 HWM 时每个空闲列表应分配多少块。因此,如果空闲列表的数目也很高的话,会使表增加到非常大。例如,如果我们有 100 个空闲列表,且设置 _BUMP_HIGHWATER_MARK_COUNT=100,这就意味着将 10000 个块 (可能) 添加到了区中。
问题:区的容量太小,因此表在持续增长。作为一条规则,拥有少量非常大的区比拥有大量很小的区要好。解决方案:增大每个区的尺寸。
数据块:用来存储数据 (索引或数据)。问题:多个会话可能同时从磁盘上读取同一个块 (这个问题每个块类都可能发生)。只有一个会话将进行读取,其他的会话将一直在缓冲区高速缓存中等待该块被读完。这些其他会话将在该缓冲区忙的等待事件中一直等待下去。解决方案:可能是缓冲区高速缓存太小以致于不能将当前工作集保存在内存中。增大缓冲区高速缓存 (db_block_buffers) 将会有帮助,或者使用缓冲区池以减少一个对象在缓冲区高速缓存中可能占用的缓冲区数 (例如,限制随机访问大型表或历史记录表在缓冲区高速缓存中可能占用的缓冲区数)。
问题:多个会话都在试图访问某个块中的同一行。因为每个块有太多的行 (大数据块中的很多小行),所以可能出现此问题。解决方案:减少每个块的行数 (需要更改 pctfree/pctuse 设置)。这是时间优化的空间。表将使用更多的空间,但缓冲区忙等待的等待时间将减少。
问题:多个会话试图插入同一个块。为何是同一个块的原因是只有一个空闲列表 (或者空闲列表不够)。空闲列表只有一个头部。解决方案:把多个空闲列表添加到对象将增加空闲列表的头部数目。这样就将争用点分布于各个空闲列表上,从而减少了缓冲区忙等待数。
问题:因为对空闲列表的新插入导致此表增大并用尽块,所以可能持续增加此表的高水线标记。提升 HWM 的缺省值是 5,在一个忙碌的系统上,或对于平均插入大小,此值可能太小。解决方案:可以通过 init.ora 参数 _BUMP_HIGHWATER_MARK_COUNT 将 HWM 值增加到 255。注意:此参数将确定在提升 HWM 时每个空闲列表应分配多少块。因此,如果空闲列表的数目也很高的话,会使表增加到非常大。例如,如果我们有 100 个空闲列表,且设置 _BUMP_HIGHWATER_MARK_COUNT=100,这就意味着将 10000 个块 (可能) 添加到了区中。
问题:区的容量太小,因此表在持续增长。作为一条规则,拥有少量非常大的区比拥有大量很小的区要好。解决方案:增大每个区的尺寸。
数据块:用来存储数据 (索引或数据)。问题:多个会话可能同时从磁盘上读取同一个块 (这在每个块类上都可能发生)。只有一个会话将进行读取,其他的会话将一直在缓冲区高速缓存中等待该块被读完。这些其他会话将在该缓冲区忙的等待事件中一直等待下去。解决方案:可能是缓冲区高速缓存太小以致于不能将当前工作集保存在内存中。增大缓冲区高速缓存 (db_block_buffers) 将会有帮助,或者使用缓冲区池以减少一个对象在缓冲区高速缓存中可能占用的缓冲区数 (例如,限制随机访问大型表或历史记录表在缓冲区高速缓存中可能占用的缓冲区数)。
问题:多个会话都在试图访问某个块中的同一行。因为每个块有太多的行 (大数据块中的很多小行),所以可能出现此问题。解决方案:减少每个块的行数 (需要更改 pctfree/pctuse 设置)。这是时间优化的空间。表将使用更多的空间,但缓冲区忙等待的等待时间将减少。
问题:多个会话试图插入同一个块。为何是同一个块的原因是只有一个空闲列表 (或者空闲列表不够)。空闲列表只有一个头部。解决方案:把多个空闲列表添加到对象将增加空闲列表的头部数目。这样就将争用点分布于各个空闲列表上,从而减少了缓冲区忙等待数。
空闲列表块:添加更多的空闲列表。如果是并行服务器,请确保每个例程都有其自身的一个或多个空闲列表组。
还原标题块:添加更多的回退段 (在独占模式下运行时)。将每个回退段的事务处理设置为 1 (独占模式)。
还原块:请考虑在独占模式下使回退段变大或仅以并行服务器模式增加 PCM 锁 (GC_ROLLBACK_LOCKS) 的数目。
此图表包括下列数据项:
此图表显示执行最大缓冲区获取数的 SQL 语句。
提高 SQL 性能通常是提高应用程序性能的最有效的方法。在标识最有可能提高性能的语句时,您可能需要考虑缓冲区获取最高的语句。缓冲区获取数 (或逻辑读取数) 是 CPU 时间的贡献者之一,因为它要求从高速缓存中定位和检索缓冲区。
另一个值得考虑的因素是执行该语句的频率。高缓冲区获取数的语句可能每天只执行一次,执行次数比其他每天执行数千次的较少缓冲区获取数语句要少得多。
查询导致过多缓冲区获取的原因有很多种;例如一个全表扫描正在被执行。
有大量的下钻图表可用于帮助进一步诊断潜在的问题,这些图表包括:有关如何最佳优化特定 SQL 语句的进一步研究,可通过选择所列出的任一 SQL 语句并使用 SQL Analyze 工具来进行。
优化这些语句将导致用于应用程序的 CPU 时间的减少。在确定应该首先优化哪一条 SQL语句时执行计数也是重要的。最高缓冲区获取计数的语句可能一天执行一次,频率比列表中的另一个语句要少得多。调整最高计数的 SQL 语句对此情况下应用程序或系统的改善可能会不如执行频率高得多的语句。
此图表将标识执行最大缓冲区获取数的 SQL 语句。为何查询正在执行这些缓冲区获取可能有多种原因,其中全表扫描是一个常见的原因。为帮助进一步诊断引起问题的原因,有很多可用的下钻图表。此图表中显示的 SQL 限定了固定的字符数。要查看全 SQL 文本,请使用 SQL 文本 。要查看此查询引用的表和检查优化程序所使用的统计数据的有效性,请使用此查询所引用的表图表。要查看按“物理读取数”排序的 SQL,请使用顶层 SQL (物理读取数)图表。
有关如何最佳优化特定 SQL 语句的进一步研究,可通过选择所列出的任一 SQL 语句并使用 SQL Analyze 工具来实现。
此图表包括下列数据项:
此图表将按照 I/O 的平均成本为最差的数据库文件排列在最前面。I/O 的成本是指读取时间/物理读取数。此图表将显示一个给定文件可以被选来进行条带化处理,或者显示应该增加条带宽度或条带化处理中涉及的磁盘总数。
如果每个 I/O 的平均成本很高,则表示需要增加条带宽度或条带化处理所涉及的磁盘总数。另外,请查看每个事务处理的总 I/O 数,每个事务处理的 I/O 速率,然后查看有多少并发事务处理正在运行。例如:如果每个事务处理需要两个读操作和一个写操作,并希望每秒执行 1000 个事务处理,则此计算要求系统实际上每秒能处理 3000 次 I/O。因此,如果一个磁盘每秒钟可以执行 50-100 次 I/O,则至少需要 60 个磁盘 (3000/50)。现在如果需求从每秒 1000 个事务处理增加一倍,即 2000 个事务处理,则需要将磁盘数增加一倍。
此图表包括下列数据项:
此图表列出数据库的数据文件并显示每秒的物理读取数和每秒的块读取数。此图表能够快速指出数据库中的热点文件。
此图表包括下列数据项:
此图表列出数据库的数据文件并显示每秒的物理写入数和每秒的写入块数。此图表能够快速指出数据库中的热点文件。
此图表包括下列数据项:
此图表显示对哪些文件执行了全表扫描、范围扫描或单块读取。正在执行单块 (以及它们内部的对象) 读取的文件可能被选来用于索引选择。
单个 I/O 操作中读取的块数由 init.ora 参数 db_file_multi_block_read_count 确定。
当某个文件的物理读取数与物理块读取数接近 (即当物理读取数除以物理块读取数的结果接近 1) 时,则在该文件上正在发生单块读取。如果结果值不接近 1,则在该文件上正在执行全表扫描或范围扫描。
对于正在执行单块读取的文件,请查看文件内的对象,以确定对这些对象进行索引是否适当。要减少散列读取数据库文件的成本,请检查每个磁盘上的文件位置、磁盘数和每个磁盘的条带大小 (此值应该为 2 * db_file_multi_block_read_count)
此图表有助于识别休眠计数最大的栓锁。休眠计数是通过轮选没有获取栓锁并强制栓锁休眠的次数。
当栓锁空闲等待数很大时,确定正在请求哪个栓锁是很重要的。当瓶颈是单个栓锁时,增大轮选计数可以有帮助。在这种情况下,轮选 CPU 比让进程休眠付出的成本要“更便宜”。另外,识别休眠数最高的栓锁将指向应用程序/数据库中的瓶颈。如果通过进一步的分析您可以消除此瓶颈,您将增大吞吐量比率。
栓锁被用来使对数据库中各种资源的访问同步化。调整各个栓锁要求对各个栓锁的进一步研究。
此图表包括下列数据项:
此图表显示所有栓锁的获取和丢失比率。此处的值是实际比率。计算对这些栓锁的争用并在栓锁争用 (>1% 潜在问题) 图表中显示。
此图表包括下列数据项:
此图表显示栓锁的争用量。如果以下两个条件之一为真,则栓锁争用可能会影响性能:
如果对于某个栓锁这两个条件之一为真,则尽量减少对该栓锁的争用。虽然一些具有许多 CPU 的计算机也许能够容许更多的争用而不会降低性能,但是这些争用阈值适合于大多数操作系统。
大多数栓锁争用事例发生在两个或多个 Oracle 进程并发地试图获取同一栓锁的时候。栓锁争用极少发生在单 CPU 计算机上,在此计算机上一次只能有一个进程是活动的。
要减少对重做分配栓锁的争用,您应该将任何单个进程持有栓锁的时间减至最少。要减少这一时间,请减少在重做分配栓锁上的复制。减小初始化参数 LOG_SMALL_ENTRY_MAX_SIZE 的值会减小在重做分配栓锁上复制的重做条目的数目和大小。
在多 CPU 计算机上,多个重做复制栓锁允许多个进程并发地将条目复制到重做日志缓冲区中。LOG_SIMULTANEOUS_COPIES 的缺省值是您的 Oracle 例程可用的 CPU 数。
如果您观察到对重做复制栓锁的争用,则通过增大 LOG_SIMULTANEOUS_COPIES 的值来添加更多的栓锁。请考虑使重做复制栓锁数为 Oracle 例程可用的 CPU 数的两倍。
LRU (最近最少使用) 栓锁控制缓冲区高速缓存中缓冲区的替换。对于对称多处理器 (SMP) 系统,Oracle 自动地将 LRU 栓锁数设置为等于系统上 CPU 数一半的值。对于非 SMP 系统,一个 LRU 栓锁就足够了。
对 LRU 栓锁的争用可能降低具有大量 CPU 的 SMP 计算机上的性能。通过查询 V$LATCH,V$SESSION_EVENT 和 V$SYSTEM_EVENT 您可以检测到 LRU 栓锁争用。要避免争用,请考虑绕过缓冲区高速缓存或重新设计应用程序。
通过使用初始化参数 DB_BLOCK_LRU_LATCHES,您可以指定系统上的 LRU 栓锁数。此参数设置所需 LRU 栓锁数的最大值。每个 LRU 栓锁控制一组缓冲区;Oracle 在这些组之间平衡替换缓冲区的分配。
要为 DB_BLOCK_LRU_LATCHES 选择适当的值,请考虑以下事项:
此图表包括下列数据项:
此图表显示为查找空闲缓冲区而扫描的平均缓冲区数。如果您的系统必须扫描前台中的太多缓冲区以查找空闲缓冲区,那么它会浪费 CPU 资源。
要解决此问题,请调整要更频繁地进行写入的一个或多个 DBWn 进程。您也可以增大缓冲区高速缓存的大小以启用一个或多个要维持的数据库写入器进程。通常,您将应该看到 1 个或 2 个缓冲区被扫描。如果正在被扫描的缓冲区数大于此数目,则请增大缓冲区高速缓存的大小或调整这个 (些) DBWn 进程。
此图表包括下列数据项:
此图表深入研究围绕“空闲缓冲区等待”事件的细节。空闲缓冲区等待可能是由在 LRU (最近最少使用)列表尾部扫描以查找空闲缓冲区的会话导致的。如果灰数据列表已满,则前台进程必须等待灰数据缓冲区写入磁盘。或者,扫描太多缓冲区的会话 (db_block_max_scan_count) 可以引起空闲缓冲区等待。在 Oracle7 中,很可能灰数据缓冲区列表比比任何其他列表都要完整,所以增加 db_block_write_batch 应该就足够了。
公式 1 + (已检查的空闲缓冲区数/已请求的空闲缓冲区数) 将计算会话为查找空闲缓冲区在 LRU 的尾部扫描的平均缓冲区数。如果此数字接近 1,则意味着会话能够很快找到平均缓冲区。如果此数目很大,这通常意味着大量“持续读取” (CR) 缓冲区正在 LRU 的尾部等待。
如果扫描的平均空闲缓冲区数太大,则 db_block_max_scan_count 参数可能太高,或者您可能需要增大 db_block_write_batch 参数。
此图表包括下列数据项:
此图表显示总分析计数、硬分析计数和执行计数。将 SQL 语句分析计数与执行计数相比,我们可以得知重新分析 SQL 语句的频率。在应用程序中通过更有效地使用游标、赋值变量等进行此区域内的大量优化可能是最好的。
如果分析计数很高,则应该检查以下事项:
此图表包括下列数据项:
此图表表明会话高速缓存游标的命中率。命中率对分析调用在会话游标高速缓存中找到游标的次数进行计数。
如果一个应用程序反复发出对同一 SQL 语句组的分析调用,则会话游标的重新打开可能影响系统性能。可以将会话游标存储在会话游标高速缓存中。此功能对于使用 Oracle Forms 设计的应用程序尤其有用,因为从一个表格切换到另一个表格会关闭与第一个表格相关联的所有会话游标。
Oracle 使用共享的 SQL 区域来确定是否对给定语句发出了多于三个分析请求。如果是这样,Oracle 将假定与此语句相关联的会话游标应该被存入高速缓存并将游标移动到会话游标高速缓存中。然后借助同一会话分析该 SQL 语句的随后请求在会话游标高速缓存中找到游标。
要启用会话游标高速缓存,您必须设置初始化参数 SESSION_CACHED_CURSORS。此参数的值是一个正整数,指定在高速缓存中存放的最大会话游标数。LRU (最近最少使用) 算法在需要时删除会话游标高速缓存中的条目以便为新条目腾出空间。
如果此统计数据在会话的总分析调用计数中所占百分比相对较低,您应该考虑将 SESSION_CACHED_CURSORS 设置为一个更大的值 (只要该值不会对操作系统分页和交换活动产生负作用)。
此图表包括下列数据项:
此图表显示监视缓冲区高速缓存连接动作时的一些关键统计数据。
Oracle 依靠 SGA 中的数据库缓冲区来存储最近使用的从磁盘读取的数据库数据块。一个例程中的数据库缓冲区集是数据库缓冲区高速缓存。缓冲区高速缓存被组织在以下两个列表中:灰数据列表和 LRU 列表。灰数据列表包含尚未写入磁盘的已修改缓冲区。LRU 列表包含空闲缓冲区、已连接缓冲区和灰数据缓冲区。DBWR 管理数据库缓冲区高速缓存以便用户进程总是能够找到空闲缓冲区。
此图表显示监视缓冲区高速缓存连接动作时的这些关键统计数据:
因为在这种情况下客户机并不打算使用缓冲区,所以客户机在释放缓冲区之前执行这样的检查时不会增大这些统计数据。
这些统计数据度量缓冲区上的长久持续读取连接频率为多大是有益的。如果客户机能够多次重用已连接缓冲区,那么这表明连接缓冲区是有用的。
此图表包括下列数据项:
此图表显示数据库中的响应时间,它被分解为两个组成部分:等待时间和 CPU 时间。用户应该能够从显示的百分比中快速确定哪一部分正在消耗花费时间的最大部分。通过选择等待时间或 CPU 时间并下钻到专用于这两个特定部分的图表可以完成对任一部分的进一步诊断。
此图表包括下列数据项:
Oracle 依靠 SGA 中的数据库缓冲区来存储最近使用的从磁盘读取的数据库数据块。一个例程中的数据库缓冲区集是数据库缓冲区高速缓存。缓冲区高速缓存被组织在以下两个列表中:灰数据列表和 LRU 列表。灰数据列表包含尚未写入磁盘的已修改缓冲区。LRU 列表包含空闲缓冲区、已连接缓冲区和灰数据缓冲区。
DBWR 管理数据库缓冲区高速缓存以便用户进程总是能够找到空闲缓冲区。缓冲区高速缓存效率 (由命中率度量),记录特定查询所请求的数据块已在内存中的次数百分比。因为最近 (通常也是最频繁地) 使用的数据保存在内存中,所以缓冲区高速缓存的有效使用可以大大减少数据库上的 I/O 负载。
如果缓冲区高速缓存太小,频繁访问的数据将很快被从缓冲区高速缓存中清除出来,这将迫使从磁盘重新提取信息。因为磁盘访问比内存访问要慢得多,所以应用程序的性能将受到损害。另外,加在 I/O 子系统上的额外负担可能在一个或多个设备处带来瓶颈,进一步降低性能。
此图表包括下列数据项:
每秒的用户调用和递归调用速率
此图表包括下列数据项:
递归调用数占用户调用数的百分比
此图表包括下列数据项:
每秒的数据库 I/O
此图表包括下列数据项:
通过使用表扫描而不是索引访问返回的行数百分比
此图表包括下列数据项:
各类表扫描的每秒速率
此图表包括下列数据项:
每秒通过网络发送和/或接收的字节数
此图表包括下列数据项:
每次表扫描获得的总块数
此图表包括下列数据项:
此图表指示正在被请求的平均 I/O 大小。如果平均 I/O 大小很小,通常是由于小事务处理或引起频繁 redo_synch_writes 的高并发性而造成的。
此图表包括下列数据项:
重做日志活动统计数据
此图表包括下列数据项:
此图表显示有关 CPU 分析 SQL 语句所花费的时间的信息。
当 Oracle 执行 SQL 语句时,它首先对其进行分析以确定其语法和内容是否正确。此进程会消耗相当大的开销。一旦分析后,除非分析信息从内存高速缓存中超龄释放并不再可用,否则 Oracle 不会再分析此语句。SQL 语句之间的无效内存共享可能导致重新分析。
此图表有助于检测分析时的一般响应时间。您的应用程序分析越多,存在的争用就越多,您的系统在等待上花费的时间就越多。如果分析时间 CPU 代表 CPU 时间的较大百分比,则时间被用于分析而不是用于执行语句。如果是这种情况,则可能是应用程序正在使用文字 SQL 且未共享它,或者没有很好地配置共享池。如果“其他”所占的百分比最大,请查看执行最多缓冲区获取和物理读取的 SQL 语句。
此图表包括下列数据项:
此图表表示排序效率,它由在内存中执行 (与转到磁盘上相对) 的排序次数百分比度量。
为获得最佳性能,大多数排序都应该在内存中进行,因为执行到磁盘的排序是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
如果在磁盘上发生过多的排序,请考虑增大 SORT_AREA_SIZE 初始化参数,以增大排序区域的大小。更大的排序区域可使 Oracle Server 保持在内存中排序,从而减少用当前的排序区域大小完成等量的工作所需要的 I/O 操作数。
此图表包括下列数据项:
此图表表示排序效率,它由在内存中执行 (与转到磁盘上相对) 的排序次数百分比度量。
为获得最佳性能,大多数排序都应该在内存中进行,因为执行到磁盘的排序上是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
如果在磁盘上发生过多的排序,请考虑增大 SORT_AREA_SIZE 初始化参数,以增大排序区域的大小。更大的排序区域可使 Oracle Server 保持在内存中排序,从而减少用当前的排序区域大小完成等量的工作所需要的 I/O 操作数。
此图表包括下列数据项:
与排序有关的初始化参数
此图表包括下列数据项:
排序和表扫描统计数据
此图表包括下列数据项:
每次排序行数规格
此图表包括下列数据项:
分配给排序的最大块数
此图表包括下列数据项:
与 DBWR 处理空闲块有关的统计数据
此图表包括下列数据项:
说明 LRU 列表的 DBWR 扫描数的统计数据
此图表包括下列数据项:
要求 DBWR 标记检查点的次数
此图表包括下列数据项:
按文件计的 SGA 中的块数
此图表包括下列数据项:
与游标有关的初始化参数
此图表包括下列数据项:
SGA 中的数据库块数
此图表包括下列数据项:
重做日志缓冲区大小 (字节)
此图表包括下列数据项:
LRU 栓锁数
此图表包括下列数据项:
与缓冲池有关的初始化参数
此图表包括下列数据项:
此图表显示每个表空间的数据文件数。
说明
此图表包括下列数据项:
此图表显示每个表空间的状态;例如是联机、脱机,还是只读。
说明
此图表包括下列数据项:
此图表显示每个表空间的以下各值的大小 (以块为单位):说明
此图表包括下列数据项:
此图表显示每个表空间的空闲空间 (以块为单位) 百分比。随着表空间内的段的增长,该表空间内的空闲空间将减小。如果空闲空间变得不足,创建新段或扩展现有段的操作将失败。
说明
如果空闲空间不足,请通过启用其数据文件之一的自动扩展,手动调整其数据文件之一的大小,或者添加新的数据文件来增加表空间的大小。
此图表包括下列数据项:
此图表显示每个表空间的空闲空间总计 (KB)。随着表空间内的段的增长,该表空间内的空闲空间将减小。如果空闲空间变得不足,创建新段或扩展现有段的操作将失败。
说明
如果空闲空间不足,请通过启用其数据文件之一的自动扩展,手动调整其数据文件之一的大小,或者添加新的数据文件来增加表空间的大小。
此图表包括下列数据项:
此图表显示每个表空间的空闲区数。
说明
此图表包括下列数据项:
数据字典高速缓存是共享池的一部分,用来将字典对象的定义保留在内存中。数据字典的示例有权限、用户、表、列、约束条件、索引等。当指定 SHARED_POOL_SIZE init.ora 参数时,间接调整数据字典高速缓存的大小。该字典将由 Oracle 自动优化。当首次启动 Oracle 并首次访问对象时,由于需要有磁盘读取才能访问信息,所以将发生丢失。理想化的情况是,由于将字典信息放置在内存中,从此之后将不再有丢失。不幸的是,并不总是这种情况。
“数据字典丢失”图表显示丢失数与获取数的比率。该图表将快速表明是否存在过多的字典高速缓存丢失。
所有获取的丢失数与获取数之比应该在 7-10% 之间。如果该百分比超出希望的范围,请通过增大 SHARED_POOL_SIZE init.ora 参数的值来降低该百分比。然后关闭数据库并将其重新启动,以便使新的 SHARED_POOL_SIZE 生效。
此图表包括下列数据项:
数据字典高速缓存是共享池的一部分,用来将字典对象的定义保留在内存中。数据字典的示例有权限、用户、表、列、约束条件、索引等。当指定 SHARED_POOL_SIZE init.ora 参数时,不能直接调整数据字典高速缓存的大小。该字典将由 Oracle 自动调整。当首次启动 Oracle 并首次访问对象时,由于需要有磁盘读取才能访问信息,所以将发生丢失。理想的情况是,由于将字典信息放置在内存中,从此以后将不再有丢失。不幸的是,并不总是这种情况。
“字典高速缓存命中率”图表以一种颜色显示高速缓存获取数,以另一种颜色显示高速缓存丢失数。该图表将快速表明是否存在过多的字典高速缓存丢失。
所有获取的丢失数与获取数之比应该在 7-10% 之间。如果该百分比超出希望的范围,请通过增大 SHARED_POOL_SIZE init.ora 参数的值来将该百分比降低。然后关闭数据库并将其重新启动,以便使新的 SHARED_POOL_SIZE 生效。
此图表包括下列数据项:
每个高速缓存的计数
此图表包括下列数据项:
每个高速缓存每秒的高速缓存丢失数
此图表包括下列数据项:
此图表显示发现游标已存在于高速缓存中的分析请求的百分比。有关此规格的含义的完整说明,可在此图表中的项目说明中找到。
此图表中的下钻将有助于确定命中百分比为何很低的原因。
此图表包括下列数据项:
对回退段的争用反映在对包含回退段块的缓冲区的争用上。此图表代表访问回退段标题时无等待的次数百分比。此值应大于 99%。
此图表包括下列数据项:
此图表按每个用户分解等待事件。
此图表包括下列数据项:
用户等待每个事件的次数
此图表包括下列数据项:
每个用户的所有分析和执行的总计
此图表包括下列数据项:
每秒速率
此图表包括下列数据项:
按用户的 CPU 使用情况
此图表包括下列数据项:
此图表显示有关每个用户的 CPU 使用情况的信息,其 CPU 使用情况可以分解为子组成部分。
当 Oracle 执行 SQL 语句时,它首先对其进行分析以确定其语法和内容是否正确。此进程会消耗相当大的开销。一旦分析后,除非分析信息从内存高速缓存中超龄释放并不再可用,否则 Oracle 不会再分析此语句。SQL 语句之间的无效内存共享可能导致重新分析。
此图表有助于检测分析的一般响应时间。您的应用程序分析越多,存在的争用就越多,您的系统在等待上花费的时间就越多。如果分析时间 CPU 代表 CPU 时间的较大百分比,则时间被用于分析而不是用于执行语句。如果是这种情况,那么很可能是应用程序正在使用文字 SQL 且不共享它,或者是共享池配置得很差。如果“其他”占据的百分比最大,请查找正在执行最大缓冲区获取数和物理读取数的 SQL 语句。
此图表包括下列数据项:
每个用户的块和 I/O 速率
此图表包括下列数据项:
每秒每个用户的统计数据
此图表包括下列数据项:
此图表代表排序效率,它由在磁盘上 (与在内存中相对) 执行的排序次数的百分比度量。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
如果磁盘上发生了过多的排序,请考虑增大 SORT_AREA_SIZE 初始化参数,以增加排序区域的大小。更大的排序区域使 Oracle Server 能够将排序保持在内存中,从而减少了使用当前大小的排序区域完成等量工作所需的 I/O 操作数。
此图表包括下列数据项:
每次排序的行数
此图表包括下列数据项:
UGA (每个用户) 内存使用峰值
此图表包括下列数据项:
此采样周期内此用户的所有分析花费的时间
此图表包括下列数据项:
等待每次分析花费的平均时间
此图表包括下列数据项:
对回退段的争用反映在对包含回退段块的缓冲区的争用上。此图表代表访问回退段标题时无等待时的次数百分比。此值应大于 99%。
此图表包括下列数据项:
请求回退段标题时的命中百分比
此图表包括下列数据项:
回退段访问速率
此图表包括下列数据项:
未完成的事务处理的状态和当前编号
此图表包括下列数据项:
列出所有可以碎片化的段
列出所有用户和每秒的大型表扫描数
此图表包括下列数据项:
列出所有用户和每秒的小型表扫描数
此图表包括下列数据项:
按用户列出对具有链接行或移植行的表的表扫描
此图表包括下列数据项:
按用户列出绕过缓冲区高速缓存的表扫描
此图表包括下列数据项:
按用户计的各种表扫描统计数据
此图表包括下列数据项:
SGA 中可用的字节数
此图表包括下列数据项:
失败或导致丢失的库高速缓存请求次数
此图表包括下列数据项:
SGA 组件的大小,以兆字节报告。
此图表包括下列数据项:
重新加载/请求百分比和共享池保留列表丢失/请求百分比
此图表包括下列数据项:
锁管理器顶层图表
此图表包括下列数据项:
数据库大小 (兆字节)
此图表包括下列数据项:
最大重做日志缓冲区大小
此图表包括下列数据项:
方案、用户、表等的数目。
此图表包括下列数据项:
全部会话 (活动会话、非活动会话等) 的计数。
此图表包括下列数据项:
并发会话数的当前计数
并发事务处理数的计数
此图表包括下列数据项:
此图表显示当前正在执行的 SQL 语句类型的分解。只有在采样时标记为活动的语句才会出现在报告的数据中。所以此图表的结果可能产生误导。所报告的值仅对执行查询的那一瞬间才有效。
此图表包括下列数据项:
此图表显示执行 SQL 语句平均花费的时间,也显示将花费时间分解为等待时间和 cpu 时间这两个组成部分。要使这些图表有效,必须将 TIMED_STATISTICS 参数设置为 TRUE。TIMED_STATISTICS 可通过每个图表上都可用的工具启用。此处显示的两个图表为等待或受 CPU 限制和每次执行花费的时间。
这向用户显示我们从数据库内可用的统计数据得出的总响应时间的最佳估计。响应时间在这里被定义为总等待时间加上数据库内的所有会话所消耗的总 CPU 时间,它除以执行数就是每次执行的值。显示了每次执行的值,我们就可以精确报告只读访问和事务处理访问。关于每个事务处理的响应时间,请查看平均事务处理时间 (秒) 图表。
响应时间的各个部分:CPU 时间和等待时间的进一步研究,可以通过下钻到等待或受 CPU 限制来进行。
此图表包括下列数据项:
每个用户每次语句执行平均花费的时间
此图表包括下列数据项:
此图表显示数据库中的响应时间被分解为两个组成部分:等待时间和 CPU 时间。用户根据显示的百分比应该能够快速确定哪个部分正在消耗花费时间的最大部分。通过选择等待时间或 CPU 时间并下钻到为特定组成部分定制的图表可以完成任一组成部分的诊断
此图表包括下列数据项:
此图表显示将 CPU 使用情况分解为各个组成部分,它们按连接到数据库的每个应用程序分类。程序名取自 V$SESSION 表,用于计算这些值的统计数据是为执行该命名程序的用户所启动的所有会话合计的。
当 Oracle 执行 SQL 语句时,它首先对其进行分析以确定其语法和内容是否正确。此进程会消耗相当大的开销。一旦分析后,除非分析信息从内存高速缓存中超龄释放并不再可用,否则 Oracle 不会再分析此语句。SQL 语句之间的无效内存共享可能导致重新分析。现在您可以检测分析的一般响应时间。您的应用程序分析越多,存在的争用就越多,您的系统在等待上花费的时间就越多。如果分析时间 CPU 代表 CPU 时间的较大百分比,则时间被用于分析而不是用于执行语句。如果是这种情况,那么很可能是应用程序正在使用文字 SQL 且不共享它,或者是共享池配置得很差。如果“其他”占据的百分比最大,请查找正在执行最大缓冲区获取数和物理读取数的 SQL 语句。
此图表包括下列数据项:
此图表是一种组图表,显示有关等待事件的摘要信息。其中一个图表等待此事件的会话显示当前正在等待特定事件的会话数;另一个图表按时间的等待事件显示此示例过程中已经完成等待的前 5 个等待事件。
此图表说明在数据库中 CPU 时间被用于何处。它除了包含单个程序、用户和远程节点的 CPU 分解外,还包含整个数据库的 CPU 分解。根据这些图表您应该能够快速确定您的 CPU 在何处以及如何被消耗。
当 Oracle 执行 SQL 语句时,它首先对其进行分析以确定其语法和内容是否正确。此进程会消耗相当大的开销。一旦分析后,除非分析信息从内存高速缓存中超龄释放并不再可用,否则 Oracle 不会再分析此语句。SQL 语句之间的无效内存共享可能导致重新分析。现在您可以检测分析的一般响应时间。您的应用程序分析越多,存在的争用就越多,您的系统在等待上花费的时间就越多。如果分析时间 CPU 代表 CPU 时间的较大百分比,则时间被用于分析而不是用于执行语句。如果是这种情况,那么很可能是应用程序正在使用文字 SQL 且不共享它,或者是共享池配置得很差。如果“其他”占据的百分比最大,请查找正在执行最大缓冲区获取数和物理读取数的 SQL 语句。
一种组图表,显示高级别的例程范围内的 I/O 统计数据,以及访问得最频繁或者访问成本最高的数据库文件。
根据选作排序统计数据的统计数据增量值按降序显示会话。
此图表可用来创建定制“顶层会话”视图。会话中所有可用的统计数据和标识符都会缺省地在一个大表中显示。通过使用工具栏上的“设置选项”按钮,可以定制图表仅显示感兴趣的项,并可更改排序准则。这样,就可以保存、命名定制图表和直接通过名称对其进行访问。
此图表包括下列数据项:
每个会话每个事务处理平均花费的时间
此图表包括下列数据项:
此采样周期内提交数、回退数、执行数等的实际值
此图表包括下列数据项:
每个会话每次语句执行平均花费的时间
此图表包括下列数据项:
数据库文件的散列读取事件通常表明全表扫描或范围扫描。在单个 I/O 操作中读取的块数由 init.ora 参数 db_file_multi_read_count 确定。此图表将显示那些已在其上执行了扫描的文件。如果物理读取数接近物理块读取数,那么正在发生单个块的读取。如果不是这种情况,那么在该特定文件上没有发生全扫描或范围扫描。此图表将显示哪些文件正在进行单个块的读取,并标识出可能用于索引选择的那些文件以及其中的对象。
如果物理读取/物理块读取接近 1,那么正在发生单个块的读取,并且在文件上没有发生扫描。检查驻留在文件中的对象。并查看是否有索引可能适合于这些对象。为降低数据库文件散列读取的成本,请检查每个磁盘上的文件位置、磁盘数目和每个磁盘的条带大小 (这应该是 2 * db_file_mutli_block_read_count)
此图表提供栓锁活动的综合概览。为进一步研究提供了栓锁争用、栓锁休眠和总的栓锁统计数据。
花费时间的 CPU 时间和等待时间组成部分
此图表包括下列数据项:
对按用户的 CPU 使用情况的进一步研究
此图表与缓冲区忙事件有关。此图表将显示哪些块在哪些文件中,以及当前会话为何等待这些块。块可能正由另一个会话读取或者修改。至此我们可以了解到会话在特定文件以及这些文件中的块上有何种类型的争用。
此图表包括下列数据项:
排序统计数据组图表
使用 DBMS_APPLICATION_INFO 程序包的应用程序的 SQL 语句
此图表包括下列数据项:
使用 DBMS_APPLICATION_INFO 程序包的应用程序的 SQL 语句
此图表包括下列数据项:
当前模块和使用该模块的会话计数的列表
此图表包括下列数据项:
按当前等待特定事件类型的会话数排序的跨例程的事件列表。此列表允许用户快速识别从整体上例程等待哪个事件时间最长。每种事件类型受不同参数和条件的影响。进一步的下钻是通过选择感兴趣的特定等待事件来完成的。一些等待事件具有专门的下钻图表以帮助诊断该种等待的原因。
还有一般下钻,可用于所有等待事件。要确定当前正在等待特定事件的各个会话,请使用等待此事件的会话图表。类似地,要查看当前正在等待该事件的 SQL 语句,请使用等待此事件的 SQL 语句图表。这会将您快速引向正在经历等待的 SQL 语句,并帮助您确定此等待对应用程序的影响。
此图表包括下列数据项:
并行查询图表
此图表包含有关会话游标高速缓存的使用和大小的统计数据。此高速缓存可通过 SESSION_CURSOR_CACHE 参数启用。
将 CPU 时间分解为分析、递归和其他
此图表包括下列数据项:
表空间统计数据、状态、空闲空间百分比、空闲字节数等
此图表将显示用于说明“重做日志”和 LGWR 活动的整个健康状况的各种统计数据。
为 CP 分析显示或收集的大多数图表和统计数据要求将初始化参数 timed_statisics 设置为 TRUE。这使数据库能够收集有关服务器中操作的 CPU 和所花费时间的信息。打开此统计数据定时所引起的开销很低。能够精确跟踪资源和花费时间消耗所获得的好处远大于相关的成本。如果图表中当前显示的值是 "FALSE",通过使用与此图表相关联的工具下拉式菜单中找到的相关联的“打开定时统计数据工具”,您就可以动态打开 timed_statistics。用鼠标右键单击任何图表就可以查看“工具”、“下钻”、“历史集合”和其他选项。
此图表包括下列数据项:
此图表用来显示不同的“共享池”统计数据,这些数据决定是增大还是减小“共享池大小”参数来调整库高速缓存性能。
库高速缓存是共享池中的动态内存结构之一。库高速缓存持有 SQL 游标、PL/SQL 程序和 JAVA 类的可执行形式。库高速缓存有大小限制并由一种 LRU 算法控制,这样如果共享池用尽空间,则从此高速缓存中超龄释放对象。库高速缓存丢失可能发生在处理 SQL 语句的分析阶段或执行阶段。
此图表显示在最后一个采样周期内由起源于所列主机的会话所使用的 CPU 时间百分比。您应该能够快速发现哪些远程节点应对数据库内的大量 CPU 消耗负责。此图表对将中间层服务器专用于特定应用程序的环境尤其有用。
此图表包括下列数据项:
此图表显示在最后一个采样周期内由列出的程序所使用的 CPU 时间百分比。您应该能够快速发现哪些程序应对数据库内的大量 CPU 消耗负责。此图表对于其中的各种应用程序具有唯一图像名的环境尤其有用。
此图表包括下列数据项:
此图表显示 LRU 缓冲区列表中所找到的灰数据缓冲区数和此采样周期内的写入请求数的总和。总计的灰队列长度是完成写入请求后停留在灰数据队列中的块数。如果存在许多灰数据缓冲区,那么一个或多个 DBWn 进程很可能无法继续下去。请增大缓冲区高速缓存的大小或调整 DBWn 进程。
此图表包括下列数据项:
此图表显示 DBWR 是否正在将灰数据块保留在 LRU 队列中,此队列在每次写入完成后被找到,或者由试图将新数据块加载到高速缓存中的影子进程找到。这两个统计数据的值都 > 1 可以表明 I/O 问题、高速缓存大小调整的问题或者 DBWR 进程数不足。
此图表包括下列数据项:
通过使用在这里成组显示的图表,您应该能够确定 DBWR 是否正在以一个足以满足数据库要求的级别运行。在每个特定图表中,都可以进一步研究各个统计数据和可能纠正问题的操作。
此图表是诊断数据库性能问题的起点。组图表中的每个子图表都具有下钻,下钻将引导您进一步分析由在该图表上显示的统计数据所表示的潜在问题。
某些下钻与特定上下文有关。如果有多于一个项目在图表中显示,则在使用鼠标右键单击下钻之前选择感兴趣的单个项目将为工具提供最佳的上下文。
每秒生成的重做大小 (字节)
此图表包括下列数据项:
每个 I/O 操作从每个文件读取或写入每个文件的平均块数
此图表包括下列数据项:
此图表显示一个 I/O 操作在特定文件上平均花费的时间。
此图表包括下列数据项:
此图表将向您显示此查询所引用的表。如果查询较大,您可能不会很容易了解到它实际上访问了哪些表。如果查询正在执行很多 I/O,则它可能正在对其中一个表进行全表扫描。如果正在使用基于成本的优化程序,它可能正在基于过时的统计数据来选择一个很差的策略。请使用此图表中的信息来决定表的统计数据是否有效。如果不是,请使用其中一个分析工具选项来更新任何一个表的统计数据。很高的链接行百分比可能表明此表中的平均行无法存入一个数据块中。这可能是由于增大记录大小并强制它们移植到其他块的更新或行大小刚好超过 db_block_size 所引起的。使用“重新编排”向导来确定是否应该重新编排具有高链接行百分比的表。
此图表包括下列数据项:
软分析是在高速缓存中查找已分析的 SQL 语句并能够重用现有条目的分析。硬分析不在高速缓存中查找 SQL 语句,并会消耗处理周期来完成分析步骤。如果软分析百分比较小,您应该查看高速缓存中的 SQL 语句。通过使用“顶层 SQL”图表您应该能够确定是否正在使用赋值变量。SQL 语句必须完全匹配,以便有效地使用 SQL 高速缓存。
此图表包括下列数据项:
此图表显示正在分析尚未驻留在高速缓存中的 SQL 语句的会话。通常,这是由于在 SQL 查询中使用文字而不是赋值变量而引起的。通过下钻到此会话图表的打开游标中可以找到会话正在使用的 SQL 语句。
此图表包括下列数据项:
此图表是了解哪个会话正在执行大部分排序的起点,也是最终了解哪个查询正在执行大部分排序起点。根据此图表,您可以下钻到此会话的打开游标,然后按行排序对那些查询进行排序,以确定哪些查询正在导致排序。
此图表包括下列数据项:
此图表使您能很好地了解哪些会话对大量的数据库读取 I/O 负责。在此图表中,您可以下钻到打开 SQL (当按物理读取数排序时) 以获得能使您了解哪些查询对 I/O 的会话负责。
此图表包括下列数据项:
此图表使您能很好地了解更改此表对应用程序的其他部分所造成的影响,不管是通过添加索引来改进查询还是通过更新表的内部统计数据。
此图表包括下列数据项:
此图表显示此会话已经打开的所有当前游标 (SQL 语句)。在“顶层会话”图表中显示的统计数据将包括来自所有这些查询的统计数据以及可能已经执行并关闭的以前的游标。
此图表包括下列数据项:
此图表列出前 50 个字符相同的 SQL 语句。除在 "WHERE" 子句中使用的文字外其他部分都相同的语句有可能被重写以使用赋值变量。重新分析基本相同的 SQL 语句会浪费时间和资源。如果您的库高速缓存命中率较低,那么这里列出的查询可能是最主要的原因。
此图表包括下列数据项:
此图表允许您查看与选定查询字符串的前 50 个字符相匹配的所有语句的文本和统计数据。根据在此屏幕上显示的信息,用户应该能够完全识别查询,并确定它是否是可被重写以帮助避免硬分析和库高速缓存超龄的有效侯选查询。
此图表包括下列数据项:
此图表显示重做分配的失败次数。
LGWR 将重做日志缓冲区中的重做条目写入重做日志文件或磁盘后,用户就可以复制新条目来覆盖内存中已写入磁盘的条目。LGWR 通常写入得非常快,足以确保新条目在缓冲区中始终有可用空间,即使是在对重做日志的访问繁忙时也应满足这一条件。
REDO BUFFER ALLOCATION RETRIES 的值应接近于零。如果此值持续增大,则进程不得不等待缓冲区中的空间。等待可能是由于日志缓冲区太小或检查点引起的。如果有必要,通过更改初始化参数 LOG_BUFFER 的值来增大重做日志缓冲区的大小。用字节表示的此参数的值必须是 DB_BLOCK_SIZE 的倍数。或者,改进检查点或归档进程。
此图表包括下列数据项:
此图表给出缓冲区高速缓存和库高速缓存效率的高级视图。下钻对于两种规格都是可用的。在这两种情况下高速缓存利用率都应该接近于 %95。
此图表包括下列数据项:
对于选定的 USER,显示与在“顶层会话”图表中找到的信息相似的详细信息。
此图表包括下列数据项:
对于选定的程序,显示与在“顶层会话”图表中找到的信息相似的详细信息。
此图表包括下列数据项:
对于选定的计算机名称,显示与在“顶层会话”图表中找到的信息相似的详细信息。
此图表包括下列数据项:
“按硬分析计数的顶层会话”图表将向您显示哪些会话引起的硬分析最多。
硬分析是在服务器分析查询并且在库高速缓存中找不到与查询完全匹配的内容时发生的。通过有效地共享 SQL 语句可以避免硬分析。在查询中使用赋值变量而不是文字是增加共享的一种方法。
此图表通过显示哪些会话正在引起大部分的硬分析,可使您找到最适合于 SQL 重写的应用程序或程序。
“存放 SQL 的库高速缓存”图表将向您显示哪些语句的前 'n' 个字符是类似的以及在高速缓存中该语句段有多少种形式。共享池区域的大小不足会导致 SQL 语句从高速缓存中超龄释放,并也可能导致强制执行硬分析。共享池大小允许您查看当前共享池的分配并且可能增大它。
这组图表帮助研究可能正在消耗 CPU 时间的区域。在缓冲区和磁盘之间移动数据会消耗大量 CPU 时间。“按缓冲区获取数的顶层 SQL”图表显示需要高速缓存中大量缓冲区的 SQL 语句。此处理比较费时。类似地,“按物理读取数的顶层会话”图表显示强制执行 I/O 从而导致缓冲区高速缓存中的 CPU 处理的会话。
此图表显示会话当前已经打开的游标。如果会话频繁打开和关闭游标,您可能只看到当前的 SQL 语句。SQL 语句按它们所执行的物理读取数排序。
此图表包括下列数据项:
此图表显示会话当前已经打开的游标。如果会话频繁打开和关闭游标,您可能只看到当前的 SQL 语句。SQL 语句按它们被分析的次数排序。
此图表包括下列数据项:
此图表将允许您查看一直在等待特定事件的会话。所有标准下钻都可以用来进一步挖掘任何一个会话。
此图表包括下列数据项:
此列表显示当前正在等待此特定事件的 SQL 语句。根据此列表您应该能够确定哪些对象处于争用状态,并查看以重新组织您的应用程序、重写 SQL 或重新组织基础对象。
此图表包括下列数据项:
此图表提供一般分派进程和服务器进程忙碌程度的总体描述。它还提供当前近似值接近服务器进程极限和峰值服务器百分比的指示器。
此图表包括下列数据项:
此图表显示当前服务器和分派进程数。
此图表包括下列数据项:
此图表显示启动和停止服务器的频率。这些值已规格化为每秒值,以便它们在一个采样频率范围内可以是有效的。
此图表包括下列数据项:
此图表显示一般分派进程为当前在系统上配置的各种连接类型而忙碌的程度。同时还报告一般请求在队列中等待此分派进程类的时间长度。
此图表包括下列数据项:
此图表显示每个分派进程可用的各种统计数据。
此图表包括下列数据项:
此图表显示每个共享服务器进程可用的各种统计数据。
此图表包括下列数据项:
感兴趣的 MTS 统计数据的组图表
阻塞/等待锁的统计数据
此图表包括下列数据项:
用户类型锁定数的统计数据
此图表包括下列数据项:
每个事务处理的数据库 I/O
此图表包括下列数据项:
每个事务处理的各类表扫描
此图表包括下列数据项:
每个事务处理通过网络发送/接收的字节数
此图表包括下列数据项:
此图表是从一个列出等待事件的更高级图表开始的下钻。对于正在等待对文件中特定块的读取或写入的等待事件,此图表将识别包含该块的段。
此图表包括下列数据项:
此图表列出单个会话正在等待的文件数和块数。此图表是从一个列出等待事件的更高级图表开始的下钻。对于选定的特定等待事件,您将会看到单个等待以及它们的文件和块的计数。大多数写入等待与 DBWR 的性能有关。
此图表包括下列数据项:
通过高速缓存缓冲区链栓锁对缓冲区高速缓存中的这些块中存在很高的争用。应该识别这些块所属的段。您应该确定为何需要这些特定块并努力减少对它们的争用。
此图表为您提供事务处理速率的高级视图,事务处理包括成功的和不成功的。它还深入说明用户登录系统的频率。如果登录率较高,则可能有一个效率很低的应用程序正在进行每条信息的连接、查询和断开。
此图表包括下列数据项:
(块和持续) 获取/更改比率
此图表包括下列数据项:
显示数据库效率的统计数据
显示数据库中的动作的统计数据
确定数据库健康状况的统计数据
各种命中率
此图表包括下列数据项:
按物理读取数百分比顺序排列的前 5 个会话
此图表包括下列数据项:
按等待时间排序的前 5 个等待事件,计数
此图表包括下列数据项:
活动和非活动会话计数
无等待授予栓锁的频率
此图表包括下列数据项:
无需等待分配重做条目的频率
此图表包括下列数据项:
它是会话当前正在执行的 SQL 语句或最近一次执行的语句。
此图表包括下列数据项:
Oracle Advanced Queuing 保留有关排队系统的当前状态的统计数据和动态表 GV$AQ 中的时间间隔统计数据。排队系统的当前状态统计数据包括就绪、正在等待和过期消息的数目。 此图表显示每种状态 (就绪、正在等待和过期) 中的消息数
此图表包括下列数据项:
Oracle Advanced Queuing 保留有关排队系统的当前状态的统计数据和动态表 GV$AQ 中的时间间隔统计数据。排队系统的当前状态统计数据包括就绪、正在等待和过期消息的数目。 此图表显示“正在等待”消息的平均等待时间和总等待时间。
此图表包括下列数据项:
OPS 数据库的强制回应总计
按例程的强制回应计数
按文件的强制回应计数
按文件例程的强制回应计数
按类的强制回应计数
按对象的强制回应计数
每个例程如何提交给对象
强制回应频率最高的块
强制回应频率最高的对象块
显示超时数和等待数
请求持续读取块时超时。
磁盘上的高争用或 I/O 工作量
可释放锁的使用情况
cr 请求
cr 请求
cr 转换
按例程的 cr 转换
系统等待数
库高速缓存锁数
按例程的库高速缓存锁
行高速缓存
按例程的行高速缓存
排序和表扫描统计数据
此图表包括下列数据项:
此图表代表排序效率,它由在内存中执行 (与转到磁盘上相对) 的排序次数的百分比度量。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
如果磁盘上发生了过多的排序,请考虑增大 SORT_AREA_SIZE 初始化参数,以增加排序区域的大小。更大的排序区域使 Oracle Server 能够将排序保持在内存中,从而减少了使用当前大小的排序区域完成等量工作所需的 I/O 操作数。
此图表包括下列数据项:
此图表为您提供事务处理速率的高级视图,事务处理包括成功的和不成功的。它还深入说明用户登录系统的频率。如果登录率较高,则可能有一个效率很低的应用程序正在进行每条信息的附加、查询和拆离。
此图表包括下列数据项:
各种调用类别中的例程范围内的统计数据
此图表包括下列数据项:
此图表显示监视缓冲区高速缓存连接动作时的一些关键统计数据。
Oracle 依靠 SGA 中的数据库缓冲区来存储最近使用的从磁盘读取的数据库数据块。一个例程中的数据库缓冲区集是数据库缓冲区高速缓存。缓冲区高速缓存被组织在以下两个列表中:灰数据列表和 LRU 列表。灰数据列表包含尚未写入磁盘的已修改缓冲区。LRU 列表包含空闲缓冲区、已连接缓冲区和灰数据缓冲区。DBWR 管理数据库缓冲区高速缓存以便用户进程总是能够找到空闲缓冲区。
此图表显示监视缓冲区高速缓存连接动作时的这些关键统计数据:
因为在这种情况下客户机并不打算使用缓冲区,所以客户机在释放缓冲区之前执行这样的检查时不会增大这些统计数据。
这些统计数据度量缓冲区上的长久持续读取连接频率为多大是有益的。如果客户机能够多次重用已连接缓冲区,那么这表明连接缓冲区是有用的。
此图表包括下列数据项:
此图表显示总分析计数、硬分析计数和执行计数。通过将分析计数的 SQL 语句与执行计数的 SQL 语句相比较,我们很好地得知重新分析 SQL 语句的频率。通过游标、赋值变量等的更有效使用,在应用程序中进行此领域中的许多优化可能是最合适的。
如果分析计数较高,则应检查以下事项:
此图表包括下列数据项:
此图表深入研究围绕“空闲缓冲区等待”事件的细节。空闲缓冲区等待可能是由在 LRU (最近最少使用)列表尾部扫描以查找空闲缓冲区的会话导致的。如果灰数据列表已满,那么前台进程必须等待准备写入磁盘中的这些灰数据缓冲区。或者,空闲缓冲区等待也可由扫描太多缓冲区的会话 (db_block_max_scan_count) 引起。在 Oracle7 中灰数据缓冲区列表最有可能是已满的,因此增大 db_block_write_batch 应该足以解决问题。
公式 1 + (已检查的空闲缓冲区数/已请求的空闲缓冲区数) 将计算会话为查找空闲缓冲区在 LRU 的尾部扫描的平均缓冲区数。如果此数目接近 1,这意味着会话通常可以很快查找到一个缓冲区。如果此数目很大,这通常意味着大量“持续读取” (CR) 缓冲区正在 LRU 的尾部等待。
如果扫描的空闲缓冲区数太大,可能是 db_block_max_scan_count 参数太高,或者可能需要增大 db_block_write_batch 参数。
此图表包括下列数据项:
(块或持续) 获取/更改比率
此图表包括下列数据项:
终止选定的会话
启用花费的时间和 CPU 时间规格的跟踪
分析表以获取统计信息。
通过采样数据的 10% 分析表以获取统计信息。
通过采样数据的 25% 分析表以获取统计信息。
为此会话打开 SQL TRACE
为此会话关闭 SQL TRACE
SQL Analyze - SQL 优化工具
Instance Manager - 修改 init.ora 参数的工具
跨所有更新和插入事务处理计算的响应时间
此类包括下列图表:
跨所有更新和插入事务处理计算的响应时间
此数据项代表此采样周期例程范围内等待资源或对象花费的时间百分比。
DeltaTotalWait / (DeltaTotalWait + DeltaCpuTime)说明
数据源
其中:
进一步研究哪些特定的等待事件是形成大量等待时间的原因。单个等待事件可以识别数据库中的独特问题。将在适当的地方通过专用于单个等待事件的下钻定制诊断。
此数据项代表此采样周期例程范围内由 CPU 执行指令所花费的时间百分比。
DeltaCpuTime / (DeltaTotalWait + DeltaCpuTime)说明
数据源
其中:
当 CPU 时间是总响应时间的最大贡献者时,就需要将其分解以进一步正确理解此问题。基本上将 CPU 时间分解为以下类别:
通过只使用数据库内可用的统计数据,此数据项给出此采样周期内每个事务处理响应时间的最佳近似值 (秒)。
(DeltaTotalWait + DeltaCpuTime) / (DeltaCommits + DeltaRollbacks)说明
数据源
其中:
进一步研究哪个组成部分 (等待时间或 CPU 时间) 是形成主要响应时间的原因,并继续诊断。
此数据项代表此采样周期内所执行的提交和回退的总数。
DeltaCommits + DeltaRollbacks说明
数据源
其中:
此统计数据表示数据库中的工作已经完成了多少。事务处理率中的峰值不一定是坏事。如果响应时间保持在接近正常水平,则意味着您的系统可以处理更多的负载。实际上,事务处理率的下降和响应时间的增加表明可能出现了问题。根据应用程序的不同,事务处理负载在一天的不同时间可能变化非常大。
此数据项代表此采样周期内所执行的用户提交的数目。当用户提交事务处理时,必须将生成的反映对数据库块更改的重做写入磁盘。提交数通常代表最接近用户事务处理率的数据。
DeltaCommits说明
数据源
其中:
此统计数据表示数据库中的工作已经完成了多少。事务处理率中的峰值不一定是坏事。如果响应时间保持在接近正常水平,则意味着您的系统可以处理更多的负载。实际上,事务处理率的下降和响应时间的增加表明可能出现了问题。根据应用程序的不同,事务处理负载在一天的不同时间可能变化非常大。
此数据项代表在此采样周期内用户手动发出 ROLLBACK 语句的次数或在用户的事务处理期间发生错误的次数。
DeltaRollbacks说明
数据源
其中:
此统计数据说明用户发出 ROLLBACK 语句或者在他们的事务处理期间遇到错误的频率。应该进行进一步的研究,以确定这些回退是错误应用程序逻辑的一部分,还是由于在数据库访问时发生的错误引起的。
通过只使用数据库中可用的统计数据,此数据项就可以给出每个 SQL 语句执行的响应时间的最佳近似值 (秒)。此统计数据可能比每个事务处理的响应时间更有效,因为它甚至可以显示关于只读访问的准确值。
(DeltaTotalWait + DeltaCpuTime) / (DeltaUserCalls + DeltaRecursiveCalls)说明
数据源
其中:
进一步研究哪个组成部分 (等待时间或 CPU 时间) 是形成主要响应时间的原因,并继续诊断。
此数据项代表在采样周期内执行 SQL 语句的调用 (用户和递归) 总数。此统计数据表示每个采样周期所处理的 SQL 语句数。
DeltaUserCalls + DeltaRecursiveCalls说明
数据源
其中:
此统计数据表示数据库中的工作已经完成了多少。执行率中的峰值不一定是坏事。如果响应时间保持在接近正常水平,则意味着您的系统可以处理更多的负载。实际上执行率的下降和响应时间的增加表明可能出现了问题。根据应用程序的不同,执行负载在一天的不同时间可能变化非常大。
按单个用户分解的响应时间
此类包括下列图表:
按单个用户分解的响应时间
此数据项代表此采样周期内此会话等待资源或对象所花费的时间百分比。
DeltaTotalWait / (DeltaTotalWait + DeltaCpuTime)说明
数据源
其中:
进一步研究哪些特定的等待事件是形成大量等待时间的原因。单个等待事件可以识别数据库中的独特问题。将在适当的地方通过专用于单个等待事件的下钻定制诊断。
此数据项代表此采样周期内此会话执行 CPU 指令所花费的时间百分比。
DeltaCpuTime / (DeltaTotalWait + DeltaCpuTime)说明
数据源
其中:
当 CPU 时间是总响应时间的最大贡献者时,就需要将其分解以进一步正确理解此问题。基本上将 CPU 时间分解为以下类别:
通过只使用数据库内可用的统计数据,此数据项给出此采样周期内每个事务处理响应时间的最佳近似值 (秒)。
(DeltaTotalWait + DeltaCpuTime) / (DeltaCommits + DeltaRollbacks)说明
数据源
其中:
进一步研究哪个组成部分 (等待时间或 CPU 时间) 是形成主要响应时间的原因,并继续诊断。
此数据项代表此采样周期内此会话执行的提交和回退总数。
DeltaCommits + DeltaRollbacks说明
数据源
其中:
此统计数据表示数据库中的工作已经完成了多少。事务处理率中的峰值不一定是坏事。如果响应时间保持在接近正常水平,则意味着您的系统可以处理更多的负载。实际上,事务处理率的下降和响应时间的增加表明可能出现了问题。根据应用程序的不同,事务处理负载在一天的不同时间可能变化非常大。
此数据项代表此采样周期内此会话执行的用户提交数。当用户提交事务处理时,必须将生成的反映对数据库块更改的重做写入磁盘。提交数通常代表最接近用户事务处理率的数据。
DeltaCommits说明
数据源
其中:
此统计数据表示数据库中的工作已经完成了多少。事务处理率中的峰值不一定是坏事。如果响应时间保持在接近正常水平,则意味着您的系统可以处理更多的负载。实际上,事务处理率的下降和响应时间的增加表明可能出现了问题。根据应用程序的不同,事务处理负载在一天的不同时间可能变化非常大。
此数据项代表采样周期内此会话手动发出 ROLLBACK 语句或会话事务处理过程中出现错误的次数。
DeltaRollbacks说明
数据源
其中:
此统计数据说明用户发出 ROLLBACK 语句或者在他们的事务处理期间遇到错误的频率。应该进行进一步的研究,以确定这些回退是错误应用程序逻辑的一部分,还是由于在数据库访问时发生的错误引起的。
通过只使用数据库中可用的统计数据,此数据项就可以给出每个 SQL 语句执行的响应时间的最佳近似值 (秒)。此统计数据可能比每个事务处理的响应时间更有效,因为它甚至可以显示关于只读访问的准确值。
(DeltaTotalWait + DeltaCpuTime) / (DeltaUserCalls + DeltaRecursiveCalls)说明
数据源
其中:
进一步研究哪个组成部分 (等待时间或 CPU 时间) 是形成主要响应时间的原因,并继续诊断。
此数据项代表此采样周期内执行 SQL 语句的此会话中的调用 (用户和递归) 总数。此统计数据表示每个采样周期所处理的 SQL 语句数。
DeltaUserCalls + DeltaRecursiveCalls说明
数据源
其中:
此统计数据表示数据库中的工作已经完成了多少。执行率中的峰值不一定是坏事。如果响应时间保持在接近正常水平,则意味着您的系统可以处理更多的负载。实际上执行率的下降和响应时间的增加表明可能出现了问题。根据应用程序的不同,执行负载在一天的不同时间可能变化非常大。
等数据库内的单个事件所花费的时间
此类包括下列图表:
等数据库内的单个事件所花费的时间
此数据项代表最后一个采样周期内等待此事件花费的时间 (秒)。
DeltaTimeWaited说明
数据源
其中:
等待所花费的时间是处理可能已经花费的时间。用最长的等待时间攻击等待事件很可能会产生最大的收益。对于为帮助诊断和提高单个等待事件性能而定制的图表,下钻是可用的。
此数据项代表此采样周期内每个事件的等待数。等待数不如等待花费的时间长度重要。即使事件请求立即完成,也将更新事件的等待计数。
DeltaWaitCounts说明
数据源
其中:
此数据项代表此采样周期内每个事件的超时数。
DeltaWaitTimeOuts说明
数据源
其中:
等数据库内的单个事件所花费的时间
此类包括下列图表:
等数据库内的单个事件所花费的时间
此数据项代表此采样周期内等待特定类块花费的时间。
DeltaWait说明
数据源
其中:
此数据项代表此采样周期内每秒等待特定类块的次数。
DeltaWait / Seconds说明
数据源
其中:
“AQ 队列”统计数据
此类包括下列图表:
“AQ 队列”统计数据
队列表名称
处于“正在等待”状态的消息数
处于“就绪”状态的消息数
处于“过期”状态的消息数
队列中的消息已在“就绪”状态下等待的秒数
处于“就绪”状态的消息已等待出列的平均秒数
按某一特定资源排序的顶层的 N 条 SQL 语句
此类包括下列图表:
按某一特定资源排序的顶层的 N 条 SQL 语句
此数据项包括当前游标的 SQL 文本的前八十个字符。
select sql_text from v$sqlarea
说明
数据源
此数据项代表物理读取数。换句话说,它的值就是由于没有被高速缓存中的缓冲区满足而导致访问磁盘数据文件的读取请求数。 select disk_reads from v$sqlarea
说明
数据源
此数据项代表高速缓存中的缓冲区满足的读取请求数。换句话说,它的值就是此语句的所有执行所读取的总块数。
select buffer_gets from v$sqlarea
说明
数据源
此数据项代表在此采样周期内每秒执行此语句的次数。
DeltaBlockGets / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒分析此语句的次数。
DeltaParseCalls / Seconds说明
数据源
其中:
此数据项代表此采样周期内此语句每秒执行的物理读取数。换句话说,它的值就是由于没有被高速缓存中的缓冲区满足而导致访问磁盘数据文件的读取请求数。
DeltaPhysicalReads / Seconds说明
数据源
其中:
此数据项代表在此采样周期内高速缓存中的缓冲区每秒满足的此语句的读取请求数。
DeltaBufferGets / Seconds说明
数据源
其中:
此数据项代表在此采样周期内为完成此语句每秒处理的总行数。
DeltaRowsProcessed / Seconds说明
数据源
其中:
此数据项代表此语句所使用的全部可共享内存的总和 (字节)。
select sharable_mem from v$sqlarea
说明
数据源
此数据项代表此语句所使用的全部永久内存的总和 (字节)。
select persistent_mem from v$sqlarea
说明
数据源
此数据项代表当前此语句所使用的全部内存的总和 (字节)。
select runtime_mem from v$sqlarea
说明
数据源
此数据项代表首先执行此语句的应用程序模块的名称。通过使用 DMBS_APPLICATION_INFO.SET_MODULE 能够可选地设置此名称。
select module from v$sqlarea
说明
数据源
此数据项代表由首先执行此语句的应用程序模块执行的操作的名称。通过使用 DMBS_APPLICATION_INFO.SET_ACTION 能够可选地设置此名称。
select action from v$sqlarea
说明
数据源
此图表项代表采样过程中属于此语句的总物理读取数的百分比。
DeltaPhysicalReads / DeltaTotalReads说明
数据源
其中:
此图表项代表采样过程中属于此语句的总缓冲区获取数的百分比。
DeltaBufferGets / DeltaTotalGets说明
数据源
其中:
此类按每个文件分解 I/O 动作
此类包括下列图表:
此类按每个文件分解 I/O 动作
此数据项代表此采样周期内从此数据文件的每秒物理读取数。
DeltaPhysicalReads / Seconds说明
数据源
其中:
此数据项代表此采样周期内到此数据文件的每秒物理写入数。
DeltaPhysicalWrites / Seconds说明
数据源
其中:
此数据项代表此采样周期内从此数据文件的每秒物理块读取数。
DeltaPhysicalBlockReads / Seconds说明
数据源
其中:
此数据项代表此采样周期内到此数据文件的每秒物理块写入数。
DeltaPhysicalBlockWrites / Seconds说明
数据源
其中:
此数据项代表此采样周期内从此数据文件进行读取花费的时间。除非 TIMED_STATISTICS 参数为 TRUE,否则此值将始终为 0。
DeltaReadTime说明
数据源
其中:
此数据项代表此采样周期内进行到此数据文件的写入花费的时间。除非 TIMED_STATISTICS 参数为 TRUE,否则此值将始终为 0。
DeltaWriteTime说明
数据源
其中:
此数据项代表此采样周期内从此数据文件进行读取花费的时间。除非 TIMED_STATISTICS 参数为 TRUE,否则此值将始终为 0。
DeltaReadTime / DeltaPhysicalReads说明
数据源
其中:
此数据项代表此采样周期内进行到此数据文件的写入花费的时间。除非 TIMED_STATISTICS 参数为 TRUE,否则此值将始终为 0。
DeltaWriteTime / DeltaPhysicalWrites说明
数据源
其中:
此数据项代表此采样周期内从此数据文件的每次读取所读取的块数。一个接近于 1 的值指示单个块的读取正在发生这一事实。
DeltaPhysicalBlockReads / DeltaPhysicalReads说明
数据源
其中:
此数据项代表此采样周期内每次到此数据文件的写入所写入的块数。一个接近于 1 的值指示单个块的写入正在发生这一事实。
DeltaPhysicalBlockWrites / DeltaPhysicalWrites说明
数据源
其中:
栓锁统计数据 - 仅显示休眠数、轮选数、等待者数、丢失数 > 0 的栓锁
此类包括下列图表:
栓锁统计数据 - 仅显示休眠数、轮选数、等待者数、丢失数 > 0 的栓锁
如果使用“愿意等待请求”来请求栓锁并且栓锁是不可用的,则请求进程短暂等待之后会重新请求栓锁。此进程在栓锁可用之前继续等待和请求。
此数据项代表此采样周期内的每秒成功“愿意等待栓锁请求”数。
DeltaGets / Seconds说明
数据源
其中:
如果一个进程不能立即获得栓锁,则它必须等待栓锁。这将导致减速的发生并导致额外的 CPU 使用,直到有一个栓锁可用为止。CPU 使用是进程“旋转”的结果。“旋转”是指进程在固定时间间隔之后继续寻找该栓锁的可用性,在此时间间隔内进程休眠。它继续旋转,直到有一个栓锁可用为止。
此数据项代表,此采样周期内每秒为了获取特定栓锁的尝试 (第一次尝试失败但在轮选后成功) 次数。
DeltaSpinGets / Seconds说明
数据源
其中:
如果使用“愿意等待请求”来请求栓锁并且栓锁是不可用的,则请求进程短暂等待之后会重新请求栓锁。此进程在栓锁可用之前继续等待和请求。
此数据项代表此采样周期内初始“愿意等待栓锁请求”每秒不成功次数。
DeltaMisses / Seconds说明
数据源
其中:
如果使用“愿意等待请求”来请求栓锁并且栓锁是不可用的,则请求进程短暂等待之后会重新请求栓锁。此进程在栓锁可用之前继续等待和请求。
此数据项代表,此采样周期内进程在初始“愿意等待请求”之后每秒等待请求的栓锁的次数。
DeltaMisses / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒唤醒此栓锁的等待的次数。
DeltaWaitersWoken / Seconds说明
数据源
其中:
此数据项代表此采样周期内在持有不同栓锁的同时每秒等待此栓锁的次数。
DeltaWaitersWoken / Seconds说明
数据源
其中:
如果用立即请求来请求栓锁并且该栓锁不可用,则请求进程将不等待但继续处理。
此数据项代表此采样周期内每秒此栓锁的成功立即请求数。
DeltaImmediateGets / Seconds说明
数据源
其中:
如果用立即请求来请求栓锁并且该栓锁不可用,则请求进程将不等待但继续处理。
此数据项代表此采样周期内每秒此栓锁的不成功立即请求数。
DeltaImmediateMisses / Seconds说明
数据源
其中:
如果使用“愿意等待请求”来请求栓锁并且栓锁是不可用的,则请求进程短暂等待之后会重新请求栓锁。此进程在栓锁可用之前继续等待和请求。
此数据项代表此采样周期内此栓锁的“愿意等待请求”尝试在第一次尝试时失败的次数百分比。
(DeltaMisses / DeltaGets) * 100说明
数据源
其中:
如果用立即请求来请求栓锁并且该栓锁不可用,则请求进程将不等待但继续处理。
此数据项代表此采样周期内此栓锁的立即请求第一次尝试失败的次数百分比。
(DeltaImmediateMisses / (DeltaImmediateGets + DeltaImmediateMisses)) * 100说明
数据源
其中:
栓锁是锁的一种类型,可以快速获得和释放。栓锁通常用来阻止多于一个进程在给定时间执行同一段代码。栓锁具有用来阻止死锁的关联级别。一旦一个进程获得某一级别的栓锁,随后它就不能获得与该级别相等或低于该级别的栓锁 (除非它无等待地获得栓锁)。
此数据项代表栓锁级别。
select level# from v$latch
说明
数据源
如果使用“愿意等待请求”来请求栓锁并且栓锁是不可用的,则请求进程短暂等待之后会重新请求栓锁。此进程在栓锁可用之前继续等待和请求。
此数据项代表,此采样周期内进程在初始“愿意等待请求”之后为请求的栓锁等待 1 次的次数。
select sleep1 from v$latch
说明
数据源
如果使用“愿意等待请求”来请求栓锁并且栓锁是不可用的,则请求进程短暂等待之后会重新请求栓锁。此进程在栓锁可用之前继续等待和请求。
此数据项代表,此采样周期内进程在初始“愿意等待请求”之后为请求的栓锁等待 2 次的次数。
select sleep2 from v$latch
说明
数据源
如果使用“愿意等待请求”来请求栓锁并且栓锁是不可用的,则请求进程短暂等待之后会重新请求栓锁。此进程在栓锁可用之前继续等待和请求。
此数据项代表,此采样周期内进程在初始“愿意等待请求”之后为请求的栓锁等待 3 次的次数。
select sleep3 from v$latch
说明
数据源
如果使用“愿意等待请求”来请求栓锁并且栓锁是不可用的,则请求进程短暂等待之后会重新请求栓锁。此进程在栓锁可用之前继续等待和请求。
此数据项代表,此采样周期内进程在初始“愿意等待请求”之后为请求的栓锁等待 4 次的次数。
select sleep4 from v$latch
说明
数据源
例程范围内的统计数据
此类包括下列图表:
例程范围内的统计数据
此数据项代表分析调用在会话游标高速缓存中找到游标的次数百分比。
(DeltaCursorHits / (DeltaParseCount)) * 100说明
数据源
其中:
如果此统计数据是会话的分析调用总数的较小百分比,只要 SESSION_CACHED_CURSORS 对操作系统的分页和交换活动没有负作用,就考虑将它设置为较大的值
此数据项代表数据块缓冲区高速缓存的效率,由查询所请求的数据块在内存中的次数百分比度量。
缓冲区高速缓存的有效使用可以大大减少数据库上的 I/O 负载。如果缓冲区高速缓存太小,频繁访问的数据将很快被从缓冲区高速缓存中清除出来,这将迫使从磁盘重新提取信息。因为磁盘访问比内存访问要慢得多,所以应用程序的性能将受到损害。另外,加在 I/O 子系统上的额外负担可能在一个或多个设备处带来瓶颈,进一步降低性能。
((DeltaLogicalGets - (DeltaPhysicalReads - DeltaPhysicalReadsDirect)) / DeltaLogicalGets) * 100说明
数据源
其中:
DB_BLOCK_BUFFERS 初始化参数确定在缓冲区高速缓存中可用的数据库缓冲区数。它是导致例程上的 SGA 的内存总需求的主要参数之一。DB_BLOCK_BUFFERS 参数与 DB_BLOCK_SIZE 参数一起控制缓冲区高速缓存的总大小。因为只能在第一次创建数据库时指定 DB_BLOCK_SIZE,所以缓冲区高速缓存的大小通常是通过使用 DB_BLOCK_BUFFERS 参数来控制的。
要增大缓冲区高速缓存的大小,请考虑增大 DB_BLOCK_BUFFERS 初始化参数。此增大允许 Oracle Server 在内存中保存更多的信息,这样减少使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表递归调用数与用户调用数的百分比。
有时,为了执行用户发出的 SQL 语句,Oracle Server 必须发出其他语句。这样的语句称为递归调用或递归 SQL 语句。例如,当您向表中插入一行,而表无足够的空间容纳此行时,如果正在使用字典管理的表空间,则 Oracle Server 进行递归调用来动态分配空间。在下列情况下也会产生递归调用:
说明
DeltaRecursiveCalls / DeltaUserCalls
其中:
如果在您的应用程序运行时 Oracle Server 看起来进行过多的递归调用,请确定是哪些动作引起这些递归调用。如果确定递归调用是由动态扩展引起的,则请通过分配更大的区来降低扩展的频率,或者如果您正在使用 Oracle 8.I,则可以考虑利用本地管理的表空间,这样也可以降低扩展的频率。
当不得不将 SQL 语句加载到共享池中时发生硬分析。在这种情况下,Oracle Server 不得不在共享池中分配内存并分析该语句。当 Oracle Server 为 SQL 语句检查共享池并找到一种它可以重用的语句版本时将记录软分析。
此数据项代表游标已经在游标高速缓存中的分析请求百分比;换句话说,就是软分析百分比。
((DeltaParseCountTotal - DeltaParseCountHard) / DeltaParseCountTotal) * 100说明
数据源
其中:
此数据项代表分析 SQL 语句所花费的 CPU 时间百分比。分析时间 CPU 可能是应用程序没有得到很好调整的明显表征。高分析时间 CPU 通常表明此应用程序可能正在花费过多的时间打开和关闭游标,或者未使用赋值变量。
(DeltaParseTime / DeltaTotalTime) * 100说明
数据源
其中:
如果分析花费的时间过长,请评估 SQL 语句以确定可以修改哪些语句,以优化共享 SQL 池内存的使用并避免不必要的语句再分析。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
此数据项代表执行递归调用花费的时间百分比。
有时,为了执行用户发出的 SQL 语句,Oracle Server 必须发出其他语句。这样的语句称为递归调用或递归 SQL 语句。例如,当您向表中插入一行,而表无足够的空间容纳此行时,如果正在使用字典管理的表空间,则 Oracle Server 进行递归调用来动态分配空间。在下列情况下也会产生递归调用:
说明
(DeltaRecursiveTime / DeltaTotalTime) * 100
其中:
如果在您的应用程序运行时 Oracle Server 看起来进行过多的递归调用,请确定是哪些动作引起这些递归调用。如果确定递归调用是由动态扩展引起的,则请通过分配更大的区来降低扩展的频率,或者如果您正在使用 Oracle 8.I,则可以考虑利用本地管理的表空间,这样也可以降低扩展的频率。
此数据项代表查找缓冲区、提取行或索引关键字等所花费的时间百分比。通常“其他”CPU 应该代表所用总的 CPU 时间中 CPU 时间的最高百分比。
((DeltaTotalTime - (DeltaParseTime + DeltaRecursiveTime)) / DeltaTotalTime) * 100说明
数据源
其中:
通过研究具有大量 buffer_gets 和/或大量物理读取的 SQL 语句,有可能减少“其他”CPU 时间。
此数据项代表库高速缓存的效率,由 PL/SQL 块和 SQL 语句的完全分析或编译的结果已经在内存中的次数百分比度量。
共享池是 SGA 中的一个区域,它包含专用于特定例程配置的共享 SQL 请求库高速缓存、字典高速缓存和其他高速缓存结构。
共享池机制至少能够用下列三种方式大大减少系统资源开销:
说明
如果共享池太小,用户就会消耗其他资源来完成数据库操作。对于库高速缓存访问,开销主要是重新分析 SQL 语句所要求的其他 CPU 资源。
(DeltaPinHits / DeltaPins) * 100
其中:
SHARED_POOL_SIZE 初始化参数控制共享池的总大小。要降低从共享池中清除 SQL 请求以便为新请求腾出空间的频率,请考虑增大 SHARED_POOL_SIZE。
要利用共享 SQL 区域可用的其他内存,您还需要增大每个会话允许的游标数。通过增大初始化参数 OPEN_CURSORS 的值您就可以增大此限制值。
另外,检查可以被修改以优化共享 SQL 池内存使用和避免不必要的语句重新分析的 SQL 语句。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
此数据项代表排序效率,它是由在内存中执行 (与转到磁盘上相对) 的排序次数的百分比度量的。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
(DeltaMemorySorts / (DeltaDiskSorts + DeltaMemorySorts)) * 100说明
数据源
其中:
如果磁盘上发生了过多的排序,请考虑增大 SORT_AREA_SIZE 初始化参数,以增加排序区域的大小。更大的排序区域使 Oracle Server 能够将排序保持在内存中,从而减少了使用当前大小的排序区域完成等量工作所需的 I/O 操作数。
此数据项代表此采样周期内每次排序的平均行数。
(DeltaSortRows / (DeltaDiskSorts + DeltaMemorySorts)) * 100说明
数据源
where:
此数据项代表分配给所有排序的最大空间大小 (以块为单位)。
select sum(max_used_blocks) from v$sort_segment
说明
数据源
重做日志条目包含对数据库块缓冲区所进行的更改的记录。日志写入器 (LGWR) 进程将重做日志条目从日志缓冲区写入一个重做日志文件。应该调整日志缓冲区的大小以便新条目在缓冲区中始终有可用空间,即使是在对重做日志的访问繁忙时也应满足这一条件。如果日志缓冲区不够大,在用户进程等待 LGWR 释放重做日志缓冲区中的空间时将延迟用户进程。
此数据项代表重做日志缓冲区的效率,由用户无需等待日志写入器释放重做日志缓冲区中的空间的次数百分比度量。
((DeltaRedoEntries - DeltaRedoLogSpaceRequests) / DeltaRedoEntries) * 100说明
数据源
其中:
LOG_BUFFER 初始化参数决定将重做条目缓冲到重做日志文件中时所使用的内存大小。
如果等待是一个问题,请考虑增大 LOG_BUFFER 初始化参数以增大重做日志缓冲区的大小。重做日志条目包含对数据库块缓冲区所进行的更改的记录。日志写入器进程 (LGWR) 将重做日志条目从日志缓冲区写入一个重做日志。应该调整重做日志缓冲区的大小以便新条目在缓冲区中始终有可用空间,即使是在对重做日志的访问繁忙时也应满足这一条件。
如果使用“愿意等待请求”来请求栓锁并且栓锁是不可用的,则请求进程短暂等待之后会重新请求栓锁。此进程在栓锁可用之前继续等待和请求。
此数据项代表此采样周期内此栓锁的“愿意等待请求”尝试在第一次尝试时失败的次数百分比。
(DeltaMisses / DeltaGets) * 100说明
数据源
其中:
此数据项代表活动会话数。
select count(*) from v$session where status = 'ACTIVE'
说明
数据源
此数据项代表非活动会话数。
TotalSessions - ActiveSessions说明
数据源
其中:
为整个例程汇总的 I/O 统计数据
此类包括下列图表:
为整个例程汇总的 I/O 统计数据
此数据项代表在此采样周期内每秒从磁盘读取的数据块数。
DeltaPhysicalReads / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒的磁盘写入数。
DeltaWrites / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒的逻辑读取数。
DeltaReads / Seconds说明
数据源
其中:
Blocks_gotten / (short_scans + long_scans)
寻找空闲缓冲区时扫描的平均缓冲区数
行扫描/(行扫描 + 行标识扫描)
此数据项代表采样周期内每秒的长表扫描数。如果某个表未被高速缓存而且其高水线标记大于 5 个块,则认为此表是“长型的”。
DeltaScans / Seconds说明
数据源
其中:
此数据项代表采样周期内每秒的短表扫描数。如果某个表被高速缓存而且其高水线标记小于 5 个块,则认为此表是“短型的”。
DeltaScans / Seconds说明
数据源
其中:
行标识扫描/(行扫描 + 行标识扫描)
在扫描操作期间, Oracle Server 按顺序检索每一行。此数据项代表此采样周期内每秒扫描的行数。
select s.value from v$sysstat s, v$statname n where n.name='table scan rows gotten' and n.statistic#=s.statistic#
说明
数据源
每秒的所有网络读取/写入数
此项代表此采样周期内在 LRU 缓冲区列表中找到的灰数据缓冲区数和写入请求数的总和。总计的灰数据队列长度是完成写入请求后停留在灰数据队列中的块数。
select s.value from v$sysstat s, v$statname n where n.name='summed dirty queue length' and n.statistic#=s.statistic#
说明
数据源
如果存在许多灰数据缓冲区,那么一个或多个 DBWn 进程很可能无法继续下去。请增大缓冲区高速缓存的大小或调整 DBWn 进程。
由 DBWR 进程生成的 I/O 请求数
每个写入请求在 LRU 列表上遗留的平均灰数据块数
对于每个空闲请求找到的灰数据缓冲区数
此数据项代表采样周期内作为更新或删除操作的结果每秒对 SGA 中的所有块进行的更改数。此值是对全部数据库工作的一个粗略指示,正像它指示缓冲区被灰化的速率那样。
DeltaBlockChanges / Seconds说明
数据源
其中:
此数据项代表采样周期内用户进程每秒应用回退条目对块执行持续读取的次数。
DeltaConsistentChanges / Seconds说明
数据源
其中:
此数据项代表此采样周期内每个事务处理的磁盘读取数。
DeltaReads / Transactions说明
数据源
其中:
此数据项代表此采样周期内每个事务处理的磁盘写入数。
DeltaWrites / Transactions说明
数据源
其中:
此数据项代表此采样周期内每个事务处理的逻辑读取数。
DeltaReads / Transactions说明
数据源
其中:
此数据项代表采样周期内每个事务处理的长表扫描数。如果某个表未被高速缓存而且其高水线标记大于 5 个块,则认为此表是“长型的”。
DeltaScans / Transactions说明
数据源
其中:
此数据项代表采样周期内每个事务处理的短表扫描数。如果某个表被高速缓存而且其高水线标记小于 5 个块,则认为此表是“短型的”。
DeltaScans / Transactions说明
数据源
其中:
每个事务处理的表扫描数
此数据项代表采样周期内作为更新或删除操作的结果每个事务处理对 SGA 中的所有块进行的更改数。此值是对全部数据库工作的一个粗略指示,正像它指示缓冲区被灰化的速率那样。
DeltaBlockChanges / Transactions说明
数据源
其中:
此数据项代表采样周期内每个事务处理中用户进程应用回退条目对块执行持续读取的次数。
DeltaConsistentChanges / Transactions说明
数据源
其中:
每个事务处理的全部网络读取/写入
每秒从磁盘直接读取的数据块数
每个事务处理从磁盘直接读取的数据块数
此数据项代表此采样周期内每秒生成的重做大小 (字节)。
重做日志缓冲区是 SGA 中的一个循环缓冲区,持有关于对数据库进行的更改的信息。此信息存储在重做条目中。重做条目包含重新构造 (或重做) 由 INSERT,UPDATE,DELETE,CREATE,ALTER 或 DROP 操作对数据库进行的更改所必需的信息。 如果有必要,重做条目将用于数据库的恢复。
DeltaRedoSize / Seconds说明
数据源
其中:
关于已更改数据块的处理的统计数据
此类包括下列图表:
关于已更改数据块的处理的统计数据
此数据项代表此采样周期内每个重做写入操作写入磁盘的平均重做块数。
重做日志缓冲区是 SGA 中的一个循环缓冲区,持有关于对数据库进行的更改的信息。此信息存储在重做条目中。重做条目包含重新构造 (或重做) 由 INSERT,UPDATE,DELETE,CREATE,ALTER 或 DROP 操作对数据库进行的更改所必需的信息。 如果有必要,重做条目将用于数据库的恢复。
日志写入器进程 (LGWR) 负责重做日志缓冲区的管理;即将重做日志缓冲区写入到磁盘上的重做日志文件中。
DeltaRedoBlocksWritten / DeltaRedoWrites说明
数据源
其中:
此数据项代表此采样周期内每秒复制到重做日志缓冲区中的平均重做块数。
重做日志缓冲区是 SGA 中的一个循环缓冲区,持有关于对数据库进行的更改的信息。此信息存储在重做条目中。重做条目包含重新构造 (或重做) 由 INSERT,UPDATE,DELETE,CREATE,ALTER 或 DROP 操作对数据库进行的更改所必需的信息。 如果有必要,重做条目将用于数据库的恢复。
DeltaRedoEntries / Seconds说明
数据源
其中:
此数据项代表每秒活动重做日志文件变满并且 Oracle Server 不得不等待为重做日志条目分配磁盘空间的次数。此空间是通过执行日志切换创建的。
重做日志缓冲区是 SGA 中的一个循环缓冲区,持有关于对数据库进行的更改的信息。此信息存储在重做条目中。重做条目包含重新构造 (或重做) 由 INSERT,UPDATE,DELETE,CREATE,ALTER 或 DROP 操作对数据库进行的更改所必需的信息。 如果有必要,重做条目将用于数据库的恢复。
日志写入器进程 (LGWR) 负责重做日志缓冲区的管理;即将重做日志缓冲区写入到磁盘上的重做日志文件中。
相对于 SGA 的大小或工作量提交率而言,较小的日志文件会引起问题。当日志切换发生时,Oracle Server 必须确保在切换到一个新日志文件之前将所有提交的灰数据缓冲区写入到磁盘中。如果您有一个充满灰数据缓冲区和较小重做日志文件的较大 SGA,在继续进行之前日志切换必须等待数据库写入进程 (DBWR) 将灰数据缓冲区写入到磁盘中。这会降低吞吐量。
DeltaRedoLogSpaceRequests / Seconds说明
数据源
其中:
此数据项代表此采样周期内作为 COMMIT 的结果每秒将更改写入到磁盘中的次数。当用户发出 COMMIT 语句时,日志写入器进程 (LGWR) 在重做日志缓冲区中放入提交记录并立即将它与事务处理的重做条目一起写入到磁盘中。
DeltaRedoLogSpaceRequests / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒写入到重做日志文件中的平均块数。
重做日志缓冲区是 SGA 中的一个循环缓冲区,持有关于对数据库进行的更改的信息。此信息存储在重做条目中。重做条目包含重新构造 (或重做) 由 INSERT,UPDATE,DELETE,CREATE,ALTER 或 DROP 操作对数据库进行的更改所必需的信息。 如果有必要,重做条目将用于数据库的恢复。
日志写入器进程 (LGWR) 负责重做日志缓冲区的管理;即将重做日志缓冲区写入到磁盘上的重做日志文件中。
DeltaBlocksWritten / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒重做写入操作数。
重做日志缓冲区是 SGA 中的一个循环缓冲区,持有关于对数据库进行的更改的信息。此信息存储在重做条目中。重做条目包含重新构造 (或重做) 由 INSERT,UPDATE,DELETE,CREATE,ALTER 或 DROP 操作对数据库进行的更改所必需的信息。 如果有必要,重做条目将用于数据库的恢复。
日志写入器进程 (LGWR) 负责重做日志缓冲区的管理;即将重做日志缓冲区写入到磁盘上的重做日志文件中。
DeltaRedoWrites / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒生成的重做大小 (字节)。
重做日志缓冲区是 SGA 中的一个循环缓冲区,持有关于对数据库进行的更改的信息。此信息存储在重做条目中。重做条目包含重新构造 (或重做) 由 INSERT,UPDATE,DELETE,CREATE,ALTER 或 DROP 操作对数据库进行的更改所必需的信息。 如果有必要,重做条目将用于数据库的恢复。
DeltaRedoSize / Seconds说明
数据源
其中:
此数据项代表进程需要等待重做分配的次数。
select value from v$sysstat where name='redo buffer allocation retries'
说明
数据源
SQL 语句的使用与误用
SQL 语句的使用与误用
等待特定事件的会话的会话统计数据
此类包括下列图表:
等待特定事件的会话的会话统计数据
此数据项代表此会话的分析调用 (硬和软) 总数。
select s.value from v$sesstat s, v$statname n where n.name='parse count (total)' and n.statistic#=s.statistic#
说明
数据源
此数据项代表为此会话执行 SQL 语句的调用 (用户和递归) 总数。
UserCalls + RecursiveCalls说明
数据源
其中:
此数据项代表此采样周期内会话游标高速缓存中的命中数。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此采样周期内存储于高速缓存中的游标总数。只有当 SESSION_CACHED_CURSORS 大于 0 时才增加此值。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此会话所使用的 CPU 时间百分比。
(DeltaCpuTime / DeltaTotalCpuTime) * 100说明
数据源
其中:
此数据项代表正被用于分析 (硬和软) 的此会话的 CPU 时间百分比。分析时间 CPU 可能是应用程序没有得到很好调整的明显表征。高分析时间 CPU 通常表明此应用程序可能正在花费过多的时间打开和关闭游标,或者未使用赋值变量。
(DeltaParseTime / DeltaCpuTime) * 100说明
数据源
其中:
如果正在发生过多的分析,请检查 SQL 语句。查找可以被修改以优化共享 SQL 池内存使用和避免不必要的语句重新分析的语句。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
有时为了执行用户发出的 SQL 语句,Oracle Server 必须发出其他语句。这样的语句称为递归调用或递归 SQL 语句。例如,当您向表中插入一行,而表无足够的空间容纳此行时,如果正在使用字典管理的表空间,则 Oracle Server 进行递归调用来动态分配空间。在下列情况下也会产生递归调用:
说明
此数据项代表此会话的 CPU 时间正被用于递归调用的百分比。
(DeltaRecursiveTime / DeltaCpuTime) * 100
其中:
如果在您的应用程序运行时 Oracle Server 看起来进行过多的递归调用,请确定是哪些动作引起这些递归调用。如果确定递归调用是由动态扩展引起的,则请通过分配更大的区来降低扩展的频率,或者如果您正在使用 Oracle 8.i,则请考虑利用本地管理的表空间,这样也可以降低扩展的频率。
此数据项代表查找缓冲区、提取行或索引关键字等所花费的时间百分比。通常“其他”CPU 应该代表所用总的 CPU 时间中 CPU 时间的最高百分比。
((DeltaCpuTime - (DeltaParseTime + DeltaRecursiveTime)) / DeltaCpuTime) * 100说明
数据源
其中:
通过研究具有大量 buffer_gets 和/或大量物理读取的 SQL 语句,有可能减少“其他”CPU 时间。
此数据项代表在此采样周期内每秒以CURRENT 模式获得的块数。
DeltaBlockGets / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒为块请求持续读取的次数。
DeltaBlockGets / Seconds说明
数据源
其中:
此数据项代表在此采样周期内每秒从磁盘读取的数据块数。
DeltaPhysicalReads / Seconds说明
数据源
其中:
此数据项代表此采样周期内从磁盘直接读取 (绕过缓冲区高速缓存) 的读取数百分比。例如,在高带宽、数据密集型操作 (如并行查询) 中,绕过缓冲区高速缓存的磁盘块读取使传输率达到最大,并防止驻留在缓冲区高速缓存中的共享数据块过早超龄。
DeltaDirectReads / DeltaPhysicalReads说明
数据源
其中:
此数据项代表作为更新或删除的一部分对 SGA 中的块进行更改的次数。某些更改正在生成重做日志条目,如果事务处理被提交,它们将成为对数据库的永久更改。
此统计数据是数据库总工作的粗略指示。此统计数据表明缓冲区的灰化速率。
DeltaBlockChanges / Seconds说明
数据源
其中:
此数据项代表作为更新或删除的一部分对 SGA 中的块进行更改的次数。产生大量持续更改的工作量可能消耗大量的资源。
DeltaConsistentChanges / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒转到磁盘的排序数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / Seconds说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表在此采样周期内每秒在内存中执行的排序(与在磁盘上执行的排序相对)数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / Seconds说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表此采样周期内平均的每秒排序行数。
DeltaSortRows / Seconds说明
数据源
其中:
此数据项代表在此采样周期内在磁盘上执行的排序数(与在内存中执行的排序数相对)百分比。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / DeltaMemorySorts说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
执行到磁盘的排序数百分比
此数据项代表此采样周期内每秒的分析数。
DeltaParseCount / Second说明
数据源
其中:
如果分析花费的时间过长,请评估 SQL 语句以确定可以修改哪些语句,以优化共享 SQL 池内存的使用并避免不必要的语句再分析。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
此数据项代表此采样周期内每秒执行的分析调用 (硬和软) 数。
DeltaParseCount / Second说明
数据源
其中:
此数据项代表此采样周期内每秒执行的分析调用 (硬和软) 数。
DeltaParseElapsedTime说明
数据源
其中:
此数据项代表用于此会话的当前 UGA 大小。
采样结束和开始时的 'select s.value from v$sesstat s, v$statname n where n.name='session uga memory' and n.statistic#=s.statistic#' 的差值
说明
数据源
此数据项代表此采样周期内每个分析的平均等待时间 (秒)。
((DeltaParseElapsedTime - DeltaParseCpuTime) / Seconds) / DeltaParseCount说明
数据源
其中:
此数据项代表此采样周期内每秒的语句执行 (用户和递归) 的次数。
DeltaExecutes / Seconds说明
数据源
其中:
会话序列号
显示数据库写入器进程健康状况的统计数据
此类包括下列图表:
显示数据库写入器进程健康状况的统计数据
此数据项代表此采样周期内每秒请求 DBWn 产生空闲缓冲区的次数。
数据库写入器进程 (DBWn) 将缓冲区的内容写入到数据文件中。DBWn 进程负责将数据库缓冲区高速缓存中的已修改 (灰的) 缓冲区写入到磁盘中。
当数据库缓冲区高速缓存中的缓冲区被修改时,它被标记为“灰的”。DBWn 进程的主要任务是通过将灰数据缓冲区写入到磁盘中来保持缓冲区高速缓存是“干净的”。随着用户进程使缓冲区变灰,空闲缓冲区数将减少。如果空闲缓冲区数减少到很小,必须将块从磁盘读取到高速缓存中的用户进程就找不到空闲缓冲区。DBWR 管理缓冲区高速缓存以便用户进程总是能够找到空闲缓冲区。
当 Oracle Server 进程在扫描缓冲区数阈值后找不到干净的可重用缓冲区时,它将发出信号提示 DBWn 写入。当接收到增加空闲缓冲区的此请求时,DBWn 将最近最少使用 (LRU) 的缓冲区写入到磁盘中。通过将最近最少使用的灰数据缓冲区写入到磁盘中,DBWn 在保持最近使用的缓冲区驻留在内存中的同时提高查找空闲缓冲区的性能。例如,将属于频繁访问的小表或索引的块保存在高速缓存中,这样就无需重新从磁盘读入它们。LRU 算法将更频繁访问的块保存在缓冲区高速缓存中,这样当有缓冲区被写入磁盘时,它就不太可能包含很快可能会有用的数据。
另外,DBWn 定期写入缓冲区以提前检查点,检查点是重做日志中的一个位置,崩溃和例程恢复将需要从此位置开始。
DeltaMakeFreeRequests / Seconds说明
数据源
其中:
从 Oracle 8.0 开始,DB_WRITER_PROCESSES 参数提供一种消除 DBWn 进程处 I/O 瓶颈的方法。DB_WRITER_PROCESSES 参数指定例程的起始 DBWn (从 DBW0 到 DBW9) 进程数。每个都是完全独立的进程,既执行“收集”阶段也执行“写入”阶段。每个其他的 DBWn 进程从数据库高速缓存中其自身专用的部分写入缓冲区。因此,从吞吐量的角度看,多重 DBWn 进程应该能够比具有多个 I/O 从进程的单个 DBWn 传送更多的 I/O。但是,仅在多处理器计算机上使用 DB_WRITER_PROCESSES 参数才是有益的。
另一种方法是启动 DBWn I/O 从进程以便分散跨多个从进程写入数据库缓冲区的负载,单个主 DBWn 进程进行数据“收集”,多个从进程进行写入。因为 I/O 从进程不是串行地写入,即使只有一个 CPU 时也是如此,所以在单个 CPU 系统上具有多个 I/O 从进程可以是有用的。
一般说来,除非明显存在数据库写入器瓶颈,否则不应该使用 DBWR_IO_SLAVES 或 DB_WRITER_PROCESSES。
此数据项代表此采样周期内当 DBWn 被请求产生空闲缓冲区时每秒找到的干净缓冲区数。
数据库写入器进程 (DBWn) 将缓冲区的内容写入到数据文件中。DBWn 进程负责将数据库缓冲区高速缓存中的已修改 (灰的) 缓冲区写入到磁盘中。
当数据库缓冲区高速缓存中的缓冲区被修改时,它被标记为“灰的”。DBWn 进程的主要任务是通过将灰数据缓冲区写入到磁盘中来保持缓冲区高速缓存是“干净的”。随着用户进程使缓冲区变灰,空闲缓冲区数将减少。如果空闲缓冲区数减少到很小,必须将块从磁盘读取到高速缓存中的用户进程就找不到空闲缓冲区。DBWR 管理缓冲区高速缓存以便用户进程总是能够找到空闲缓冲区。
当 Oracle Server 进程在扫描缓冲区数阈值后找不到干净的可重用缓冲区时,它将发出信号提示 DBWn 写入。当接收到增加空闲缓冲区的此请求时,DBWn 将最近最少使用 (LRU) 的缓冲区写入到磁盘中。通过将最近最少使用的灰数据缓冲区写入到磁盘中,DBWn 在保持最近使用的缓冲区驻留在内存中的同时提高查找空闲缓冲区的性能。例如,将属于频繁访问的小表或索引的块保存在高速缓存中,这样就无需重新从磁盘读入它们。LRU 算法将更频繁访问的块保存在缓冲区高速缓存中,这样当有缓冲区被写入磁盘时,它就不太可能包含很快可能会有用的数据。
另外,DBWn 定期写入缓冲区以提前检查点,检查点是重做日志中的一个位置,崩溃和例程恢复将需要从此位置开始。
DeltaFreeBuffers / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒 DBWn 扫描 LRU 队列以寻找要写入的缓冲区的次数。此值还包括扫描用于填充为另一个目的 (如检查点) 而编写的批处理的次数。
数据库写入器进程 (DBWn) 将缓冲区的内容写入到数据文件中。DBWn 进程负责将数据库缓冲区高速缓存中的已修改 (灰的) 缓冲区写入到磁盘中。
当数据库缓冲区高速缓存中的缓冲区被修改时,它被标记为“灰的”。DBWn 进程的主要任务是通过将灰数据缓冲区写入到磁盘中来保持缓冲区高速缓存是“干净的”。随着用户进程使缓冲区变灰,空闲缓冲区数将减少。如果空闲缓冲区数减少到很小,必须将块从磁盘读取到高速缓存中的用户进程就找不到空闲缓冲区。DBWR 管理缓冲区高速缓存以便用户进程总是能够找到空闲缓冲区。
当 Oracle Server 进程在扫描缓冲区数阈值后找不到干净的可重用缓冲区时,它将发出信号提示 DBWn 写入。当接收到增加空闲缓冲区的此请求时,DBWn 将最近最少使用 (LRU) 的缓冲区写入到磁盘中。通过将最近最少使用的灰数据缓冲区写入到磁盘中,DBWn 在保持最近使用的缓冲区驻留在内存中的同时提高查找空闲缓冲区的性能。例如,将属于频繁访问的小表或索引的块保存在高速缓存中,这样就无需重新从磁盘读入它们。LRU 算法将更频繁访问的块保存在缓冲区高速缓存中,这样当有缓冲区被写入磁盘时,它就不太可能包含很快可能会有用的数据。
另外,DBWn 定期写入缓冲区以提前检查点,检查点是重做日志中的一个位置,崩溃和例程恢复将需要从此位置开始。
DeltaLRUScans / Seconds说明
数据源
其中:
此数据项代表此采样周期内 DBWn 每次扫描 LRU 以寻找灰数据缓冲区时的每秒总计的扫描深度。
数据库写入器进程 (DBWn) 将缓冲区的内容写入到数据文件中。DBWn 进程负责将数据库缓冲区高速缓存中的已修改 (灰的) 缓冲区写入到磁盘中。
当数据库缓冲区高速缓存中的缓冲区被修改时,它被标记为“灰的”。DBWn 进程的主要任务是通过将灰数据缓冲区写入到磁盘中来保持缓冲区高速缓存是“干净的”。随着用户进程使缓冲区变灰,空闲缓冲区数将减少。如果空闲缓冲区数减少到很小,必须将块从磁盘读取到高速缓存中的用户进程就找不到空闲缓冲区。DBWR 管理缓冲区高速缓存以便用户进程总是能够找到空闲缓冲区。
当 Oracle Server 进程在扫描缓冲区数阈值后找不到干净的可重用缓冲区时,它将发出信号提示 DBWn 写入。当接收到增加空闲缓冲区的此请求时,DBWn 将最近最少使用 (LRU) 的缓冲区写入到磁盘中。通过将最近最少使用的灰数据缓冲区写入到磁盘中,DBWn 在保持最近使用的缓冲区驻留在内存中的同时提高查找空闲缓冲区的性能。例如,将属于频繁访问的小表或索引的块保存在高速缓存中,这样就无需重新从磁盘读入它们。LRU 算法将更频繁访问的块保存在缓冲区高速缓存中,这样当有缓冲区被写入磁盘时,它就不太可能包含很快可能会有用的数据。
另外,DBWn 定期写入缓冲区以提前检查点,检查点是重做日志中的一个位置,崩溃和例程恢复将需要从此位置开始。
DeltaSumScanDepth / Seconds说明
数据源
其中:
此数据项代表此采样周期内当 DBWn 扫描 LRU 队列以寻找要写入的缓冲区时 DBWn 每秒检查的缓冲区 (干净的和灰的) 数。
数据库写入器进程 (DBWn) 将缓冲区的内容写入到数据文件中。DBWn 进程负责将数据库缓冲区高速缓存中的已修改 (灰的) 缓冲区写入到磁盘中。
当数据库缓冲区高速缓存中的缓冲区被修改时,它被标记为“灰的”。DBWn 进程的主要任务是通过将灰数据缓冲区写入到磁盘中来保持缓冲区高速缓存是“干净的”。随着用户进程使缓冲区变灰,空闲缓冲区数将减少。如果空闲缓冲区数减少到很小,必须将块从磁盘读取到高速缓存中的用户进程就找不到空闲缓冲区。DBWR 管理缓冲区高速缓存以便用户进程总是能够找到空闲缓冲区。
当 Oracle Server 进程在扫描缓冲区数阈值后找不到干净的可重用缓冲区时,它将发出信号提示 DBWn 写入。当接收到增加空闲缓冲区的此请求时,DBWn 将最近最少使用 (LRU) 的缓冲区写入到磁盘中。通过将最近最少使用的灰数据缓冲区写入到磁盘中,DBWn 在保持最近使用的缓冲区驻留在内存中的同时提高查找空闲缓冲区的性能。例如,将属于频繁访问的小表或索引的块保存在高速缓存中,这样就无需重新从磁盘读入它们。LRU 算法将更频繁访问的块保存在缓冲区高速缓存中,这样当有缓冲区被写入磁盘时,它就不太可能包含很快可能会有用的数据。
另外,DBWn 定期写入缓冲区以提前检查点,检查点是重做日志中的一个位置,崩溃和例程恢复将需要从此位置开始。
DeltaSumScanDepth / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒要求 DBWn 扫描高速缓存并写入所有为检查点标记的块的次数。
数据库写入器进程 (DBWn) 将缓冲区的内容写入到数据文件中。DBWn 进程负责将数据库缓冲区高速缓存中的已修改 (灰的) 缓冲区写入到磁盘中。
当数据库缓冲区高速缓存中的缓冲区被修改时,它被标记为“灰的”。DBWn 进程的主要任务是通过将灰数据缓冲区写入到磁盘中来保持缓冲区高速缓存是“干净的”。随着用户进程使缓冲区变灰,空闲缓冲区数将减少。如果空闲缓冲区数减少到很小,必须将块从磁盘读取到高速缓存中的用户进程就找不到空闲缓冲区。DBWR 管理缓冲区高速缓存以便用户进程总是能够找到空闲缓冲区。
当 Oracle Server 进程在扫描缓冲区数阈值后找不到干净的可重用缓冲区时,它将发出信号提示 DBWn 写入。当接收到增加空闲缓冲区的此请求时,DBWn 将最近最少使用 (LRU) 的缓冲区写入到磁盘中。通过将最近最少使用的灰数据缓冲区写入到磁盘中,DBWn 在保持最近使用的缓冲区驻留在内存中的同时提高查找空闲缓冲区的性能。例如,将属于频繁访问的小表或索引的块保存在高速缓存中,这样就无需重新从磁盘读入它们。LRU 算法将更频繁访问的块保存在缓冲区高速缓存中,这样当有缓冲区被写入磁盘时,它就不太可能包含很快可能会有用的数据。
另外,DBWn 定期写入缓冲区以提前检查点,检查点是重做日志中的一个位置,崩溃和例程恢复将需要从此位置开始。
DeltaCheckpoints / Seconds说明
数据源
其中:
当前在 SGA 中的块数
此类包括下列图表:
当前在 SGA 中的块数
块数
具有不同文件序号或块序号的块的数目
此例程的初始化参数
此类包括下列图表:
此例程的初始化参数
DB_BLOCK_BUFFERS 指定在缓冲区高速缓存中可用的数据库缓冲区数。它是导致例程上的 SGA 的内存总需求的主要参数之一。
DB_BLOCK_BUFFERS 参数与 DB_BLOCK_SIZE 参数一起确定缓冲区高速缓存的总大小。缓冲区高速缓存的有效使用可以大大减少数据库上的 I/O 负载。因为只能在第一次创建数据库时指定 DB_BLOCK_SIZE,所以请使用 DB_BLOCK_BUFFERS 来控制缓冲区高速缓存的大小。
在启用并行服务器时此参数将影响数据块被强制回应的概率:缓冲区越多,强制回应的机会就越多。
select value from v$parameter where name='db_block_buffers'
说明
数据源
BUFFER_POOL_KEEP 用来定义 KEEP 缓冲池的大小。KEEP 缓冲池用来维持缓冲区高速缓存中的对象。为 KEEP 缓冲池指定了以下两个属性:缓冲池中的缓冲区数和分配给此缓冲池的 LRU 栓锁数。
KEEP 缓冲池的目标是将对象保留在内存中,从而避免 I/O 操作。因此 KEEP 缓冲池的大小取决于您希望在缓冲区高速缓存中保存的对象。通过累加专用于此缓冲池的所有对象的大小,您就可以计算出 KEEP 缓冲池的近似大小。
要放入 KEEP 缓冲池的最佳侯选段是小于 DEFAULT 缓冲池大小的 10% 并至少引起系统中总 I/O 的 1% 的段。
select value from v$parameter where name='buffer_pool_keep'
说明
数据源
DB_BLOCK_LRU_LATCHES 指定 LRU 栓锁集数的上限。将此参数设置为一个等于所需 LRU 栓锁集数的值。Oracle Server 决定是使用此值还是基于很多内部检查而减小它。如果未设置此参数,Oracle 将为集数计算一个值。Oracle Server 计算的值通常是合适的。只有在 V$LATCH 中丢失数大于 3% 时才增大此值。
select value from v$parameter where name='db_block_lru_latches'
说明
数据源
BUFFER_POOL_RECYCLE 用来定义 RECYCLE 缓冲池的大小。RECYCLE 缓冲池用来阻止对象消耗高速缓存中的不必要的空间。为 RECYCLE 缓冲池指定了以下两个属性:缓冲池中的缓冲区数和分配给此缓冲池的 LRU 栓锁数。
RECYCLE 缓冲池的目标是一旦不再需要块就将这些块从内存中清除出去。如果应用程序以随机方式访问很大对象的块,则在超龄释放之前重用存储在缓冲池中的块的机会很小。不管缓冲池的大小是多少,这都是正确的。由于此原因,不应该将此对象的块存入高速缓存;可以将那些高速缓存缓冲区分配给其他对象。
但是,注意不要太快地将块从内存中丢弃。如果缓冲池太小,则在事务处理或 SQL 语句完成求值之前块可能从高速缓存中超龄释放。
要放入 KEEP 缓冲池的最佳侯选段是小于 DEFAULT 缓冲池大小的 10% 并至少引起系统中总 I/O 的 1% 的段。
select value from v$parameter where name='buffer_pool_recycle'
说明
数据源
LOG_BUFFER 指定重做日志缓冲区大小 (字节)重做日志缓冲区是 SGA 中的一个循环缓冲区,持有关于对数据库进行的更改的信息。此信息存储在重做条目中。重做条目包含重新构造 (或重做) 由 INSERT,UPDATE,DELETE,CREATE,ALTER 或 DROP 操作对数据库进行的更改所必需的信息。 如果有必要,重做条目将用于数据库的恢复。
一般说来,较大的 LOG_BUFFER 值会减少重做日志文件 I/O,尤其是如果事务处理较长或很多。
select value from v$parameter where name='log_buffer'
说明
数据源
CURSOR_SPACE_FOR_TIME 指定是否可以从库高速缓存中回收共享 SQL 区域以便为新的 SQL 语句腾出空间。
如果此参数的值为假,则可以从库高速缓存中回收共享 SQL 区域,不管与其 SQL 语句相关联的应用程序游标是否打开。在这种情况下,Oracle Server 必须验证包含此语句的共享 SQL 区域在库高速缓存中。
如果此参数的值为假,只有关闭所有与其语句相关联的应用程序游标才能回收共享 SQL 区域。在这种情况下,因为在与共享 SQL 区域相关联的应用程序游标打开的同时永远不会回收共享 SQL 区域,所以 Oracle Server 不需要验证共享 SQL 区域在高速缓存中。
将此参数的值设置为真将节省 Oracle Server 的少量时间并可能稍微提高执行调用的性能。
但是,如果您已经发现执行调用的库高速缓存丢失,则不应将它设置为真。这样的库高速缓丢失表明共享池不是足够大,从而难以容纳所有并发打开游标的共享 SQL 区域。如果此值为真并且共享池没有用于新 SQL 语句的空间,则不能分析此语句,Oracle Server 返回错误,声明已经没有共享内存了。如果此值为假并且没有新语句的空间,Oracle Server 将回收一个现有的共享 SQL 区域。虽然回收共享 SQL 区域以后将导致库高速缓存丢失,但是这比因不能分析 SQL 语句而引起的停止应用程序的错误更可取。
此外,如果为每个用户提供专用 SQL 区域的可用内存不足,则不要将 CURSOR_SPACE_FOR_TIME 设置为真。此值还阻止与打开游标相关联的专用 SQL 区域的回收。如果所有并发打开游标的专用 SQL 区域填满用户的可用内存以致于没有可以为新 SQL 语句分配专用 SQL 区域的空间,则不能分析此语句,Oracle Server 返回表明没有足够内存的错误。
select value from v$parameter where name='cursor_space_for_time'
说明
数据源
如果一个应用程序反复发出对同一组 SQL 语句的分析调用,则会话游标的重新打开可能影响系统性能。可以将会话游标存储在会话游标高速缓存中。此功能对于使用 Oracle Forms 设计的应用程序尤其有用,因为从一个表格切换到另一个表格会关闭与第一个表格相关联的所有会话游标。
Oracle Server 使用共享的 SQL 区域来确定是否对给定语句发出了多于三个分析请求。如果是这样,Oracle Server 将假定与此语句相关联的会话游标应该被存入高速缓存并将游标移动到会话游标高速缓存中。然后借助同一会话分析该 SQL 语句的随后请求将在会话游标高速缓存中找到游标。
要启用将会话游标存入高速缓存,请使用 SESSION_CACHED_CURSORS 来指定保存在高速缓存中的最大会话游标数。最近最少使用 (LRU) 算法在需要时删除会话游标高速缓存中的条目以便为新条目腾出空间。
要确定会话游标高速缓存对于您的例程是否足够大,您可以检查 V$SESSTAT 视图中的会话统计数据“会话游标高速缓存命中数”。此统计数据对分析调用在会话游标高速缓存中找到游标的次数进行计数。如果此统计数据是此会话的分析调用总数的较小百分比,您就应该考虑将 SESSION_CACHED_CURSORS 设置为一个较大的值。
select value from v$parameter where name='session_cached_cursors'
说明
数据源
OPEN_CURSORS 定义会话可以一次拥有的最大打开游标数。如果一个会话达到此极限,将返回 MAX OPEN CURSORS EXCEEDED 错误消息。
OPEN_CURSORS 还定义例程的 PL/SQL 游标高速缓存的大小。PL/SQL 保存从 PL/SQL 内执行的打开游标的高速缓存。如果游标仍然在高速缓存中,下次用户执行它时,就可以直接使用它。否则,必须对它进行重新分析等操作。PL/SQL 游标高速缓存的大小等于 OPEN_CURSORS 减去用户已经直接打开的游标数。 select value from v$parameter where name='open_cursors'
说明
数据源
TIMED_STATISTICS 允许定时统计数据的收集。 select value from v$parameter where name='timed_statistics'
说明
数据源
SORT_AREA_SIZE 定义排序期间用户进程可用的内存大小 (字节)。它是按用户从可用内存中分配的。
当用户执行要求排序的数据库操作时,要排序的信息被加载到用户的 PGA 内存中。当要排序的数据总量小于 SORT_AREA_SIZE 时,排序全部在内存中完成。
如果数据总量超过 SORT_AREA_SIZE,则执行磁盘排序。磁盘排序处理在排序运行中要排序的数据的 SORT_AREA_SIZE 子集。作为临时段将每次排序运行都写入到磁盘中。
select value from v$parameter where name='sort_area_size'
说明
数据源
SORT_AREA_RETAINED_SIZE 定义在最后一次排序运行完成之后 Oracle Server 将排序区域内存分配减小到的大小 (字节)保留大小参数控制用来维持内存中已排序信息部分的读取缓冲区的大小。如果进程需要执行多个并发排序,则每个排序被给予 SORT_AREA_RETAINED_SIZE 的内存分配。
在排序处理期间 Oracle Server 使用由 SORT_AREA_SIZE 确定的内存大小。一旦所有的信息都被排序并且第一次提取已经完成,如果保留大小小于排序区域大小,Oracle Server 就会将所有的排序运行合并为单个运行,并将排序内存减小到保留大小。
select value from v$parameter where name='sort_area_retained_size'
说明
数据源
所有表空间中的空闲空间概览
此类包括下列图表:
所有表空间中的空闲空间概览
此数据项代表此表空间中的数据文件数。
select count(*) from dba_data_files where tablespace_name='name'
说明
数据源
此数据项代表此表空间的总大小 (以块为单位)。
select sum(blocks) from dba_data_files where tablespace_name='name'
说明
数据源
此数据项代表此表空间的空闲空间总大小 (以块为单位)。随着表空间内的段的增长,该表空间内的空闲空间将减小。如果空闲空间变得不足,创建新段或扩展现有段的操作将失败。
select sum(blocks) from dba_free_space where tablespace_name='name'
说明
数据源
如果空闲空间不足,请通过启用其数据文件之一的自动扩展,手动调整其数据文件之一的大小,或者添加新的数据文件来增加表空间的大小。
此数据项代表此表空间的空闲空间总大小 (KB)。随着表空间内的段的增长,该表空间内的空闲空间将减小。如果空闲空间变得不足,创建新段或扩展现有段的操作将失败。
select sum(bytes)/1024 from dba_free_space where tablespace_name='name'
说明
数据源
如果空闲空间不足,请通过启用其数据文件之一的自动扩展,手动调整其数据文件之一的大小,或者添加新的数据文件来增加表空间的大小。
此数据项代表此表空间的空闲空间 (以块为单位) 百分比。随着表空间内的段的增长,该表空间内的空闲空间将减小。如果空闲空间变得不足,创建新段或扩展现有段的操作将失败。
(FreeBlocks / TotalBlocks) * 100说明
数据源
其中:
如果空闲空间不足,请通过启用其数据文件之一的自动扩展,手动调整其数据文件之一的大小,或者添加新的数据文件来增加表空间的大小。
此数据项代表此表空间中当前正在被所有用户使用的总块数。
select sum(blocks) from dba_ts_quotas where tablespace_name='name'
说明
数据源
此数据项表明此表空间的状态;例如,此表空间是联机,脱机,还是只读。
select status from dba_tablespaces where tablespace_name='name'
说明
数据源
此数据项代表此表空间中的可用扩展块数。
select count(*) from dba_free_space where tablespace_name='name'
说明
数据源
此数据项代表此表空间已使用块的总数。
(TotalBlocks - FreeBlocks)说明
数据源
其中:
显示字典高速缓存的丢失百分比。
此类包括下列图表:
显示字典高速缓存的丢失百分比。
此数据项代表字典高速缓存的效率,由请求数占尚未在内存中的字典数据的百分比来度量。确定数据字典上的丢失是否确实在影响 Oracle Server 的性能是很重要的。
共享池是 SGA 中的一个区域,它包含专用于特定例程配置的共享 SQL 请求库高速缓存、字典高速缓存和其他高速缓存结构。
数据字典高速缓存上的丢失在某些情况下是可预见的。在例程启动时,数据字典高速缓存不含有任何数据,因此发出的任何 SQL 语句都可能导致高速缓存缺失。随着更多的数据被写入到高速缓存中,高速缓存缺失的可能性应该降低。最后数据库应该达到一个“稳定状态”,在此状态下,最频繁使用的字典数据将在高速缓存中。此时几乎不会发生高速缓存丢失。要优化高速缓存,请仅在您的应用程序已经运行之后检查它的活动情况。
(Misses/Gets) * 100说明
数据源
其中:
如果丢失数百分比超过 10% 到 15%,为了减少从共享池中清除字典数据以便为新数据腾出空间的频率,请考虑增大 SHARED_POOL_SIZE。要增加高速缓存可用的内存,请增大初始化参数 SHARED_POOL_SIZE 的值。
此数据项代表此采样周期内每秒对来自数据字典对象的信息的请求总数。
DeltaGets / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒对来自导致高速缓存缺失的数据字典对象的信息的请求总数。
DeltaMisses / Seconds说明
数据源
其中:
数据字典的详细统计数据
此类包括下列图表:
数据字典的详细统计数据
此数据项代表数据字典高速缓存中的条目总数。
select count from v$rowcache
说明
数据源
此数据项代表此采样周期内每秒对来自导致高速缓存缺失的数据字典对象的信息的请求总数。
DeltaMisses / Seconds说明
数据源
其中:
此数据项代表数据字典高速缓存中包含有效数据的条目总数。
select usage from v$rowcache
说明
数据源
此数据项代表此采样周期内每秒对来自数据字典对象的信息的请求总数。
DeltaGets / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒扫描请求数。
DeltaScans / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒在高速缓存中未能找到数据的扫描请求数。
DeltaScanMisses / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒列表被完全扫描的次数。
DeltaScanCompletes / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒的插入、更新和删除数。
DeltaModifications / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒将数据清除到磁盘上的次数。
DeltaFlushes / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒的 DLM 请求数。
DeltaRequests / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒 DLM 冲突数。
DeltaConflicts / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒 DLM 释放数。
DeltaReleases / Seconds说明
数据源
其中:
当前等待事件的 SQL
此类包括下列图表:
当前等待事件的 SQL
此数据项包括当前游标的 SQL 文本的前八十个字符。
select sql_text from v$sqlarea
说明
数据源
此数据项代表物理读取数。换句话说,它的值就是由于没有被高速缓存中的缓冲区满足而导致访问磁盘数据文件的读取请求数。 select disk_reads from v$sqlarea
说明
数据源
此数据项代表高速缓存中的缓冲区满足的读取请求数。换句话说,它的值就是此语句的所有执行所读取的总块数。
select buffer_gets from v$sqlarea
说明
数据源
此数据项代表在此采样周期内每秒执行此语句的次数。
DeltaBlockGets / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒分析此语句的次数。
DeltaParseCalls / Seconds说明
数据源
其中:
此数据项代表此采样周期内此语句每秒执行的物理读取数。换句话说,它的值就是由于没有被高速缓存中的缓冲区满足而导致访问磁盘数据文件的读取请求数。
DeltaPhysicalReads / Seconds说明
数据源
其中:
此数据项代表在此采样周期内高速缓存中的缓冲区每秒满足的此语句的读取请求数。
DeltaBufferGets / Seconds说明
数据源
其中:
此数据项代表在此采样周期内为完成此语句每秒处理的总行数。
DeltaRowsProcessed / Seconds说明
数据源
其中:
此数据项代表此语句所使用的全部可共享内存的总和 (字节)。
select sharable_mem from v$sqlarea
说明
数据源
此数据项代表此语句所使用的全部永久内存的总和 (字节)。
select persistent_mem from v$sqlarea
说明
数据源
此数据项代表当前此语句所使用的全部内存的总和 (字节)。
select runtime_mem from v$sqlarea
说明
数据源
此数据项代表首先执行此语句的应用程序模块的名称。通过使用 DMBS_APPLICATION_INFO.SET_MODULE 能够可选地设置此名称。
select module from v$sqlarea
说明
数据源
此数据项代表由首先执行此语句的应用程序模块执行的操作的名称。通过使用 DMBS_APPLICATION_INFO.SET_ACTION 能够可选地设置此名称。
select action from v$sqlarea
说明
数据源
此数据项代表此采样周期内对此语句有贡献的物理读取总数百分比。
DeltaPhysicalReads / DeltaTotalReads说明
数据源
其中:
此数据项代表此采样周期内对此语句有贡献的缓冲区获取总数百分比。
DeltaBufferGets / DeltaTotalGets说明
数据源
其中:
回退段标题访问统计数据。
此类包括下列图表:
回退段标题访问统计数据。
对回退段的争用反映在对包含回退段块的缓冲区的争用上。此数据项代表访问回退段标题时无等待次数的百分比。此值应大于 99%。
回退段是记录事务处理操作的数据库的一部分,以备回退事务处理时使用。回退段用于提供读一致性、支持回退事务处理以及恢复数据库。
正确分配回退段有助于获得最佳的数据库性能。使用足够多的回退段可以跨许多段分布回退段争用并提高性能。
((DeltaGets - DeltaWaits) / DeltaGets) * 100说明
数据源
其中:
要减少对包含回退段块的缓冲区的争用,请创建额外的回退段。用于选择分配多少回退段的一般准则是,根据数据库上并发活动事务处理的数量和类型来决定。为每 10 个并发 OLTP (联机事务处理) 事务处理分配一个回退段,为每个并发批处理作业分配一个回退段。
另外,当创建回退段时,请使回退段中的区大小与 NEXT=INITIAL 处所指定的 STORAGE 参数的大小相同。
还建议您将 MINEXTENTS 参数的值设置为 20。因为在逻辑上回退段被视为区的循环队列,所以要求它们的 MINEXTENTS 值至少为 2。回退段要求分配新区的可能性取决于后续的区包含活动重做的可能性。回退段拥有的区越多,回退段要求分配区的可能性就越小,要求分配新区的情况是可以避免的。管理员应该创建带有许多区的回退段。当然存在一个收益递减点。随着区数的增加,需要扩展回退段的可能性有一个快速下降。如果超过 20 个区,则所增加的扩展回退段可能性的降低已无法与附加区的成本相比。
每个活动用户等待的事件的列表。
此类包括下列图表:
每个活动用户等待的事件的列表。
此数据项代表此采样周期内等待此事件所耗费的时间 (秒)。
DeltaWaitTime说明
数据源
其中:
此数据项代表此采样周期内等待此事件的次数。
DeltaWaits说明
数据源
其中:
此数据项代表此采样周期内此事件的超时次数。
DeltaTimeouts说明
数据源
其中:
当前连接到服务器的用户以及他们的统计数据
此类包括下列图表:
当前连接到服务器的用户以及他们的统计数据
此数据项代表此会话的分析调用 (硬和软) 总数。
select s.value from v$sesstat s, v$statname n where n.name='parse count (total)' and n.statistic#=s.statistic#
说明
数据源
此数据项代表为此会话执行 SQL 语句的调用 (用户和递归) 总数。
UserCalls + RecursiveCalls说明
数据源
其中:
此数据项代表此采样周期内会话游标高速缓存中的命中数。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此采样周期内存储于高速缓存中的游标总数。只有当 SESSION_CACHED_CURSORS 大于 0 时才增加此值。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此会话所使用的 CPU 时间百分比。
(DeltaCpuTime / DeltaTotalCpuTime) * 100说明
数据源
其中:
此数据项代表正被用于分析 (硬和软) 的此会话的 CPU 时间百分比。分析时间 CPU 可能是应用程序没有得到很好调整的明显表征。高分析时间 CPU 通常表明此应用程序可能正在花费过多的时间打开和关闭游标,或者未使用赋值变量。
(DeltaParseTime / DeltaCpuTime) * 100说明
数据源
其中:
如果正在发生过多的分析,请检查 SQL 语句。查找可以被修改以优化共享 SQL 池内存使用和避免不必要的语句重新分析的语句。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
有时为了执行用户发出的 SQL 语句,Oracle Server 必须发出其他语句。这样的语句称为递归调用或递归 SQL 语句。例如,当您向表中插入一行,而表无足够的空间容纳此行时,如果正在使用字典管理的表空间,则 Oracle Server 进行递归调用来动态分配空间。在下列情况下也会产生递归调用:
说明
此数据项代表此会话的 CPU 时间正被用于递归调用的百分比。
(DeltaRecursiveTime / DeltaCpuTime) * 100
其中:
如果在您的应用程序运行时 Oracle Server 看起来进行过多的递归调用,请确定是哪些动作引起这些递归调用。如果确定递归调用是由动态扩展引起的,则请通过分配更大的区来降低扩展的频率,或者如果您正在使用 Oracle 8.i,则请考虑利用本地管理的表空间,这样也可以降低扩展的频率。
此数据项代表查找缓冲区、提取行或索引关键字等所花费的时间百分比。通常“其他”CPU 应该代表所用总的 CPU 时间中 CPU 时间的最高百分比。
((DeltaCpuTime - (DeltaParseTime + DeltaRecursiveTime)) / DeltaCpuTime) * 100说明
数据源
其中:
通过研究具有大量 buffer_gets 和/或大量物理读取的 SQL 语句,有可能减少“其他”CPU 时间。
此数据项代表在此采样周期内每秒以CURRENT 模式获得的块数。
DeltaBlockGets / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒为块请求持续读取的次数。
DeltaBlockGets / Seconds说明
数据源
其中:
此数据项代表在此采样周期内每秒从磁盘读取的数据块数。
DeltaPhysicalReads / Seconds说明
数据源
其中:
此数据项代表此采样周期内从磁盘直接读取 (绕过缓冲区高速缓存) 的读取数百分比。例如,在高带宽、数据密集型操作 (如并行查询) 中,绕过缓冲区高速缓存的磁盘块读取使传输率达到最大,并防止驻留在缓冲区高速缓存中的共享数据块过早超龄。
DeltaDirectReads / DeltaPhysicalReads说明
数据源
其中:
此数据项代表作为更新或删除的一部分对 SGA 中的块进行更改的次数。某些更改正在生成重做日志条目,如果事务处理被提交,它们将成为对数据库的永久更改。
此统计数据是数据库总工作的粗略指示。此统计数据表明缓冲区的灰化速率。
DeltaBlockChanges / Seconds说明
数据源
其中:
此数据项代表作为更新或删除的一部分对 SGA 中的块进行更改的次数。产生大量持续更改的工作量可能消耗大量的资源。
DeltaConsistentChanges / Seconds说明
数据源
其中:
此数据项代表在此采样周期内每秒到磁盘 (与在内存中执行的排序相对) 的排序数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / Seconds说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表在此采样周期内每秒在内存中执行的排序(与在磁盘上执行的排序相对)数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaBlockGets / Seconds说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表此采样周期内平均的每秒排序行数。
DeltaSortRows / Seconds说明
数据源
其中:
此数据项代表在此采样周期内在磁盘上执行的排序数(与在内存中执行的排序数相对)百分比。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / DeltaMemorySorts说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
执行到磁盘的排序数百分比
此数据项代表此采样周期内每秒的分析数。
DeltaParseCount / Second说明
数据源
其中:
如果分析花费的时间过长,请评估 SQL 语句以确定可以修改哪些语句,以优化共享 SQL 池内存的使用并避免不必要的语句再分析。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
此数据项代表此采样周期内每秒执行的分析调用 (硬和软) 数。
DeltaParseCount / Second说明
数据源
其中:
此数据项代表此采样周期内每秒执行的分析调用 (硬和软) 数。
DeltaParseElapsedTime说明
数据源
其中:
此数据项代表用于此会话的当前 UGA 大小。
采样结束和开始时的 'select s.value from v$sesstat s, v$statname n where n.name='session uga memory' and n.statistic#=s.statistic#' 的差值
说明
数据源
此数据项代表此采样周期内每个分析的平均等待时间 (秒)。
((DeltaParseElapsedTime - DeltaParseCpuTime) / Seconds) / DeltaParseCount说明
数据源
其中:
此数据项代表此采样周期内每秒的语句执行 (用户和递归) 的次数。
DeltaExecutes / Seconds说明
数据源
其中:
回退段标题访问统计数据
此类包括下列图表:
回退段标题访问统计数据
此数据项代表此采样周期内每秒的回退段标题获取数。
DeltaGets / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒的回退段标题等待数。
DeltaWaits / Seconds说明
数据源
其中:
回退段是记录事务处理操作的数据库的一部分,以备回退事务处理时使用。回退段用于提供读一致性、支持回退事务处理以及恢复数据库。
正确分配回退段有助于获得最佳的数据库性能。使用足够多的回退段可以跨许多段分布回退段争用并提高性能。
对回退段的争用反映在对包含回退段块的缓冲区的争用上。此数据项代表访问回退段标题时无等待次数的百分比。此值应大于 99%。
((DeltaGets - DeltaWaits) / DeltaGets) * 100说明
数据源
其中:
要减少对包含回退段块的缓冲区的争用,请创建额外的回退段。用于选择分配多少回退段的一般准则是,根据数据库上并发活动事务处理的数量和类型来决定。为每 10 个并发 OLTP (联机事务处理) 事务处理分配一个回退段,为每个并发批处理作业分配一个回退段。
另外,当创建回退段时,请使回退段中的区大小与 NEXT=INITIAL 处所指定的 STORAGE 参数的大小相同。
还建议您将 MINEXTENTS 参数的值设置为 20。因为在逻辑上回退段被视为区的循环队列,所以要求它们的 MINEXTENTS 值至少为 2。回退段要求分配新区的可能性取决于后续的区包含活动重做的可能性。回退段拥有的区越多,回退段要求分配区的可能性就越小,要求分配新区的情况是可以避免的。管理员应该创建带有许多区的回退段。当然存在一个收益递减点。随着区数的增加,需要扩展回退段的可能性有一个快速下降。现在已经确定如果超过 20 个区,则所增加的扩展回退段可能性的降低已无法与附加区的成本相比。
此数据项代表活动事务处理的总数。
select xacts from v$rollstat
说明
数据源
此数据项代表此采样周期内每秒从回退段中释放区的次数。
DeltaShrinks / Seconds说明
数据源
其中:
OPTIMAL 参数指定回退段的最佳大小。应该根据系统运行的事务处理的种类小心地选择此参数的值,以避免频繁的压缩和扩展。对于执行长时间运行的事务处理或长查询的系统而言,OPTIMAL 应该比较大。对于主要执行短事务处理和短查询的系统而言,OPTIMAL 应该比较小。
假定例程具有大小相同的回退段,并且这些回退段的区的大小也差不多,则应将给定回退段的 OPTIMAL 参数设置为稍大于回退段中活动区的平均字节数。
而且应将 OPTIMAL 设置为小于 MINEXTENTS 区数所需字节数的值。
如果压缩数大于回退段使用 (获取) 总数的 1%,则压缩可能正在过于频繁地发生。在这种情况下,您可以考虑增大 OPTIMAL 设置来减少压缩所花费的时间。
此数据项代表此采样周期内事务处理每秒从回退段的一个区继续写到另一个现有的区的次数。
DeltaWraps / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒从回退段中分配区的次数。
DeltaExtents / Seconds说明
数据源
其中:
如果回退段扩展的次数大于回退段使用 (获取) 总数的 1%,则可能正在发生过多的分配。发生过多分配可能是由以下两种问题之一所导致的:
如果是区大小过小,则应该用更大的区大小重新创建回退段。如果是 OPTIMAL 的值过小,则应该变更回退段以使用更大的 OPTIMAL 值。
此数据项代表回退段的状态。回退段总是处理几种状态之一。回退段状态决定它是否可用于某个事务处理,以及 DBA 可以对其执行哪些管理过程。
说明
select status from v$rollstat
((DeltaLogReads - DeltaWaits) / DeltaLogReads) * 100说明
数据源
其中:
此数据项代表回退段的大小 (字节)。
select rssize from v$rollstat
说明
数据源
此数据项代表写入回退段的字节数。
select rssize from v$rollstat
说明
数据源
此数据项代表回退段的 OPTIMAL 大小 (字节)。OPTIMAL 参数指定回退段的最佳大小。应该根据系统运行的事务处理的种类小心地选择此参数的值,以避免频繁的压缩和扩展。对于执行长时间运行的事务处理或长查询的系统而言,OPTIMAL 应该比较大。对于主要执行短事务处理和短查询的系统而言,OPTIMAL 应该比较小。
假定例程具有大小相同的回退段,并且这些回退段的区的大小也差不多,则应将给定回退段的 OPTIMAL 参数设置为稍大于回退段中活动区的平均字节数。
而且应将 OPTIMAL 设置为小于 MINEXTENTS 区数所需字节数的值。
如果压缩数大于回退段使用 (获取) 总数的 1%,则压缩可能正在过于频繁地发生。在这种情况下,您可以考虑增大 OPTIMAL 设置来减少压缩所花费的时间。
select optsize from v$rollstat
说明
数据源
此数据项代表曾经为回退段分配的最大空间 (字节)。
select hwmsize from v$rollstat
说明
数据源
此数据项代表 Oracle 从回退段截取的空间的平均大小 (字节)。
select aveshrink from v$rollstat
说明
数据源
如果发生的压缩数较低而且压缩出的平均大小较大,则已正确设置 OPTIMAL。
如果发生的压缩数较高而且压缩出的平均大小较小,则 OPTIMAL 过小,因为正在发生过多的压缩。您应该变更回退段以增大 OPTIMAL 设置。
此数据项代表在不同时刻度量的回退段中活动区的平均字节数。
select aveactive from v$rollstat
说明
数据源
此数据项代表回退段中的区数。
select extents from v$rollstat
说明
数据源
按选定的排序统计排序的顶层会话的概要信息
此类包括下列图表:
按选定的排序统计排序的顶层会话的概要信息
此数据项既可以代表当前会话的 Oracle 用户名,也可以代表后台进程名。
select NVL(s.username, b.name) from v$session s, v$bgprocess b
说明
数据源
此数据项代表操作系统客户机用户的名称。
select osuser from v$session
说明
数据源
此数据项包含用于对显示会话进行排序的排序统计的值。
说明
数据源
此数据项代表此会话的状态。
说明
select status from v$session
此数据项代表操作系统计算机名。
select machine from v$session
说明
数据源
此数据项代表操作系统终端名。
select terminal from v$session
说明
数据源
此数据项代表客户机程序的名称。
select program from v$session
说明
数据源
此数据项代表首先执行此语句的应用程序模块的名称。通过使用 DMBS_APPLICATION_INFO.SET_MODULE 能够可选地设置此名称。
select module from v$session
说明
数据源
此数据项代表由首先执行此语句的应用程序模块执行的操作的名称。通过使用 DMBS_APPLICATION_INFO.SET_ACTION 能够可选地设置此名称。
select action from v$session
说明
数据源
此数据项代表会话序列号。此值用于唯一标识会话的对象。当会话结束并且另一个会话以相同的会话 ID 开始时,此值保证会话级的命令可以被应用到正确的会话对象上。
select serial# from v$session
说明
数据源
此数据项代表 Oracle 进程标识符。
select p.spid from v$process p, v$session s where s.paddr = p.addr
说明
数据源
此数据项代表此采样周期内此会话执行的用户提交数。当用户提交事务处理时,必须将生成的反映对数据库块更改的重做写入磁盘。提交数通常代表最接近用户事务处理率的数据。
DeltaCommits说明
数据源
其中:
此统计数据表示数据库中的工作已经完成了多少。事务处理率中的峰值不一定是坏事。如果响应时间保持在接近正常水平,这意味着您的系统可以处理更多的负载。实际上事务处理率的下降和响应时间的增加表明可能出现了问题。根据应用程序的不同,事务处理负载在一天的不同时间可能变化非常大。
此数据项代表采样周期内此会话手动发出 ROLLBACK 语句或会话事务处理过程中出现错误的次数。
DeltaRollbacks说明
数据源
其中:
此统计数据说明用户发出 ROLLBACK 语句,或者在他们的事务处理期间遇到错误的频率。应该进行进一步的调查,以确定这些回退是错误应用程序逻辑的一部分,还是由于在数据库访问时发生的错误引起的。
此数据项代表为此会话执行 SQL 语句的调用 (用户和递归) 总数。
UserCalls + RecursiveCalls说明
数据源
其中:
此数据项代表此会话的分析调用 (硬和软) 总数。
select s.value from v$sesstat s, v$statname n where n.name='parse count (total)' and n.statistic#=s.statistic#
说明
数据源
此数据项代表此采样周期内会话游标高速缓存中的命中数。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此采样周期内存储于高速缓存中的游标总数。只有当 SESSION_CACHED_CURSORS 大于 0 时才增加此值。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此会话所使用的 CPU 时间总量 (秒)。
DeltaTotalCpuTime说明
数据源
其中:
此数据项代表正被用于分析 (硬和软) 的此会话的 CPU 时间长度。分析时间 CPU 可能是应用程序没有得到很好调整的明显表征。高分析时间 CPU 通常表明此应用程序可能正在花费过多的时间打开和关闭游标,或者未使用赋值变量。
DeltaParseTime说明
数据源
其中:
如果正在发生过多的分析,请检查 SQL 语句。查找可以被修改以优化共享 SQL 池内存使用和避免不必要的语句重新分析的语句。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
有时为了执行用户发出的 SQL 语句,Oracle Server 必须发出其他语句。这样的语句称为递归调用或递归 SQL 语句。例如,当您向表中插入一行,而表无足够的空间容纳此行时,如果正在使用字典管理的表空间,则 Oracle Server 进行递归调用来动态分配空间。在下列情况下也会产生递归调用:
说明
此数据项代表此会话的 CPU 时间正被用于递归调用的长度。
DeltaRecursiveTime
其中:
如果在您的应用程序运行时 Oracle Server 看起来进行过多的递归调用,请确定是哪些动作引起这些递归调用。如果确定递归调用是由动态扩展引起的,则请通过分配更大的区来降低扩展的频率,或者如果您正在使用 Oracle 8.i,则请考虑利用本地管理的表空间,这样也可以降低扩展的频率。
此数据项代表以 CURRENT 模式获取的块数。
DeltaBlockGets说明
数据源
其中:
此数据项代表为某个块请求持续读取的次数。
DeltaConsistentGets说明
数据源
其中:
此数据项代表在此采样周期内从磁盘读取的数据块数。
DeltaPhysicalReads 说明
数据源
其中:
对 SGA 中的所有块进行的更改数,这些更改是某个更新或删除操作的一部分
数据库块应用回退段条目对此块执行持续读取的次数
具有磁盘写操作的排序数
无磁盘写操作的排序数
已排序的总行数
分析调用 (实际分析) 的总数。
分析调用 (硬和软) 的总数。
分析花费的总时间 (秒)
会话的当前 UGA 大小
此数据项代表此会话的登录时间。
select logon from v$session s
说明
数据源
此数据项代表此采样周期内对此会话有贡献的物理读取总数百分比。
DeltaPhysicalReads / DeltaTotalReads说明
数据源
其中:
此数据项代表此采样周期内对此会话有贡献的缓冲区获取总数百分比。
DeltaBufferGets / DeltaTotalGets说明
数据源
其中:
按用户的表扫描统计数据
此类包括下列图表:
按用户的表扫描统计数据
此数据项代表此采样周期内每秒的长表扫描数。如果某个表未被高速缓存而且其高水线标记大于 5 个块,则认为此表是“长型的”。
select s.value from v$sesstat s, v$statname n where n.name='table scans (long tables)' and n.statistic#=s.statistic#
说明
数据源
此数据项代表此采样周期内每秒的短表扫描数。如果某个表被高速缓存而且其高水线标记小于 5 个块,则认为表扫描是“短型的”。
select s.value from v$sesstat s, v$statname n where n.name='table scans (short tables)' and n.statistic#=s.statistic#
说明
数据源
在扫描操作期间, Oracle Server 按顺序检索每一行。此数据项代表此采样周期内每秒扫描的行数。
select s.value from v$sesstat s, v$statname n where n.name='table scan rows gotten' and n.statistic#=s.statistic#
说明
数据源
在两种情况下表中的行的数据可能太大而无法存储在单个数据块中。这将导致行碎片。
第一种情况是在行首次被插入时由于太大而无法存储在一个数据块中。在这种情况中,Oracle Server 将行的数据存储在为该段保留的数据块链中。行链接大多数情况下是由于大型行 (诸如包含数据类型为 LONG 或 LONG RAW 的列的行) 而出现的。在这些情况中如果不使用更大的 DB_BLOCK_SIZE,则行延续是不可避免的。
但第二种情况是,原先存储在一个数据块中的行被更新以致整个行的长度增加,而块的空闲空间已被完全填满。在这种情况下,Oracle 会将整个行的数据移植到一个新的数据块中 (假定整个行可以放入一个新块中)。Oracle 保持被移植行的原始行片并使其指向包含被移植行的新块。
当某个行被链接或移植以后,与此行相关联的 I/O 性能将降低,因为 Oracle 为检索此行的信息必须扫描多个块。
此数据项代表采样周期内每秒链接行的检索数。
select se.username,s.value from v$sesstat s, v$statname n, v$session se where n.name='table fetch continued row' and n.statistic#=s.statistic# and s.sid=se.sid
说明
数据源
在扫描操作期间, Oracle 按顺序检索每一行。此数据项代表此采样周期内从缓冲区高速缓存中检索的块数。
select se.username,s.value from v$sesstat s, v$statname n, v$session se where n.name='table scan blocks gotten' and n.statistic#=s.statistic# and s.sid=se.sid
说明
数据源
此数据项代表采样周期内使用 CACHE 选项对表执行的全表扫描数。CACHE 选项指定在执行全表扫描时将为表检索的块放入缓冲区高速缓存中 LRU 列表的最近最少使用的尾部。此选项对于被频繁访问的小型查找表是很有用的。
select se.username,s.value from v$sesstat s, v$statname n, v$session se where n.name='table scans (cache partitions)' and n.statistic#=s.statistic# and s.sid=se.sid
说明
数据源
此数据项代表采样周期内每秒使用直接读取从而绕过缓冲区高速缓存的全表扫描数。
select se.username,s.value from v$sesstat s, v$statname n, v$session se where n.name='table scans (direct reads)' and n.statistic#=s.statistic# and s.sid=se.sid
说明
数据源
此数据项代表采样周期内每秒具有指定的 ROWID 端点的全表扫描数。
select se.username,s.value from v$sesstat s, v$statname n, v$session se where n.name='table scans (rowid ranges)' and n.statistic#=s.statistic# and s.sid=se.sid
说明
数据源
显示有关共享池的统计数据
此类包括下列图表:
显示有关共享池的统计数据
此数据项代表共享池中可用空闲内存的大小 (MB)。
select bytes/1024/1024 from v$sgastat where name = 'free memory'
说明
数据源
此数据项代表保留列表没有空闲内存片来满足请求而需要从 LRU 列表开始刷新对象。
只有当将初始化参数 SHARED_POOL_RESERVED_SIZE 设置为有效的值时此值才有效。
select request_misses from v$shared_pool_reserved
说明
数据源
此数据项代表找不到内存来满足共享池请求的次数,也就是 ORA-4031 出现的次数。
select request_failures from v$shared_pool_reserved
说明
数据源
请求失败是共享池大小不足的非常明确的指示器。
SGA 的共享池部分包含三个主要的区域:库高速缓存、字典高速缓存和各种控制结构。共享池的总大小是由初始化参数 SHARED_POOL_SIZE 决定。
此数据项代表共享池的大小 (MB)。
如果共享池不够大,用户就会消耗额外资源来完成数据库操作。对于库高速缓存,开销将主要是用于响应 SQL 语句的额外 CPU 资源。字典高速缓存的开销将表现为额外的 I/O,因为已被从高速缓存中取代的字典引用将需要从磁盘重新提取。对用户响应时间的影响将根据为开销申请的资源是否有瓶颈而有所不同。
如果共享池过大,就会浪费在数据库环境的其他地方可以利用的内存资源。在内存已经是紧缺资源的数据库环境中,这可能导致性能下降。此外,用于共享池的附加内存将不能由系统中的其他进程使用,并且也不能用于其他高速缓存,如缓冲区高速缓存。
select value from v$parameter where name='shared_pool_size'
说明
数据源
SGA 的共享池部分包含三个主要的区域:库高速缓存、字典高速缓存和各种控制结构。
此数据项代表为对共享池内存的大型连续请求保留的共享池空间大小 (MB)。在共享池碎片强制 Oracle 搜索并释放未使用的共享池中的块来编译当前请求的情况下,此参数与 SHARED_POOL_RESERVED_MIN_ALLOC 参数一起可用来避免共享池中的性能下降。
select value from v$parameter where name='shared_pool_reserved_size'
说明
数据源
此数据项代表用于某个会话的当前 UGA 大小。
select se.username,s.value from v$sesstat s, v$statname n, v$session se where n.name='session uga memory' and n.statistic#=s.statistic# and s.sid=se.sid
说明
数据源
此数据项代表用于某个会话的 UGA 峰值大小。
select se.username,s.value from v$sesstat s, v$statname n, v$session se where n.name='session uga memory max' and n.statistic#=s.statistic# and s.sid=se.sid
说明
数据源
此数据项代表共享池保留列表的命中率。此值给出保留列表运转情况的指示并且应该在 95% 到 100% 之间。
((Requests - Misses) / Requests) * 100说明
数据源
其中:
此数据项代表 Java 池的大小 (MB)。
select value from v$parameter where name='java_pool_size'
说明
数据源
此数据项代表数据库块缓冲区的大小 (MB)。
select sum(decode(name,'db_block_buffers',bytes)) from v$sgasta
说明
数据源
此数据项代表日志缓冲区的大小 (MB)。
select sum(decode(name,'log_buffer',bytes)) from v$sgasta
说明
数据源
此数据项代表 SGA 固定部分的大小 (MB)。
select sum(decode(name,'fixed_sga',bytes)) from v$sgasta
说明
数据源
表明数据库及其对象的当前大小的统计数据
此类包括下列图表:
表明数据库及其对象的当前大小的统计数据
此数据项代表数据库的大小 (MB)。
select sum(bytes)/(1024*1024) from sys.dba_data_files where status = 'AVAILABLE'
说明
数据源
此数据项代表数据库中的表空间数。
select count(*) from sys.dba_tablespaces where status != 'OFFLINE'
说明
数据源
此数据项代表数据库中的方案数。
select count(*) from sys.user$ u where exists (select null from sys.obj$ o where o.owner# = u.user# and o.type# in (1,2,3,19,20,21,34,35,40,41))
说明
数据源
此数据项代表数据库中的数据文件数。
select count(*) from sys.dba_data_files where status = 'AVAILABLE'
说明
数据源
此数据项代表数据库中的用户数。
select count(*) from sys.dba_users
说明
数据源
此数据项代表日志缓冲区的最大容量 (MB)。
select max(bytes)/(1024*1024) from v$log
说明
数据源
当前由 Oracle 服务器和对锁或栓锁未完成的请求所持有的锁的数目
此类包括下列图表:
当前由 Oracle 服务器和对锁或栓锁未完成的请求所持有的锁的数目
持有或获取锁的会话
持有或获取锁的会话的会话序列号
入队是将数据库资源访问串行化的共享内存结构 (锁)。它们可以与会话或事务处理相关联。入队名显示在DBA_LOCKS 和 DBA_LOCK_INTERNAL 数据字典视图的 LOCK_TYPE 列中。
资源唯一标识可由同一例程中 (本地资源)或不同例程中 (全局资源) 的不同会话锁定的对象。试图锁定资源的每个会话将在资源上拥有一个入队。
注意:
入队的名称及其定义可能随发行版的不同而不同。
Oracle 入队有:
说明
V$LOCK 表中的 LOCK_TYPE 列。
确定引起锁争用的原因并尝试将其排除。虽然通过选定会话并使用终止会话的工具将其终止是激烈的,但这确实是一种终止会话的方法。如果已经确定阻塞锁不会被很快释放,则这应该用作删除它的最后一种手段。
会话按其持有锁的锁模式
进程按其请求锁的锁模式
锁定对象的名称
被锁定的当前 ROWID
对象所有者的用户名
对象的类型
锁标识符 #1 (取决于类型)
锁标识符 #2 (取决于类型)
操作系统进程 Id
处于活动、等待、已注册等状态的会话计数
此类包括下列图表:
处于活动、等待、已注册等状态的会话计数
此数据项代表当前用关联状态标记的会话编号。会话的状态可以是:
说明
select status from v$session group by status
按此例程的操作类型分类的当前事务处理数
此类包括下列图表:
按此例程的操作类型分类的当前事务处理数
此数据项代表活动会话数。
select sum(decode(command,0,0,1)) from v$session where status = 'ACTIVE'
说明
数据源
此数据项代表采样时执行的 SELECT 语句数。
select sum(decode(command,3,1,0)) from v$session where status = 'ACTIVE'
说明
数据源
此数据项代表采样时执行的 UPDATE 语句数。
select sum(decode(command,6,1,0)) from v$session where status = 'ACTIVE'
说明
数据源
此数据项代表采样时执行的 INSERT 语句数。
select sum(decode(command,2,1,0)) from v$session where status = 'ACTIVE'
说明
数据源
此数据项代表采样时执行的 DELETE 语句数。
select sum(decode(command,7,1,0)) from v$session where status = 'ACTIVE'
说明
数据源
加载容器类
加载容器类
通过分派进程和服务器连接到数据库的用户连接统计数据
通过分派进程和服务器连接到数据库的用户连接统计数据
共享服务器名
会话 id。
会话序列号
电路状态
线路当前所在的队列
已通过此线路的消息总数
已通过此线路的总字节数
分派进程统计数据
此类包括下列图表:
分派进程统计数据
分派进程状态
此分派进程是否正在接收新连接
此分派进程所处理的消息数
此分派进程所处理消息的大小 (字节)
此分派进程所拥有的线路数
空闲所占的时间 (秒)
此采样周期内忙占用的时间百分比
忙/(忙+空闲)
空闲/(忙+空闲)
等待队列上的每个响应所花费的时间 (秒)
分派进程争用统计数据
此类包括下列图表:
分派进程争用统计数据
忙/(忙+空闲)*100
队列中每一项的平均等待时间
共享服务器进程统计数据
此类包括下列图表:
共享服务器进程统计数据
服务器状态
每秒取自公用队列的请求数
空闲时间总计 (秒)
忙时间总计 (秒)
忙/(空闲+忙) * 100
当前为其服务的线路的地址
多线程服务器的统计数据
此类包括下列图表:
多线程服务器的统计数据
专用服务器的数目
共享服务器的数目
分派进程的数目
允许的最小共享服务器数
自例程启动以来某一时刻同时运行的服务器的最大数目
允许同时运行的共享服务器进程的最大数目
Oracle 所启动的共享服务器进程数
Oracle 终止的共享服务器进程数
所有服务器的平均负载
所有分派进程的平均负载
(Current shared servers/max servers * 100) how close is the current count to the maximum number of servers
高水线标记/最大服务器数 * 100 表示高水线标记与服务器数限制有多接近
用于所有例程的总最大块强制回应
用于所有例程的总最大块强制回应
最大块强制回应的总和。
按表空间的块强制回应统计数据。
按表空间的块强制回应统计数据。
每个表空间的最大块强制回应
每个例程的最大块强制回应
每个例程的最大块强制回应
每个例程的最大块强制回应
用于所有例程的文件读/写统计数据
用于所有例程的文件读/写统计数据
物理读取数/秒
要求 DBWR 进行写入的次数
每个数据文件的文件读/写统计数据
每个数据文件的文件读/写统计数据
物理读取数/秒
要求 DBWR 进行写入的次数
每个例程的文件读取/写入统计数据
每个例程的文件读取/写入统计数据
物理读取数/秒
要求 DBWR 进行写入的次数
显示所有例程的 DLM 锁定操作动作
显示所有例程的 DLM 锁定操作动作
PCM 锁初始状态:NULL;S;X;SSX
PCM 锁初始状态:NULL;S;X;SSX
执行锁操作的次数
当前会话统计数据
当前会话统计数据
会话序列号
Oracle 进程标识符
会话的状态
Oracle 用户名
此会话正在等待的锁的地址
进行中的命令 (分析的最后一条语句)
所有例程的用户数。
所有例程的用户数。
已经登录到 OPS 服务器的用户数
活动用户的数目
每个例程的用户数
每个例程的用户数
对于每个例程的已登录用户数
每个例程的活动用户数
重做栓锁统计数据
重做栓锁统计数据
完整 SQL 文本
此类包括下列图表:
完整 SQL 文本
此数据项代表完整的 SQL 文件。
select piece, sql_text from v$sqltext_with_newlines order by piece ASC
说明
数据源
并行服务器例程统计数据
并行服务器例程统计数据
用户例程注册的例程编号
宿主计算机的名称
并行服务器模式下的 YES/NO
由例程打开的重做线程
用户名
用户名
用户编号
性能概览图表
性能概览图表
由选定的排序统计度量的顶层会话的概要信息
由选定的排序统计度量的顶层会话的概要信息
此数据项既可以代表当前会话的 Oracle 用户名,也可以代表后台进程名。
select NVL(s.username, b.name) from v$session s, v$bgprocess b
说明
数据源
此数据项代表操作系统客户机用户的名称。
select osuser from v$session
说明
数据源
此数据项包含用于对显示会话进行排序的排序统计的值。
select value from v$sesstat where statistic#=:1
说明
数据源
此数据项代表此会话的状态。
说明
select status from v$session
此数据项代表操作系统计算机名。
select machine from v$session
说明
数据源
此数据项代表操作系统终端名。
select terminal from v$session
说明
数据源
此数据项代表客户机程序的名称。
select program from v$session
说明
数据源
此数据项代表首先执行此语句的应用程序模块的名称。通过使用 DMBS_APPLICATION_INFO.SET_MODULE 能够可选地设置此名称。
select module from v$session
说明
数据源
此数据项代表由首先执行此语句的应用程序模块执行的操作的名称。通过使用 DMBS_APPLICATION_INFO.SET_ACTION 能够可选地设置此名称。
select action from v$session
说明
数据源
此数据项代表会话序列号。此值用于唯一标识会话的对象。当会话结束并且另一个会话以相同的会话 ID 开始时,此值保证会话级的命令可以被应用到正确的会话对象上。
select serial# from v$session
说明
数据源
此数据项代表 Oracle 进程标识符。
select p.spid from v$process p, v$session s where s.paddr = p.addr
说明
数据源
此数据项代表此采样周期内此会话执行的用户提交数。当用户提交事务处理时,必须将生成的反映对数据库块更改的重做写入磁盘。提交数通常代表最接近用户事务处理率的数据。
DeltaCommits说明
数据源
其中:
此统计数据表示数据库中的工作已经完成了多少。事务处理率中的峰值不一定是坏事。如果响应时间保持在接近正常水平,这意味着您的系统可以处理更多的负载。实际上事务处理率的下降和响应时间的增加表明可能出现了问题。根据应用程序的不同,事务处理负载在一天的不同时间可能变化非常大。
此数据项代表采样周期内此会话手动发出 ROLLBACK 语句或会话事务处理过程中出现错误的次数。
DeltaRollbacks说明
数据源
其中:
此统计数据说明用户发出 ROLLBACK 语句,或者在他们的事务处理期间遇到错误的频率。应该进行进一步的调查,以确定这些回退是错误应用程序逻辑的一部分,还是由于在数据库访问时发生的错误引起的。
此数据项代表为此会话执行 SQL 语句的调用 (用户和递归) 总数。
UserCalls + RecursiveCalls说明
数据源
其中:
此数据项代表此会话的分析调用 (硬和软) 总数。
select s.value from v$sesstat s, v$statname n where n.name='parse count (total)' and n.statistic#=s.statistic#
说明
数据源
此数据项代表此采样周期内会话游标高速缓存中的命中数。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此采样周期内存储于高速缓存中的游标总数。只有当 SESSION_CACHED_CURSORS 大于 0 时才增加此值。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此会话所使用的 CPU 时间总量 (秒)。
DeltaTotalCpuTime说明
数据源
其中:
此数据项代表正被用于分析 (硬和软) 的此会话的 CPU 时间长度。分析时间 CPU 可能是应用程序没有得到很好调整的明显表征。高分析时间 CPU 通常表明此应用程序可能正在花费过多的时间打开和关闭游标,或者未使用赋值变量。
DeltaParseTime说明
数据源
其中:
如果正在发生过多的分析,请检查 SQL 语句。查找可以被修改以优化共享 SQL 池内存使用和避免不必要的语句重新分析的语句。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
有时为了执行用户发出的 SQL 语句,Oracle Server 必须发出其他语句。这样的语句称为递归调用或递归 SQL 语句。例如,当您向表中插入一行,而表无足够的空间容纳此行时,如果正在使用字典管理的表空间,则 Oracle Server 进行递归调用来动态分配空间。在下列情况下也会产生递归调用:
说明
此数据项代表此会话的 CPU 时间正被用于递归调用的百分比。
DeltaRecursiveTime
其中:
如果在您的应用程序运行时 Oracle Server 看起来进行过多的递归调用,请确定是哪些动作引起这些递归调用。如果确定递归调用是由动态扩展引起的,则请通过分配更大的区来降低扩展的频率,或者如果您正在使用 Oracle 8.i,则请考虑利用本地管理的表空间,这样也可以降低扩展的频率。
此数据项代表以 CURRENT 模式获取的块数。
DeltaBlockGets说明
数据源
其中:
此数据项代表为某个块请求持续读取的次数。
DeltaConsistentGets说明
数据源
其中:
此数据项代表在此采样周期内从磁盘读取的数据块数。
DeltaPhysicalReads 说明
数据源
其中:
对 SGA 中的所有块进行的更改数,这些更改是某个更新或删除操作的一部分
数据库块应用回退段条目对此块执行持续读取的次数
具有磁盘写操作的排序数
无磁盘写操作的排序数
已排序的总行数
分析调用 (实际分析) 的总数。
分析调用 (硬和软) 的总数。
分析花费的总时间 (秒)
会话的当前 UGA 大小
此数据项代表此会话的登录时间。
select logon from v$session s
说明
数据源
此数据项代表此会话所进行的逻辑读取的总数。
select s.value from v$sesstat s, v$statname n where n.name='session logical reads' and n.statistic#=s.statistic#
说明
数据源
先按单个用户后按会话分解的响应时间
此类包括下列图表:
先按单个用户后按会话分解的响应时间
此数据项代表整个例程等待资源或对象而花费的时间百分比。
TotalWait / (TotalWait + CpuTime)说明
其中:
进一步调查哪些特定的等待事件是形成大量等待时间的原因。单个等待事件可以识别数据库中的独特问题。将在适当的地方通过专用于单个等待事件的下钻定制诊断。
此数据项代表整个例程中 CPU 用于执行指令的时间的百分比。
CpuTime / (TotalWait + CpuTime)说明
数据源
其中:
当 CPU 时间是总响应时间的最大贡献者时,就需要将其分解以进一步正确理解此问题。基本上将 CPU 时间分解为 3 个类别:
通过只使用数据库中可用的统计数据,此数据项就可以给出每个事务处理的响应时间的最佳近似值 (秒)。
(DeltaTotalWait + DeltaCpuTime) / (DeltaCommits + DeltaRollbacks)说明
数据源
其中:
进一步调查哪个组件,等待时间或 CPU 时间,是形成主要响应时间的原因并继续诊断。
此数据项代表此采样周期内所执行的提交和回退的总数。
DeltaCommits + DeltaRollbacks说明
数据源
其中:
此统计数据表示数据库中的工作已经完成了多少。事务处理率中的峰值不一定是坏事。如果响应时间保持在接近正常水平,这意味着您的系统可以处理更多的负载。实际上事务处理率的下降和响应时间的增加表明可能出现了问题。根据应用程序的不同,事务处理负载在一天的不同时间可能变化非常大。
此数据项代表此采样周期内所执行的用户提交的数目。当用户提交事务处理时,必须将生成的反映对数据库块更改的重做写入磁盘。提交数通常代表最接近用户事务处理率的数据。
DeltaCommits说明
数据源
其中:
此统计数据表示数据库中的工作已经完成了多少。事务处理率中的峰值不一定是坏事。如果响应时间保持在接近正常水平,这意味着您的系统可以处理更多的负载。实际上事务处理率的下降和响应时间的增加表明可能出现了问题。根据应用程序的不同,事务处理负载在一天的不同时间可能变化非常大。
此数据项代表在此采样周期内用户手动发出 ROLLBACK 语句的次数或在用户的事务处理期间发生错误的次数。
DeltaRollbacks说明
数据源
其中:
此统计数据说明用户发出 ROLLBACK 语句,或者在他们的事务处理期间遇到错误的频率。应该进行进一步的调查,以确定这些回退是错误应用程序逻辑的一部分,还是由于在数据库访问时发生的错误引起的。
通过只使用数据库中可用的统计数据,此数据项就可以给出每个 SQL 语句执行的响应时间的最佳近似值 (秒)。此统计数据可能比每个事务处理的响应时间更有效,因为它甚至可以显示关于只读访问的准确值。
(DeltaTotalWait + DeltaCpuTime) / (DeltaUserCalls + DeltaRecursiveCalls)说明
数据源
其中:
进一步调查哪个组件,等待时间或 CPU 时间,是形成主要响应时间的原因并继续诊断。
此数据项代表在采样周期内执行 SQL 语句的调用 (用户和递归) 总数。此统计数据表示每个采样周期所处理的 SQL 语句数。
DeltaUserCalls + DeltaRecursiveCalls说明
数据源
其中:
此统计数据表示数据库中的工作已经完成了多少。执行率中的峰值不一定是坏事。如果响应时间保持在接近正常水平,这意味着您的系统可以处理更多的负载。实际上执行率的下降和响应时间的增加表明可能出现了问题。根据应用程序的不同,执行负载在一天的不同时间可能变化非常大。
显示等待文件和块的会话序号
此类包括下列图表:
显示等待文件和块的会话序号
数据文件名
块的编号
等待的类型
包含被等待块的段的名称
段的所有者
显示响应时间及其分解的类
显示响应时间及其分解的类
与等待事件及其诊断相关的类
与等待事件及其诊断相关的类
按用户分解统计数据的类
按用户分解统计数据的类
整个数据库的统计数据 (来源于 v$systat)
整个数据库的统计数据 (来源于 v$systat)
I/O 类
I/O 类
SGA 利用、各种高速缓存统计数据等
SGA 利用、各种高速缓存统计数据等
重做日志、DBWR 以及与后台进程相关的其他统计数据
重做日志、DBWR 以及与后台进程相关的其他统计数据
表空间和与存储相关的其他信息
表空间和与存储相关的其他信息
用于利用 DBMS_APPLICATION_INFO 程序包的应用程序的 SQL
此类包括下列图表:
用于利用 DBMS_APPLICATION_INFO 程序包的应用程序的 SQL
此数据项包括当前游标的 SQL 文本的前八十个字符。
select sql_text from v$sqlarea
说明
数据源
此数据项代表此采样周期内此语句执行的物理读取数。换句话说,它的值就是由于没有被高速缓存中的缓冲区满足而导致访问磁盘数据文件的读取请求数。
DeltaPhysicalReads 说明
数据源
其中:
此数据项代表在此采样周期内高速缓存中的缓冲区满足的此语句的读取请求数。
DeltaReadTime说明
数据源
其中:
此数据项代表在此采样周期内每秒执行此语句的次数。
DeltaBlockGets / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒分析此语句的次数。
DeltaParseCalls / Seconds说明
数据源
其中:
此数据项代表此采样周期内此语句每秒执行的物理读取数。换句话说,它的值就是由于没有被高速缓存中的缓冲区满足而导致访问磁盘数据文件的读取请求数。
DeltaPhysicalReads / Seconds说明
数据源
其中:
此数据项代表在此采样周期内高速缓存中的缓冲区每秒满足的此语句的读取请求数。
DeltaBufferGets / Seconds说明
数据源
其中:
此数据项代表在此采样周期内为完成此语句每秒处理的总行数。
DeltaRowsProcessed / Seconds说明
数据源
其中:
此数据项代表此语句所使用的全部可共享内存的总和 (字节)。
select sharable_mem from v$sqlarea
说明
数据源
此数据项代表此语句所使用的全部永久内存的总和 (字节)。
select persistent_mem from v$sqlarea
说明
数据源
此数据项代表当前此语句所使用的全部内存的总和 (字节)。
select runtime_mem from v$sqlarea
说明
数据源
报告使用 DBMS_APPLICATION_INFO 程序包的应用程序的数据类
此类包括下列图表:
报告使用 DBMS_APPLICATION_INFO 程序包的应用程序的数据类
此数据项代表当前正在特定模块下执行的会话数。
select count(module) from v$session where module_hash != 0
说明
数据源
高速缓存中拥有此模块集的 SQL 语句计数
当前等待特定事件的会话计数
此类包括下列图表:
当前等待特定事件的会话计数
此数据项代表当前等待此事件的会话数。
select count(*) from v$session_wait where wait_time = 0
说明
数据源
多线程服务器类
多线程服务器类
Oracle Parallel Server 类
Oracle Parallel Server 类
当前连接到服务器的主机 (节点) 及其统计数据
此类包括下列图表:
当前连接到服务器的主机 (节点) 及其统计数据
此数据项代表此会话的分析调用 (硬和软) 总数。
select s.value from v$sesstat s, v$statname n where n.name='parse count (total)' and n.statistic#=s.statistic#
说明
数据源
此数据项代表为此会话执行 SQL 语句的调用 (用户和递归) 总数。
UserCalls + RecursiveCalls说明
数据源
其中:
此数据项代表此采样周期内会话游标高速缓存中的命中数。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此采样周期内存储于高速缓存中的游标总数。只有当 SESSION_CACHED_CURSORS 大于 0 时才增加此值。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此会话所使用的 CPU 时间百分比。
(DeltaCpuTime / DeltaTotalCpuTime) * 100说明
数据源
其中:
此数据项代表正被用于分析 (硬和软) 的此会话的 CPU 时间百分比。分析时间 CPU 可能是应用程序没有得到很好调整的明显表征。高分析时间 CPU 通常表明此应用程序可能正在花费过多的时间打开和关闭游标,或者未使用赋值变量。
(DeltaParseTime / DeltaCpuTime) * 100说明
数据源
其中:
如果正在发生过多的分析,请检查 SQL 语句。查找可以被修改以优化共享 SQL 池内存使用和避免不必要的语句重新分析的语句。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
有时为了执行用户发出的 SQL 语句,Oracle Server 必须发出其他语句。这样的语句称为递归调用或递归 SQL 语句。例如,当您向表中插入一行,而表无足够的空间容纳此行时,如果正在使用字典管理的表空间,则 Oracle Server 进行递归调用来动态分配空间。在下列情况下也会产生递归调用:
说明
此数据项代表此会话的 CPU 时间正被用于递归调用的百分比。
(DeltaRecursiveTime / DeltaCpuTime) * 100
其中:
如果在您的应用程序运行时 Oracle Server 看起来进行过多的递归调用,请确定是哪些动作引起这些递归调用。如果确定递归调用是由动态扩展引起的,则请通过分配更大的区来降低扩展的频率,或者如果您正在使用 Oracle 8.i,则请考虑利用本地管理的表空间,这样也可以降低扩展的频率。
此数据项代表查找缓冲区、提取行或索引关键字等所花费的时间百分比。通常“其他”CPU 应该代表所用总的 CPU 时间中 CPU 时间的最高百分比。
((DeltaCpuTime - (DeltaParseTime + DeltaRecursiveTime)) / DeltaCpuTime) * 100说明
数据源
其中:
通过研究具有大量 buffer_gets 和/或大量物理读取的 SQL 语句,有可能减少“其他”CPU 时间。
此数据项代表在此采样周期内每秒以CURRENT 模式获得的块数。
DeltaBlockGets / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒为块请求持续读取的次数。
DeltaConsistentGets / Seconds说明
数据源
其中:
此数据项代表在此采样周期内每秒从磁盘读取的数据块数。
DeltaPhysicalReads / Seconds说明
数据源
其中:
此数据项代表此采样周期内从磁盘直接读取 (绕过缓冲区高速缓存) 的读取数百分比。例如,在高带宽、数据密集型操作 (如并行查询) 中,绕过缓冲区高速缓存的磁盘块读取使传输率达到最大,并防止驻留在缓冲区高速缓存中的共享数据块过早超龄。
DeltaDirectReads / DeltaPhysicalReads说明
数据源
其中:
此数据项代表作为更新或删除的一部分对 SGA 中的块进行更改的次数。某些更改正在生成重做日志条目,如果事务处理被提交,它们将成为对数据库的永久更改。
此统计数据是数据库总工作的粗略指示。此统计数据表明缓冲区的灰化速率。
DeltaBlockChanges / Seconds说明
数据源
其中:
此数据项代表作为更新或删除的一部分对 SGA 中的块进行更改的次数。产生大量持续更改的工作量可能消耗大量的资源。
DeltaConsistentChanges / Seconds说明
数据源
其中:
此数据项代表在此采样周期内每秒到磁盘 (与在内存中执行的排序相对) 的排序数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / Seconds说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表在此采样周期内每秒在内存中执行的排序(与在磁盘上执行的排序相对)数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / Seconds说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表此采样周期内平均的每秒排序行数。
DeltaSortRows / Seconds说明
数据源
其中:
此数据项代表在此采样周期内在磁盘上执行的排序数(与在内存中执行的排序数相对)百分比。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / DeltaMemorySorts说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
执行到磁盘的排序数百分比
此数据项代表此采样周期内每秒的硬分析数。
DeltaParseCount / Second说明
数据源
其中:
如果分析花费的时间过长,请评估 SQL 语句以确定可以修改哪些语句,以优化共享 SQL 池内存的使用并避免不必要的语句再分析。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
此数据项代表此采样周期内每秒执行的分析调用 (硬和软) 数。
DeltaParseCount / Second说明
数据源
其中:
此数据项代表此采样周期内每秒执行的分析调用 (硬和软) 数。
DeltaParseElapsedTime说明
数据源
其中:
此数据项代表用于此会话的当前 UGA 大小。
采样结束和开始时的 'select s.value from v$sesstat s, v$statname n where n.name='session uga memory' and n.statistic#=s.statistic#' 的差值
说明
数据源
此数据项代表此采样周期内每个分析的平均等待时间 (秒)。
((DeltaParseElapsedTime - DeltaParseCpuTime) / Seconds) / DeltaParseCount说明
数据源
其中:
此数据项代表此采样周期内每秒的语句执行 (用户和递归) 的次数。
DeltaExecutes / Seconds说明
数据源
其中:
当前连接到服务器的程序及其统计数据
此类包括下列图表:
当前连接到服务器的程序及其统计数据
此数据项代表此会话的分析调用 (硬和软) 总数。
select s.value from v$sesstat s, v$statname n where n.name='parse count (total)' and n.statistic#=s.statistic#
说明
数据源
此数据项代表为此会话执行 SQL 语句的调用 (用户和递归) 总数。
UserCalls + RecursiveCalls说明
数据源
其中:
此数据项代表此采样周期内会话游标高速缓存中的命中数。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此采样周期内存储于高速缓存中的游标总数。只有当 SESSION_CACHED_CURSORS 大于 0 时才增加此值。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此会话所使用的 CPU 时间百分比。
(DeltaCpuTime / DeltaTotalCpuTime) * 100说明
数据源
其中:
此数据项代表正被用于分析 (硬和软) 的此会话的 CPU 时间百分比。分析时间 CPU 可能是应用程序没有得到很好调整的明显表征。高分析时间 CPU 通常表明此应用程序可能正在花费过多的时间打开和关闭游标,或者未使用赋值变量。
(DeltaParseTime / DeltaCpuTime) * 100说明
数据源
其中:
如果正在发生过多的分析,请检查 SQL 语句。查找可以被修改以优化共享 SQL 池内存使用和避免不必要的语句重新分析的语句。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
有时为了执行用户发出的 SQL 语句,Oracle Server 必须发出其他语句。这样的语句称为递归调用或递归 SQL 语句。例如,当您向表中插入一行,而表无足够的空间容纳此行时,如果正在使用字典管理的表空间,则 Oracle Server 进行递归调用来动态分配空间。在下列情况下也会产生递归调用:
说明
此数据项代表此会话的 CPU 时间正被用于递归调用的百分比。
(DeltaRecursiveTime / DeltaCpuTime) * 100
其中:
如果在您的应用程序运行时 Oracle Server 看起来进行过多的递归调用,请确定是哪些动作引起这些递归调用。如果确定递归调用是由动态扩展引起的,则请通过分配更大的区来降低扩展的频率,或者如果您正在使用 Oracle 8.i,则请考虑利用本地管理的表空间,这样也可以降低扩展的频率。
此数据项代表查找缓冲区、提取行或索引关键字等所花费的时间百分比。通常“其他”CPU 应该代表所用总的 CPU 时间中 CPU 时间的最高百分比。
((DeltaCpuTime - (DeltaParseTime + DeltaRecursiveTime)) / DeltaCpuTime) * 100说明
数据源
其中:
通过研究具有大量 buffer_gets 和/或大量物理读取的 SQL 语句,有可能减少“其他”CPU 时间。
此数据项代表在此采样周期内每秒以CURRENT 模式获得的块数。
DeltaBlockGets / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒为块请求持续读取的次数。
DeltaConsistentGets / Seconds说明
数据源
其中:
此数据项代表在此采样周期内每秒从磁盘读取的数据块数。
DeltaPhysicalReads / Seconds说明
数据源
其中:
此数据项代表此采样周期内从磁盘直接读取 (绕过缓冲区高速缓存) 的读取数百分比。例如,在高带宽、数据密集型操作 (如并行查询) 中,绕过缓冲区高速缓存的磁盘块读取使传输率达到最大,并防止驻留在缓冲区高速缓存中的共享数据块过早超龄。
DeltaDirectReads / DeltaPhysicalReads说明
数据源
其中:
此数据项代表作为更新或删除的一部分对 SGA 中的块进行更改的次数。某些更改正在生成重做日志条目,如果事务处理被提交,它们将成为对数据库的永久更改。
此统计数据是数据库总工作的粗略指示。此统计数据表明缓冲区的灰化速率。
DeltaBlockChanges / Seconds说明
数据源
其中:
此数据项代表作为更新或删除的一部分对 SGA 中的块进行更改的次数。产生大量持续更改的工作量可能消耗大量的资源。
DeltaConsistentChanges / Seconds说明
数据源
其中:
此数据项代表在此采样周期内每秒到磁盘 (与在内存中执行的排序相对) 的排序数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / Seconds说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表在此采样周期内每秒在内存中执行的排序(与在磁盘上执行的排序相对)数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / Seconds说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表此采样周期内平均的每秒排序行数。
DeltaSortRows / Seconds说明
数据源
其中:
此数据项代表在此采样周期内在磁盘上执行的排序数(与在内存中执行的排序数相对)百分比。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / DeltaMemorySorts说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
执行到磁盘的排序数百分比
此数据项代表此采样周期内每秒的分析数。
DeltaParseCount / Second说明
数据源
其中:
如果分析花费的时间过长,请评估 SQL 语句以确定可以修改哪些语句,以优化共享 SQL 池内存的使用并避免不必要的语句再分析。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
此数据项代表此采样周期内每秒执行的分析调用 (硬和软) 数。
DeltaParseCount / Second说明
数据源
其中:
此数据项代表此采样周期内每秒执行的分析调用 (硬和软) 数。
DeltaParseElapsedTime说明
数据源
其中:
此数据项代表用于此会话的当前 UGA 大小。
采样结束和开始时的 'select s.value from v$sesstat s, v$statname n where n.name='session uga memory' and n.statistic#=s.statistic#' 的差值
说明
数据源
此数据项代表此采样周期内每个分析的平均等待时间 (秒)。
((DeltaParseElapsedTime - DeltaParseCpuTime) / Seconds) / DeltaParseCount说明
数据源
其中:
此数据项代表此采样周期内每秒的语句执行 (用户和递归) 的次数。
DeltaExecutes / Seconds说明
数据源
其中:
并行查询动作
并行查询动作
Oracle 进程标识符
操作系统进程标识符
例程 ID
此并行服务器进程所属的服务器逻辑组
此并行服务器进程所属的服务器逻辑集
服务器集所使用的并行度
用户所请求的并行度
此会话正在等待的事件名
由于 next_extent 大于可用空间而不能扩展的表
由于 next_extent 大于可用空间而不能扩展的表
表空间名
表的所有者
下一个扩展
表空间中最大的空闲块的大小
用于主机的会话统计数据
此类包括下列图表:
用于主机的会话统计数据
此数据项代表此会话的分析调用 (硬和软) 总数。
select s.value from v$sesstat s, v$statname n where n.name='parse count (total)' and n.statistic#=s.statistic#
说明
数据源
此数据项代表为此会话执行 SQL 语句的调用 (用户和递归) 总数。
UserCalls + RecursiveCalls说明
数据源
其中:
此数据项代表此采样周期内会话游标高速缓存中的命中数。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此采样周期内存储于高速缓存中的游标总数。只有当 SESSION_CACHED_CURSORS 大于 0 时才增加此值。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此会话所使用的 CPU 时间百分比。
(DeltaCpuTime / DeltaTotalCpuTime) * 100说明
数据源
其中:
此数据项代表正被用于分析 (硬和软) 的此会话的 CPU 时间百分比。分析时间 CPU 可能是应用程序没有得到很好调整的明显表征。高分析时间 CPU 通常表明此应用程序可能正在花费过多的时间打开和关闭游标,或者未使用赋值变量。
(DeltaParseTime / DeltaCpuTime) * 100说明
数据源
其中:
如果正在发生过多的分析,请检查 SQL 语句。查找可以被修改以优化共享 SQL 池内存使用和避免不必要的语句重新分析的语句。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
有时为了执行用户发出的 SQL 语句,Oracle Server 必须发出其他语句。这样的语句称为递归调用或递归 SQL 语句。例如,当您向表中插入一行,而表无足够的空间容纳此行时,如果正在使用字典管理的表空间,则 Oracle Server 进行递归调用来动态分配空间。在下列情况下也会产生递归调用:
说明
此数据项代表此会话的 CPU 时间正被用于递归调用的百分比。
(DeltaRecursiveTime / DeltaCpuTime) * 100
其中:
如果在您的应用程序运行时 Oracle Server 看起来进行过多的递归调用,请确定是哪些动作引起这些递归调用。如果确定递归调用是由动态扩展引起的,则请通过分配更大的区来降低扩展的频率,或者如果您正在使用 Oracle 8.i,则请考虑利用本地管理的表空间,这样也可以降低扩展的频率。
此数据项代表查找缓冲区、提取行或索引关键字等所花费的时间百分比。通常“其他”CPU 应该代表所用总的 CPU 时间中 CPU 时间的最高百分比。
((DeltaCpuTime - (DeltaParseTime + DeltaRecursiveTime)) / DeltaCpuTime) * 100说明
数据源
其中:
通过研究具有大量 buffer_gets 和/或大量物理读取的 SQL 语句,有可能减少“其他”CPU 时间。
此数据项代表在此采样周期内每秒以CURRENT 模式获得的块数。
DeltaBlockGets / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒为块请求持续读取的次数。
DeltaConsistentGets / Seconds说明
数据源
其中:
此数据项代表在此采样周期内每秒从磁盘读取的数据块数。
DeltaPhysicalReads / Seconds说明
数据源
其中:
此数据项代表此采样周期内从磁盘直接读取 (绕过缓冲区高速缓存) 的读取数百分比。例如,在高带宽、数据密集型操作 (如并行查询) 中,绕过缓冲区高速缓存的磁盘块读取使传输率达到最大,并防止驻留在缓冲区高速缓存中的共享数据块过早超龄。
DeltaDirectReads / DeltaPhysicalReads说明
数据源
其中:
此数据项代表作为更新或删除的一部分对 SGA 中的块进行更改的次数。某些更改正在生成重做日志条目,如果事务处理被提交,它们将成为对数据库的永久更改。
此统计数据是数据库总工作的粗略指示。此统计数据表明缓冲区的灰化速率。
DeltaBlockChanges / Seconds说明
数据源
其中:
此数据项代表作为更新或删除的一部分对 SGA 中的块进行更改的次数。产生大量持续更改的工作量可能消耗大量的资源。
DeltaConsistentChanges / Seconds说明
数据源
其中:
此数据项代表在此采样周期内每秒到磁盘 (与在内存中执行的排序相对) 的排序数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / Seconds说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表在此采样周期内每秒在内存中执行的排序(与在磁盘上执行的排序相对)数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / Seconds说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表此采样周期内平均的每秒排序行数。
DeltaSortRows / Seconds说明
数据源
其中:
此数据项代表在此采样周期内在磁盘上执行的排序数(与在内存中执行的排序数相对)百分比。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / DeltaMemorySorts说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
执行到磁盘的排序数百分比
此数据项代表此采样周期内每秒的分析数。
DeltaParseCount / Second说明
数据源
其中:
如果分析花费的时间过长,请评估 SQL 语句以确定可以修改哪些语句,以优化共享 SQL 池内存的使用并避免不必要的语句再分析。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
此数据项代表此采样周期内每秒执行的分析调用 (硬和软) 数。
DeltaParseCount / Second说明
数据源
其中:
此数据项代表此采样周期内每秒执行的分析调用 (硬和软) 数。
DeltaParseElapsedTime说明
数据源
其中:
此数据项代表用于此会话的当前 UGA 大小。
采样结束和开始时的 'select s.value from v$sesstat s, v$statname n where n.name='session uga memory' and n.statistic#=s.statistic#' 的差值
说明
数据源
此数据项代表此采样周期内每个分析的平均等待时间 (秒)。
((DeltaParseElapsedTime - DeltaParseCpuTime) / Seconds) / DeltaParseCount说明
数据源
其中:
此数据项代表此采样周期内每秒的语句执行 (用户和递归) 的次数。
DeltaExecutes / Seconds说明
数据源
其中:
会话序列号
用于程序的会话统计数据
此类包括下列图表:
用于程序的会话统计数据
此数据项代表此会话的分析调用 (硬和软) 总数。
select s.value from v$sesstat s, v$statname n where n.name='parse count (total)' and n.statistic#=s.statistic#
说明
数据源
此数据项代表为此会话执行 SQL 语句的调用 (用户和递归) 总数。
UserCalls + RecursiveCalls说明
数据源
其中:
此数据项代表此采样周期内会话游标高速缓存中的命中数。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此采样周期内存储于高速缓存中的游标总数。只有当 SESSION_CACHED_CURSORS 大于 0 时才增加此值。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此会话所使用的 CPU 时间百分比。
(DeltaCpuTime / DeltaTotalCpuTime) * 100说明
数据源
其中:
此数据项代表正被用于分析 (硬和软) 的此会话的 CPU 时间百分比。分析时间 CPU 可能是应用程序没有得到很好调整的明显表征。高分析时间 CPU 通常表明此应用程序可能正在花费过多的时间打开和关闭游标,或者未使用赋值变量。
(DeltaParseTime / DeltaCpuTime) * 100说明
数据源
其中:
如果正在发生过多的分析,请检查 SQL 语句。查找可以被修改以优化共享 SQL 池内存使用和避免不必要的语句重新分析的语句。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
有时为了执行用户发出的 SQL 语句,Oracle Server 必须发出其他语句。这样的语句称为递归调用或递归 SQL 语句。例如,当您向表中插入一行,而表无足够的空间容纳此行时,如果正在使用字典管理的表空间,则 Oracle Server 进行递归调用来动态分配空间。在下列情况下也会产生递归调用:
说明
此数据项代表此会话的 CPU 时间正被用于递归调用的百分比。
(DeltaRecursiveTime / DeltaCpuTime) * 100
其中:
如果在您的应用程序运行时 Oracle Server 看起来进行过多的递归调用,请确定是哪些动作引起这些递归调用。如果确定递归调用是由动态扩展引起的,则请通过分配更大的区来降低扩展的频率,或者如果您正在使用 Oracle 8.i,则请考虑利用本地管理的表空间,这样也可以降低扩展的频率。
此数据项代表查找缓冲区、提取行或索引关键字等所花费的时间百分比。通常“其他”CPU 应该代表所用总的 CPU 时间中 CPU 时间的最高百分比。
((DeltaCpuTime - (DeltaParseTime + DeltaRecursiveTime)) / DeltaCpuTime) * 100说明
数据源
其中:
通过研究具有大量 buffer_gets 和/或大量物理读取的 SQL 语句,有可能减少“其他”CPU 时间。
此数据项代表在此采样周期内每秒以CURRENT 模式获得的块数。
DeltaBlockGets / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒为块请求持续读取的次数。
DeltaConsistentGets / Seconds说明
数据源
其中:
此数据项代表在此采样周期内每秒从磁盘读取的数据块数。
DeltaPhysicalReads / Seconds说明
数据源
其中:
此数据项代表此采样周期内从磁盘直接读取 (绕过缓冲区高速缓存) 的读取数百分比。例如,在高带宽、数据密集型操作 (如并行查询) 中,绕过缓冲区高速缓存的磁盘块读取使传输率达到最大,并防止驻留在缓冲区高速缓存中的共享数据块过早超龄。
DeltaDirectReads / DeltaPhysicalReads说明
数据源
其中:
此数据项代表作为更新或删除的一部分对 SGA 中的块进行更改的次数。某些更改正在生成重做日志条目,如果事务处理被提交,它们将成为对数据库的永久更改。
此统计数据是数据库总工作的粗略指示。此统计数据表明缓冲区的灰化速率。
DeltaBlockChanges / Seconds说明
数据源
其中:
此数据项代表作为更新或删除的一部分对 SGA 中的块进行更改的次数。产生大量持续更改的工作量可能消耗大量的资源。
DeltaConsistentChanges / Seconds说明
数据源
其中:
此数据项代表在此采样周期内每秒到磁盘 (与在内存中执行的排序相对) 的排序数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / Seconds说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表在此采样周期内每秒在内存中执行的排序(与在磁盘上执行的排序相对)数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / Seconds说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表此采样周期内平均的每秒排序行数。
DeltaSortRows / Seconds说明
数据源
其中:
此数据项代表在此采样周期内在磁盘上执行的排序数(与在内存中执行的排序数相对)百分比。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / DeltaMemorySorts说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
执行到磁盘的排序数百分比
此数据项代表此采样周期内每秒的分析数。
DeltaParseCount / Second说明
数据源
其中:
如果分析花费的时间过长,请评估 SQL 语句以确定可以修改哪些语句,以优化共享 SQL 池内存的使用并避免不必要的语句再分析。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
此数据项代表此采样周期内每秒执行的分析调用 (硬和软) 数。
DeltaParseCount / Second说明
数据源
其中:
此数据项代表此采样周期内每秒执行的分析调用 (硬和软) 数。
DeltaParseElapsedTime说明
数据源
其中:
此数据项代表用于此会话的当前 UGA 大小。
采样结束和开始时的 'select s.value from v$sesstat s, v$statname n where n.name='session uga memory' and n.statistic#=s.statistic#' 的差值
说明
数据源
此数据项代表此采样周期内每个分析的平均等待时间 (秒)。
((DeltaParseElapsedTime - DeltaParseCpuTime) / Seconds) / DeltaParseCount说明
数据源
其中:
此数据项代表此采样周期内每秒的语句执行 (用户和递归) 的次数。
DeltaExecutes / Seconds说明
数据源
其中:
会话序列号
用于用户的会话统计数据
此类包括下列图表:
用于用户的会话统计数据
此数据项代表此会话的分析调用 (硬和软) 总数。
select s.value from v$sesstat s, v$statname n where n.name='parse count (total)' and n.statistic#=s.statistic#
说明
数据源
此数据项代表为此会话执行 SQL 语句的调用 (用户和递归) 总数。
UserCalls + RecursiveCalls说明
数据源
其中:
此数据项代表此采样周期内会话游标高速缓存中的命中数。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此采样周期内存储于高速缓存中的游标总数。只有当 SESSION_CACHED_CURSORS 大于 0 时才增加此值。
DeltaCursorCacheHits说明
数据源
其中:
此数据项代表此会话所使用的 CPU 时间百分比。
(DeltaCpuTime / DeltaTotalCpuTime) * 100说明
数据源
其中:
此数据项代表正被用于分析 (硬和软) 的此会话的 CPU 时间百分比。分析时间 CPU 可能是应用程序没有得到很好调整的明显表征。高分析时间 CPU 通常表明此应用程序可能正在花费过多的时间打开和关闭游标,或者未使用赋值变量。
(DeltaParseTime / DeltaCpuTime) * 100说明
数据源
其中:
如果正在发生过多的分析,请检查 SQL 语句。查找可以被修改以优化共享 SQL 池内存使用和避免不必要的语句重新分析的语句。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
有时为了执行用户发出的 SQL 语句,Oracle Server 必须发出其他语句。这样的语句称为递归调用或递归 SQL 语句。例如,当您向表中插入一行,而表无足够的空间容纳此行时,如果正在使用字典管理的表空间,则 Oracle Server 进行递归调用来动态分配空间。在下列情况下也会产生递归调用:
说明
此数据项代表此会话的 CPU 时间正被用于递归调用的百分比。
(DeltaRecursiveTime / DeltaCpuTime) * 100
其中:
如果在您的应用程序运行时 Oracle Server 看起来进行过多的递归调用,请确定是哪些动作引起这些递归调用。如果确定递归调用是由动态扩展引起的,则请通过分配更大的区来降低扩展的频率,或者如果您正在使用 Oracle 8.i,则请考虑利用本地管理的表空间,这样也可以降低扩展的频率。
此数据项代表查找缓冲区、提取行或索引关键字等所花费的时间百分比。通常“其他”CPU 应该代表所用总的 CPU 时间中 CPU 时间的最高百分比。
((DeltaCpuTime - (DeltaParseTime + DeltaRecursiveTime)) / DeltaCpuTime) * 100说明
数据源
其中:
通过研究具有大量 buffer_gets 和/或大量物理读取的 SQL 语句,有可能减少“其他”CPU 时间。
此数据项代表在此采样周期内每秒以CURRENT 模式获得的块数。
DeltaBlockGets / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒为块请求持续读取的次数。
DeltaConsistentGets / Seconds说明
数据源
其中:
此数据项代表在此采样周期内每秒从磁盘读取的数据块数。
DeltaPhysicalReads / Seconds说明
数据源
其中:
此数据项代表此采样周期内从磁盘直接读取 (绕过缓冲区高速缓存) 的读取数百分比。例如,在高带宽、数据密集型操作 (如并行查询) 中,绕过缓冲区高速缓存的磁盘块读取使传输率达到最大,并防止驻留在缓冲区高速缓存中的共享数据块过早超龄。
DeltaDirectReads / DeltaPhysicalReads说明
数据源
其中:
此数据项代表作为更新或删除的一部分对 SGA 中的块进行更改的次数。某些更改正在生成重做日志条目,如果事务处理被提交,它们将成为对数据库的永久更改。
此统计数据是数据库总工作的粗略指示。此统计数据表明缓冲区的灰化速率。
DeltaBlockChanges / Seconds说明
数据源
其中:
此数据项代表作为更新或删除的一部分对 SGA 中的块进行更改的次数。产生大量持续更改的工作量可能消耗大量的资源。
DeltaConsistentChanges / Seconds说明
数据源
其中:
此数据项代表在此采样周期内每秒到磁盘 (与在内存中执行的排序相对) 的排序数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / Seconds说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表在此采样周期内每秒在内存中执行的排序(与在磁盘上执行的排序相对)数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / Seconds说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表此采样周期内平均的每秒排序行数。
DeltaSortRows / Seconds说明
数据源
其中:
此数据项代表在此采样周期内在磁盘上执行的排序数(与在内存中执行的排序数相对)百分比。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / DeltaMemorySorts说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
执行到磁盘的排序数百分比
此数据项代表此采样周期内每秒的分析数。
DeltaParseCount / Second说明
数据源
其中:
如果分析花费的时间过长,请评估 SQL 语句以确定可以修改哪些语句,以优化共享 SQL 池内存的使用并避免不必要的语句再分析。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
此数据项代表此采样周期内每秒执行的分析调用 (硬和软) 数。
DeltaParseCount / Second说明
数据源
其中:
此数据项代表此采样周期内每秒执行的分析调用 (硬和软) 数。
DeltaParseElapsedTime说明
数据源
其中:
此数据项代表用于此会话的当前 UGA 大小。
采样结束和开始时的 'select s.value from v$sesstat s, v$statname n where n.name='session uga memory' and n.statistic#=s.statistic#' 的差值
说明
数据源
此数据项代表此采样周期内每个分析的平均等待时间 (秒)。
((DeltaParseElapsedTime - DeltaParseCpuTime) / Seconds) / DeltaParseCount说明
数据源
其中:
此数据项代表此采样周期内每秒的语句执行 (用户和递归) 的次数。
DeltaExecutes / Seconds说明
数据源
其中:
会话序列号
SQL 视图使用情况
SQL 视图使用情况
此数据项代表用于视图的文本。
select text from dba_views
说明
数据源
列出正由 SQL 语句使用的表
此类包括下列图表:
列出正由 SQL 语句使用的表
此数据项代表最近一次分析此表的日期。
select analyzetime from sys.tab$
说明
数据源
因为基于成本的优化程序依赖于统计数据,所以保证这些统计数据有效是非常重要的。如果表的大小和数据分布频繁变化,则应该定期生成这些统计数据以保证它们的准确性。基于成本的优化程序统计数据可以通过使用 ANALYZE 命令或 DBMS_STATS 程序包生成。
当您生成某个表的统计数据时,如果字典已经包含此分析对象的统计数据,则 Oracle 将更新现有的统计数据。Oracle 同时使访问此分析对象的任何当前分析 SQL 语句无效。
下次当这种语句执行时,优化程序就会自动选择基于新统计数据的新执行计划。
此数据项代表在基于成本的优化程序统计数据生成期间返回的行数。
因为基于成本的优化程序依赖于统计数据,所以保证这些统计数据有效是非常重要的。如果表的大小和数据分布频繁变化,则应该定期生成这些统计数据以保证它们的准确性。基于成本的优化程序统计数据可以通过使用 ANALYZE 命令或 DBMS_STATS 程序包生成。
出于对计算统计数据所需的时间和空间的考虑,在许多情况下可能使用估计而不使用计算。
select rowcnt from sys.tab$
说明
数据源
此数据项代表被链接或移植的行的百分比。
select (chncnt/rowcnt)*100 from sys.tab$
说明
数据源
在两种情况下表中的行的数据可能太大而无法存储在单个数据块中。这将导致行碎片。
第一种情况是在行首次被插入时由于太大而无法存储在一个数据块中。在这种情况中,Oracle Server 将行的数据存储在为该段保留的数据块链中。行链接大多数情况下是由于大型行 (诸如包含数据类型为 LONG 或 LONG RAW 的列的行) 而出现的。在这些情况中如果不使用更大的 DB_BLOCK_SIZE,则行链接是不可避免的。
但第二种情况是,原先存储在一个数据块中的行被更新以致整个行的长度增加,而块的空闲空间已被完全填满。在这种情况下,Oracle 会将整个行的数据移植到一个新的数据块中 (假定整个行可以放入一个新块中)。Oracle 保持被移植行的原始行片并使其指向包含被移植行的新块。
当某个行被延续或移植以后,与此行相关联的 I/O 性能将降低,因为 Oracle 为检索此行的信息必须扫描多个块。
可以通过使用分析列表链接行命令来标识移植行或链接行。此命令收集有关每个移植行和链接行的信息并将此信息保存在一个指定的输出表 (例如,CHAINED_ROWS) 中。所收集的信息包括任何移植行和链接行的头部行标识。一旦标识此信息以后,就可以按照下列步骤集中精力减少移植行和链接行,而不是重建整个表:消除行碎片比适当的预防代价更昂贵。通常,通过正确设置表的 pctfree 值可以将行移植问题减至最少。将 pctfree 设置得较高可以会浪费一定的空间,但这将在不同程度上保证不会发生行移植,过于保守可能导致过多的行移植并降低性能。Oracle 建议宁可在将 pctfree 设置为高值上犯错误,也不在将其设置为低值上犯错误,因为大多数情况下这可能只有大约 5% 的差别。对于没有变宽列和/或不会更新的表,则可以安全忽略此参数或将其设置为较低的值。
如果链接行和/或移植行的百分比大于 5% 而且最大的行长度小于数据库块的大小,则请考虑增大当前的 pctfree 设置以减少将来不得不对行进行移植的可能性。
访问此表的 SQL 语句
此类包括下列图表:
访问此表的 SQL 语句
此数据项包括当前游标的 SQL 文本的前八十个字符。
select sql_text from v$sqlarea
说明
数据源
此数据项代表物理读取数。换句话说,它的值就是由于没有被高速缓存中的缓冲区满足而导致访问磁盘数据文件的读取请求数。 select disk_reads from v$sqlarea
说明
数据源
此数据项代表高速缓存中的缓冲区满足的读取请求数。换句话说,它的值就是此语句的所有执行所读取的总块数。
select buffer_gets from v$sqlarea
说明
数据源
此数据项代表在此采样周期内每秒执行此语句的次数。
DeltaBlockGets / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒分析此语句的次数。
DeltaParseCalls / Seconds说明
数据源
其中:
此数据项代表此采样周期内此语句每秒执行的物理读取数。换句话说,它的值就是由于没有被高速缓存中的缓冲区满足而导致访问磁盘数据文件的读取请求数。
DeltaPhysicalReads / Seconds说明
数据源
其中:
此数据项代表在此采样周期内高速缓存中的缓冲区每秒满足的此语句的读取请求数。
DeltaBufferGets / Seconds说明
数据源
其中:
此数据项代表在此采样周期内为完成此语句每秒处理的总行数。
DeltaRowsProcessed / Seconds说明
数据源
其中:
此数据项代表此语句所使用的全部可共享内存的总和 (字节)。
select sharable_mem from v$sqlarea
说明
数据源
此数据项代表此语句所使用的全部永久内存的总和 (字节)。
select persistent_mem from v$sqlarea
说明
数据源
此数据项代表当前此语句所使用的全部内存的总和 (字节)。
select runtime_mem from v$sqlarea
说明
数据源
此数据项代表首先执行此语句的应用程序模块的名称。通过使用 DMBS_APPLICATION_INFO.SET_MODULE 能够可选地设置此名称。
select module from v$sqlarea
说明
数据源
此数据项代表由首先执行此语句的应用程序模块执行的操作的名称。通过使用 DMBS_APPLICATION_INFO.SET_ACTION 能够可选地设置此名称。
select action from v$sqlarea
说明
数据源
此数据项代表此采样周期内对此语句有贡献的物理读取总数百分比。
DeltaPhysicalReads / DeltaTotalReads说明
数据源
其中:
此数据项代表此采样周期内对此语句有贡献的缓冲区获取总数百分比。
DeltaBufferGets / DeltaTotalGets说明
数据源
其中:
当前会话正在执行的 SQL 语句
此类包括下列图表:
当前会话正在执行的 SQL 语句
此数据项包括当前游标的 SQL 文本的前八十个字符。
select sql_text from v$sqlarea
说明
数据源
此数据项代表物理读取数。换句话说,它的值就是由于没有被高速缓存中的缓冲区满足而导致访问磁盘数据文件的读取请求数。 select disk_reads/greatest(executions,1) from v$sqlarea
说明
数据源
此数据项代表高速缓存中的缓冲区满足的读取请求数。换句话说,它的值就是此语句的所有执行所读取的总块数。
select buffer_gets/greatest(executions,1) from v$sqlarea
说明
数据源
此数据项代表在此采样周期内每秒执行此语句的次数。
DeltaBlockGets / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒分析此语句的次数。
DeltaParseCalls / Seconds说明
数据源
其中:
此数据项代表此采样周期内此语句每秒执行的物理读取数。换句话说,它的值就是由于没有被高速缓存中的缓冲区满足而导致访问磁盘数据文件的读取请求数。
DeltaPhysicalReads / Seconds说明
数据源
其中:
此数据项代表在此采样周期内高速缓存中的缓冲区每秒满足的此语句的读取请求数。
DeltaBufferGets / Seconds说明
数据源
其中:
此数据项代表在此采样周期内为完成此语句每秒处理的总行数。
DeltaRowsProcessed / Seconds说明
数据源
其中:
此数据项代表此语句所使用的全部可共享内存的总和 (字节)。
select sharable_mem from v$sqlarea
说明
数据源
此数据项代表此语句所使用的全部永久内存的总和 (字节)。
select persistent_mem from v$sqlarea
说明
数据源
此数据项代表当前此语句所使用的全部内存的总和 (字节)。
select runtime_mem from v$sqlarea
说明
数据源
此数据项代表首先执行此语句的应用程序模块的名称。通过使用 DMBS_APPLICATION_INFO.SET_MODULE 能够可选地设置此名称。
select module from v$sqlarea
说明
数据源
此数据项代表由首先执行此语句的应用程序模块执行的操作的名称。通过使用 DMBS_APPLICATION_INFO.SET_ACTION 能够可选地设置此名称。
select action from v$sqlarea
说明
数据源
此数据项代表此采样周期内对此语句有贡献的物理读取总数百分比。
DeltaPhysicalReads / DeltaTotalReads说明
数据源
其中:
此数据项代表此采样周期内对此语句有贡献的缓冲区获取总数百分比。
DeltaBufferGets / DeltaTotalGets说明
数据源
其中:
此类列出在高速缓存中找到的前 50 个字符相同的 SQL 语句
此类包括下列图表:
此类列出在高速缓存中找到的前 50 个字符相同的 SQL 语句
此数据项代表在共享 SQL 区域中找到类似 SQL 段的次数。
select count(*) from v$sql说明
数据源
group by substr(sql_text,1,50) having count(*) > 5
检查可以被修改以优化共享 SQL 池内存使用和避免不必要的语句重新分析的 SQL 语句。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
看起来几乎相同的 SQL 语句
此类包括下列图表:
看起来几乎相同的 SQL 语句
此数据项包括当前游标的 SQL 文本的前八十个字符。
select sql_text from v$sqlarea
说明
数据源
此数据项代表物理读取数。换句话说,就是由于没有被高速缓存中的缓冲区满足而导致访问磁盘数据文件的读取请求数。 select disk_reads/greatest(executions,1) from v$sqlarea
说明
数据源
此数据项代表高速缓存中的缓冲区满足的读取请求数。换句话说,它的值就是此语句的所有执行所读取的总块数。
select buffer_gets/greatest(executions,1) from v$sqlarea
说明
数据源
此数据项代表在此采样周期内每秒执行此语句的次数。
DeltaBlockGets / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒分析此语句的次数。
DeltaParseCalls / Seconds说明
数据源
其中:
此数据项代表此采样周期内此语句每秒执行的物理读取数。换句话说,它的值就是由于没有被高速缓存中的缓冲区满足而导致访问磁盘数据文件的读取请求数。
DeltaPhysicalReads / Seconds说明
数据源
其中:
此数据项代表在此采样周期内高速缓存中的缓冲区每秒满足的此语句的读取请求数。
DeltaBufferGets / Seconds说明
数据源
其中:
此数据项代表在此采样周期内为完成此语句每秒处理的总行数。
DeltaRowsProcessed / Seconds说明
数据源
其中:
此数据项代表此语句所使用的全部可共享内存的总和 (字节)。
select sharable_mem from v$sqlarea
说明
数据源
此数据项代表此语句所使用的全部永久内存的总和 (字节)。
select persistent_mem from v$sqlarea
说明
数据源
此数据项代表当前此语句所使用的全部内存的总和 (字节)。
select runtime_mem from v$sqlarea
说明
数据源
此数据项代表首先执行此语句的应用程序模块的名称。通过使用 DMBS_APPLICATION_INFO.SET_MODULE 能够可选地设置此名称。
select module from v$sqlarea
说明
数据源
此数据项代表由首先执行此语句的应用程序模块执行的操作的名称。通过使用 DMBS_APPLICATION_INFO.SET_ACTION 能够可选地设置此名称。
select action from v$sqlarea
说明
数据源
此数据项代表此采样周期内对此语句有贡献的物理读取总数百分比。
DeltaPhysicalReads / DeltaTotalReads说明
数据源
其中:
此数据项代表此采样周期内对此语句有贡献的缓冲区获取总数百分比。
DeltaBufferGets / DeltaTotalGets说明
数据源
其中:
每秒为整个例程汇总的统计数据
此类包括下列图表:
每秒为整个例程汇总的统计数据
此数据项代表此采样周期内为查找可重用的缓冲区每秒从 LRU 队列的尾部跳过的缓冲区数。此统计值与“检查到的灰缓冲区数”的差值是不能被使用的缓冲区的数目,因为这些缓冲区正忙、需要在快速超龄释放以后被写入,或者它们有用户、等待者,或者正被读取/写入。
DeltaFreeBuffersInspected / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒请求可重用缓冲区或空闲缓冲区以创建或加载块的次数计数。
DeltaFreeBuffersRequested / Seconds说明
数据源
其中:
此数据项代表此采样周期内当前台查找要重用的缓冲区时每秒所找到的灰数据缓冲区的数目。
DeltaFreeBuffersRequested / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒执行的分析调用 (硬和软) 总数。
DeltaParses / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒的硬分析数。
DeltaParses / Seconds说明
数据源
其中:
如果分析花费的时间过长,请评估 SQL 语句以确定可以修改哪些语句,以优化共享 SQL 池内存的使用并避免不必要的语句再分析。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
此数据项代表此采样周期内每秒的语句执行 (用户和递归) 的次数。
DeltaExecutes / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒存储到高速缓存中的游标总数。只有当 SESSION_CACHED_CURSORS 大于 0 时才增加此值。
DeltaCursorCacheCount / Seconds说明
数据源
其中:
此数据项代表采样周期内会话游标高速缓存中每秒的命中数计数。命中意味着 SQL 语句未被重新分析。通过从“分析计数 (总计)”中减去此值就可以确定所发生的实际分析数。
DeltaCursorCacheHits / Seconds说明
数据源
其中:
此数据项代表采样周期内每秒为块请求持续读取的次数。
DeltaConsistentGets / Seconds说明
数据源
其中:
此数项代表在采样周期内当客户机检查所需的缓冲区以确定它是否已被连接时此缓冲区每秒已被客户机连接的次数。
DeltaPinned / Seconds说明
数据源
where:
此数据项代表采样周期内当客户机检查缓冲区以确定它是否已被连接时此缓冲区每秒尚未被客户机连接的次数。
DeltaNotPinned / Seconds说明
数据源
其中:
此数据项代表采样周期内每秒的登录、分析或执行调用数。
DeltaUserCalls / Seconds说明
数据源
其中:
此数据项代表采样周期内导致对内部表的更改的每秒调用数。
DeltaRecursiveCalls / Seconds说明
数据源
其中:
此数据项代表采样周期内每秒的登录数。
DeltaLogons / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒转到磁盘的排序数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / Seconds说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表在此采样周期内每秒在内存中执行的排序 (与在磁盘上执行的排序相对) 数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaBlockGets / Seconds说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表此采样周期内平均的每秒排序行数。
DeltaSortRows / Seconds说明
数据源
其中:
此数据项代表此采样周期内在入队转换或获取期间因不能立即授予入队而发生的每秒等待数。
DeltaWaits / Seconds说明
数据源
其中:
此数据项代表采样周期内每秒对块请求数。
DeltaGets / Seconds说明
数据源
其中:
此数据项代表采样周期内作为更新或删除操作的结果每秒对 SGA 中的所有块进行的更改数。此值是对全部数据库工作的一个粗略指示,正像它指示缓冲区被灰化的速率那样。
DeltaBlockChanges / Seconds说明
数据源
其中:
此数据项代表采样周期内用户进程每秒应用回退条目对块执行持续读取的次数。
DeltaConsistentChanges / Seconds说明
数据源
其中:
此数据项代表在采样周期内用户每秒手动发出 ROLLBACK 语句的次数或在用户事务处理期间每秒发生错误的次数。
DeltaRollbacks / Seconds说明
数据源
其中:
此值说明用户发出 ROLLBACK 语句,或者在他们的事务处理期间遇到错误的频率。应该进行进一步的调查,以确定这些回退是错误应用程序逻辑的一部分,还是由于在数据库访问时发生的错误引起的。
此数据项代表此采样周期内每秒所执行的用户提交的数目。当用户提交事务处理时,必须将生成的反映对数据库块更改的重做写入磁盘。提交数通常代表最接近用户事务处理率的数据。
DeltaCommits / Seconds说明
数据源
其中:
此统计数据表示数据库中的工作已经完成了多少。事务处理率中的峰值不一定是坏事。如果响应时间保持在接近正常水平,这意味着您的系统可以处理更多的负载。实际上事务处理率的下降和响应时间的增加表明可能出现了问题。根据应用程序的不同,事务处理负载在一天的不同时间可能变化非常大。
此数据项代表采样周期内每秒的长表扫描数。如果某个表未被高速缓存而且其高水线标记大于 5 个块,则认为此表是“长型的”。
DeltaScans / Seconds说明
数据源
其中:
此数据项代表采样周期内每秒的短表扫描数。如果某个表被高速缓存而且其高水线标记小于 5 个块,则认为此表是“短型的”。
DeltaScans / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒生成的重做大小 (字节)。
DeltaRedo / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒的磁盘读取数。
DeltaReads / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒的磁盘写入数。
DeltaWrites / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒的逻辑读取数。
DeltaReads / Seconds说明
数据源
其中:
每个事务处理中为整个例程汇总的统计数据
此类包括下列图表:
每个事务处理中为整个例程汇总的统计数据
此数据项代表此采样周期内为查找可重用的缓冲区在每个事务处理中从 LRU 队列的尾部跳过的缓冲区数。此统计值与“检查到的灰缓冲区数”的差值是不能被使用的缓冲区的数目,因为这些缓冲区正忙、需要在快速超龄释放以后被写入,或者它们有用户、等待者,或者正被读取/写入。
DeltaFreeBuffersInspected / Transactions说明
数据源
其中:
此数据项代表此采样周期内在每个事务处理中请求可重用缓冲区或空闲缓冲区以创建或加载块的次数计数。
DeltaFreeBuffersRequested / Transactions说明
数据源
其中:
此数据项代表此采样周期内当前台查找要重用的缓冲区时在每个事务处理期间所找到的灰数据缓冲区的数目。
DeltaFreeBuffersRequested / Transactions说明
数据源
其中:
此数据项代表此采样周期内在每个事务处理期间执行的分析调用 (硬和软) 总数。
DeltaParses / Transactions说明
数据源
其中:
此数据项代表此采样周期内每个事务处理的硬分析数。
DeltaParses / Transactions说明
数据源
其中:
如果分析花费的时间过长,请评估 SQL 语句以确定可以修改哪些语句,以优化共享 SQL 池内存的使用并避免不必要的语句再分析。如果编写了在空格、大小写或二者的某种组合方面不一致的类似的 SQL 语句,则可能导致这种问题。只要有可能,您也可以考虑在您的语句中使用赋值变量,而不使用显式指定的常数。
此数据项代表此采样周期内在每个事务处理期间的语句执行 (用户和递归) 数。
DeltaExecutes / Transactions说明
数据源
其中:
此数据项代表此采样周期内在每个事务处理期间存储到高速缓存中的游标总数。只有当 SESSION_CACHED_CURSORS 大于 0 时才增加此值。
DeltaCursorCacheCount / Transactions说明
数据源
其中:
此数据项代表采样周期内会话游标高速缓存中每个事务处理的命中数计数。命中意味着 SQL 语句未被重新分析。通过从“分析计数 (总计)”中减去此值就可以确定所发生的实际分析数。
DeltaCursorCacheHits / Transactions说明
数据源
其中:
此数据项代表采样周期内每个事务处理期间为块请求持续读取的次数。
DeltaConsistentGets / Transactions说明
数据源
其中:
此数项代表在采样周期内当客户机检查所需的缓冲区以确定它是否已被连接时此缓冲区在每个事务处理期间已被客户机连接的次数。
DeltaPinned / Transactions说明
数据源
其中:
此数据项代表采样周期内当客户机检查缓冲区以确定它是否已被连接时每个事务处理期间此缓冲区尚未被客户机连接的次数。
DeltaNotPinned / Transactions说明
数据源
其中:
此数据项代表采样周期内每个事务处理的登录、分析或执行调用数。
DeltaUserCalls / Transactions说明
数据源
其中:
此数据项代表采样周期内导致对内部表的更改的每个事务处理的调用数。
DeltaRecursiveCalls / Transactions说明
数据源
其中:
此数据项代表采样周期内每个事务处理的登录数。
DeltaLogons / Transactions说明
数据源
其中:
此数据项代表此采样周期内每个事务处理期间转到磁盘的排序数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaDiskSorts / Transactions说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表在此采样周期内每个事务处理在内存中执行的排序 (与在磁盘上执行的排序相对) 数。
为了获得最佳性能,大多数排序应该在内存中进行,因为执行到磁盘的排序的代价是昂贵的。如果排序区域太小,排序操作期间将需要运行额外的排序。这将增加 CPU 和 I/O 资源开销。
DeltaMemorySorts / Transactions说明
数据源
其中:
如果过多的排序在磁盘上发生,则请考虑增大 SORT_AREA_SIZE 初始化参数以增大排序区域的大小。更大的排序区域将允许 Oracle Server 保持排序只在在内存中发生,这样就减少了使用当前高速缓存大小进行等量工作需要的 I/O 操作数。
此数据项代表此采样周期内每个事务处理的平均排序行数。
DeltaSortRows / Transactions说明
数据源
其中:
此数据项代表此采样周期内在入队转换或获取期间因不能立即授予入队而发生的每个事务处理中的等待数。
DeltaWaits / Transactions说明
数据源
其中:
此数据项代表采样周期内每个事务处理对块的请求数。
DeltaGets / Transactions说明
数据源
其中:
此数据项代表采样周期内作为更新或删除操作的结果每个事务处理对 SGA 中的所有块进行的更改数。此值是对全部数据库工作的一个粗略指示,正像它指示缓冲区被灰化的速率那样。
DeltaBlockChanges / Transactions说明
数据源
其中:
此数据项代表采样周期内每个事务处理中用户进程应用回退条目对块执行持续读取的次数。
DeltaConsistentChanges / Transactions说明
数据源
其中:
此数据项代表采样周期内每个事务处理中用户手动发出 ROLLBACK 语句的次数或在用户事务处理期间发生错误的次数。
DeltaRollbacks / Transactions说明
数据源
其中:
此值说明用户发出 ROLLBACK 语句,或者在他们的事务处理期间遇到错误的频率。应该进行进一步的调查,以确定这些回退是错误应用程序逻辑的一部分,还是由于在数据库访问时发生的错误引起的。
此数据项代表此采样周期内每个事务处理所执行的用户提交的数目。当用户提交事务处理时,必须将生成的反映对数据库块更改的重做写入磁盘。提交数通常代表最接近用户事务处理率的数据。
DeltaCommits / Transactions说明
数据源
其中:
此统计数据表示数据库中的工作已经完成了多少。事务处理率中的峰值不一定是坏事。如果响应时间保持在接近正常水平,这意味着您的系统可以处理更多的负载。实际上事务处理率的下降和响应时间的增加表明可能出现了问题。根据应用程序的不同,事务处理负载在一天的不同时间可能变化非常大。
此数据项代表采样周期内每个事务处理的长表扫描数。如果某个表未被高速缓存而且其高水线标记大于 5 个块,则认为此表是“长型的”。
DeltaScans / Transactions说明
数据源
其中:
此数据项代表采样周期内每个事务处理的短表扫描数。如果某个表被高速缓存而且其高水线标记小于 5 个块,则认为此表是“短型的”。
DeltaScans / Transactions说明
数据源
其中:
此数据项代表此采样周期内每个事务处理生成的重做大小 (字节)。
DeltaRedo / Transactions说明
数据源
其中:
此数据项代表此采样周期内每个事务处理的磁盘读取数。
DeltaReads / Transactions说明
数据源
其中:
此数据项代表此采样周期内每个事务处理的磁盘写入数。
DeltaWrites / Transactions说明
数据源
其中:
此数据项代表此采样周期内每个事务处理的逻辑读取数。
DeltaReads / Transactions说明
数据源
其中:
按持续时间排序的当前正在运行的事务处理
按持续时间排序的当前正在运行的事务处理
此数据项代表当前的 SQL。
select sql_text from v$sqlarea
说明
数据源
此数据项代表自事务处理启动以来每秒的逻辑 I/O。
select log_io from v$transaction
说明
数据源
此数据项代表自事务处理启动以来每秒的物理 I/O。
select phy_io from v$transaction
说明
数据源
此数据项代表自事务处理启动以来每秒的持续获取数。
select cr_get from v$transaction
说明
数据源
此数据项代表自事务处理启动以来每秒的持续更改数。
select cr_change from v$transaction
说明
数据源
此数据项代表自事务处理启动以来的持续时间 (秒)。
select (sysdate - to_date(START_TIME,'mm/dd/yy hh24:mi:ss')) * 86400 from v$transaction
说明
数据源
当前正被会话等待的段
此类包括下列图表:
当前正被会话等待的段
此数据项代表包含正被等待块的段的名称。
select segment_name from sys.dba_extents where file_id = p1 and p2 between block_id and block_id+blocks-1说明
数据源
其中:
无
此数据项代表正被等待区的文件中的块编号。
select p2 from v$session_wait
说明
数据源
将块 id 与文件 id 配合使用,可以算出正被等待的段和对象。如果同一个段被反复等待,则您已经识别出一个瓶颈。
此数据项代表包含当前等待事件正在等待的块的数据库文件的名称。
select p1 from v$session_wait
说明
数据源
它标识正导致等待的文件。如果同一个文件反复引起等待,则您已经识别出瓶颈所在。您应该进一步研究如何最好地分布到此文件中各个对象的 I/O 或应用程序访问。
此数据项代表包含正被等待块的段的所有者。
select owner from sys.dba_extents where file_id = p1 and p2 between block_id and block_id+blocks-1说明
数据源
其中:
此数据项代表包含正被等待块的表空间的名称。
select tablespace_name from sys.dba_extents where file_id = p1 and p2 between block_id and block_id+blocks-1说明
数据源
其中:
被等待的文件和块的计数
此类包括下列图表:
被等待的文件和块的计数
此数据项代表正被读取或写入的文件的数目。
select p1 from v$session_wait
说明
数据源
此数据项代表正被读取或写入的文件的数目。
select p2 from v$session_wait
说明
数据源
数据库中高争用块的文件和块 id
数据库中高争用块的文件和块 id
争用中的块 Id
当前由 Oracle 服务器和对锁或栓锁未完成的请求所持有的锁的数目
此类包括下列图表:
当前由 Oracle 服务器和对锁或栓锁未完成的请求所持有的锁的数目
持有或获取锁的会话
持有或获取锁的会话的会话序列号
入队是将数据库资源访问串行化的共享内存结构 (锁)。它们可以与会话或事务处理相关联。入队名显示在DBA_LOCKS 和 DBA_LOCK_INTERNAL 数据字典视图的 LOCK_TYPE 列中。
资源唯一标识可由同一例程中 (本地资源)或不同例程中 (全局资源) 的不同会话锁定的对象。试图锁定资源的每个会话将在资源上拥有一个入队。
注意:入队的名称及其定义可能随发行版的不同而不同。
Oracle 入队有:
说明
V$LOCK 表中的 LOCK_TYPE 列。
确定引起锁争用的原因并尝试将其排除。虽然通过选定会话并使用终止会话的工具将其终止是激烈的,但这确实是一种终止会话的方法。如果已经确定阻塞锁不会被很快释放,则这应该用作删除它的最后一种手段。
会话按其持有锁的锁模式
进程按其请求锁的锁模式
锁定对象的名称
被锁定的当前 ROWID
对象所有者的用户名
对象的类型
锁标识符 #1 (取决于类型)
锁标识符 #2 (取决于类型)
操作系统进程 id
用于某个会话的当前 SQL 语句
此类包括下列图表:
用于某个会话的当前 SQL 语句
此数据项包括当前游标的 SQL 文本的前八十个字符。
select sql_text from v$sqlarea
说明
数据源
此数据项代表物理读取数。换句话说,它的值就是由于没有被高速缓存中的缓冲区满足而导致访问磁盘数据文件的读取请求数。 select disk_reads from v$sqlarea
说明
数据源
此数据项代表高速缓存中的缓冲区满足的读取请求数。换句话说,它的值就是由此语句的所有执行读取的总块数。
select buffer_gets from v$sqlarea
说明
数据源
此数据项代表在此采样周期内每秒执行此语句的次数。
DeltaExecutions / Seconds说明
数据源
其中:
此数据项代表此采样周期内每秒分析此语句的次数。
DeltaParseCalls / Seconds说明
数据源
其中:
此数据项代表此采样周期内此语句每秒执行的物理读取数。换句话说,它的值就是由于没有被高速缓存中的缓冲区满足而导致访问磁盘数据文件的读取请求数。
DeltaPhysicalReads / Seconds说明
数据源
其中:
此数据项代表在此采样周期内高速缓存中的缓冲区每秒满足的此语句的读取请求数。
DeltaBufferGets / Seconds说明
数据源
其中:
此数据项代表在此采样周期内为完成此语句每秒处理的总行数。
DeltaRowsProcessed / Seconds说明
数据源
其中:
此数据项代表此语句所使用的全部可共享内存的总和 (字节)。
select sharable_mem from v$sqlarea
说明
数据源
此数据项代表此语句所使用的全部永久内存的总和 (字节)。
select persistent_mem from v$sqlarea
说明
数据源
此数据项代表当前此语句所使用的全部内存的总和 (字节)。
select runtime_mem from v$sqlarea
说明
数据源
此数据项代表首先执行此语句的应用程序模块的名称。通过使用 DMBS_APPLICATION_INFO.SET_MODULE 能够可选地设置此名称。
select module from v$sqlarea
说明
数据源
此数据项代表由首先执行此语句的应用程序模块执行的操作的名称。通过使用 DMBS_APPLICATION_INFO.SET_ACTION 能够可选地设置此名称。
select action from v$sqlarea
说明
数据源
此数据项代表此采样周期内对此语句有贡献的物理读取总数百分比。
DeltaPhysicalReads / DeltaTotalReads说明
数据源
其中:
此数据项代表此采样周期内对此语句有贡献的缓冲区获取总数百分比。
DeltaBufferGets / DeltaTotalGets说明
数据源
其中:
此数据项代表会话标识符。
select sid from v$session
说明
数据源
用于 OPS 数据库的整个例程统计数据
用于 OPS 数据库的整个例程统计数据
每秒内所有例程的 OPS 强制回应总数
每秒内所有例程的全局高速缓存 CR 超时
每秒内所有例程的全局高速缓存转换超时数
每秒内所有例程的全局高速缓存空闲列表等待数
平均 CR 请求时间 (毫秒)
平均服务时间 (毫秒)
平均转换时间 (毫秒)
平均获取时间 (毫秒)
用于 OPS 数据库的整个例程统计数据
用于 OPS 数据库的整个例程统计数据
每秒内某个例程的 OPS 强制回应总数
每秒内某个例程的全局高速缓存 CR 超时
每秒内某个例程的全局高速缓存转换超时
每秒内某个例程的全局高速缓存空闲列表等待数
平均 CR 请求时间 (毫秒)
平均服务时间 (毫秒)
平均转换时间 (毫秒)
平均获取时间 (毫秒)
“跨例程的 DBWR 写入数”与“物理写入数”的比率
按文件的强制回应
按文件的强制回应
此文件的每秒强制回应计数
不可见
不可见
此文件的每秒强制回应计数
不可见
不可见
此文件的每秒强制回应计数
强制回应在不同类的块之间的分发情况
强制回应在不同类的块之间的分发情况
此文件的每秒强制回应计数
强制回应计数百分比
不可见
不可见
此文件的每秒强制回应计数
强制回应计数百分比
强制回应在对象之间的分发情况。
强制回应在对象之间的分发情况。
此对象的每秒强制回应计数
数据库对象的类型
不可见
不可见
此对象的每秒强制回应计数
数据库对象的类型
不可见
不可见
此对象的每秒强制回应计数
强制回应的最大块序号
强制回应的最大块序号
对象的名称
对象的类型
文件的编号
块的编号
此对象的每秒强制回应计数
不可见
不可见
此对象的每秒强制回应计数
系统等待数
系统等待数
此事件的等待时间
等待的百分比
库高速缓存
库高速缓存
dlm 锁请求数
dlm 连接请求数
dlm 无效
按例程的库高速缓存
按例程的库高速缓存
dlm 锁请求数
dlm 连接请求数
dlm 无效
行高速缓存
行高速缓存
dlm 请求数
dlm 冲突数
dlm 冲突百分比
按例程的行高速缓存
按例程的行高速缓存
dlm 请求数
dlm 冲突数
dlm 冲突百分比