`
feng5hao
  • 浏览: 23085 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Oracle学习之路【六】确定当前ORACLE的性能瓶颈

阅读更多
确定当前ORACLE的性能瓶颈
首先,利用V$SYSTEM_EVENT视图执行下面的查询查看数据库中某些常见的等待事件
select * from v$system_event where event in
      ('buffer busy waits','db file sequential read',
       'db file scattered read','enqueue',
       'free buffer waits','latch free',
       'log file parallel write','log file sync');

接着,利用下面对V$SESSION和V$SESSION_EVENT视图进行查询,研究具有对上面显示的内容有贡献的等待事件的会话

select se.sid,s.username,se.event,
       se.total_waits,se.time_waited,se.average_wait
from v$session s,v$session_event se
where s.username is not null
  and se.sid=s.sid
  and s.status='ACTIVE'
  and se.event not like '%SQL*Net%';

为了找到与所连接的会话有关的当前等待事件,使用下面的查询。这些信息是动态的,为了查看一个会话的等待最多的事件是什么,需要多次执行此查询。

select sw.sid,s.username,sw.event,sw.wait_time,
       sw.state,sw.seconds_in_wait
from v$session s,v$session_wait sw
where s.username is not null
  and sw.sid=s.sid
  and sw.event not like '%SQL*Net%'
  order by sw.wait_time desc;

SID  USERNAME   EVENT             WAIT_TIME  STATE        SEC_IN_WAIT
29   OLUSER14    db file sequential read          12   WAITED KNOWN TIME     1
32   ID2USER      db file scattered read           0    WAITING                 0
51   VENDOR1     log file sync                  0    WAITING                 0

会话29正等待db file sequential read。下面的查询显示了有关该试验的等待的其他信息。
select sid,event,p1text,p1,p2text,p2,p3text,p3 
from v$session_wait 
where sid between 28 and 52
  and event not like '%SQL%'
  and event not like '%rdbms%';
SID  EVENT             P1TEXT   P1   P2TEXT   P2      P3TEXT   P3
29   db file sequential read     file#   67     block#   19718      blocks   1
32   db file scattered read      file#   67     block#   17140      blocks   32
51   db file sequential read     file#   63     block#   7556       blocks   1
其中可以看出,有两个会话正访问相同的数据文件,而且有可能是相同的段。P1清楚地显示了这个事实。有一个会话正在执行权表扫描,而另一个正使用索引扫描。利用P1、P2的信息,很容易发现这个段是什么段。下面的查询将做这件事情。
select owner,segment_name,segment_type,tablespace_name
from dba_extents
where file_id=&filed_in
  and &blockid_in between block_id and block_id+blocks-1;

Enter value for filed_in: 67
Enter value for blockid_in:19718

OWNER  SEGMENT_NAME     SEGMENT_TYPE            TABLESPACE_NAME
OYWJ1       STUDENT            TABLE                    USER01
查到访问表STUDENT的查询导致了某些等待。

下面来看看是什么样的查询语句导致等待
select sql_text from v$sqltext where (hash_value,address)= 
(select sql_hash_value,sql_address from v$session where sid=150);






某些常见的等待事件及说明
buffer busy waits	指出等待数据库缓冲区高速缓存中的缓冲区,这表示某个会话正把这个缓冲区读入高速缓存或修改它,也可能是支持许多并发INSERT操作的表上缺乏足够的空闲列表
db file parallel write	指出与dbwr进程有关的等待。可能与dbwr进程或配置的dbwr i/o进程的数目有关,还可以表示较低或较高争用的设备
Db file scattered read	指出与全盘扫描有关的等待。可能表示I/O争用或太多的I/O
Db file sequential read	指出与索引扫描有关的等待。可能表示I/O争用或太多的I/O
Db single write	指出与在一个检查点种标题写入有关的等待。典型的情况是在数据文件编号紊乱的环境中
Direct path read	指示并允许直接I/O相关的等待。一般在设备上的I/O争用
Direct path write	与 Direct path read相同。只不过对应于写入
enqueue	指出与锁定各种Oracle资源和组件的内部排队机制有关的等待。
Free buffer inspected	指出并确定数据库缓冲区高速缓存中空闲缓冲区以便把数据放入该高速缓存的进程有关的等待
Free buffer waits	指出数据库缓冲区高速缓存中缺乏空闲缓冲区。这可能表示数据库缓冲区高速缓存大小灰列表(高速缓存中修改过的快的列表)写到磁盘的速度不够快。如果是这样,可配置更多的dbwr进程或I/O进程。这个事件在空闲缓冲区检查事件未发现任何空闲缓冲区时产生
Latch free	指出正等待的某号匝锁的争用。应该保证已经通过设置相应的init.ora参数,将匝锁数目调整为所允许的最大数目。如果问题继续存在,应该确定是什么引起该匝锁的争用并处理基本问题。要确定找到问题的根源。匝锁空闲事件是大问题的表征。
Library cache load lock	这是把对象装入库高速缓存所要求的。此等待事件可在发生大量重新装载(一般由缺乏重用sql语句或尺寸不合适的共享池区所引起的)时产出
Library cache lock	指出与访问数据库高速缓存的多个进程的并发性有关的等待。可指出尺寸设置不合适的共享池区,因为需要获得这个锁以便在库高速缓存中定位对象
Library cache pin	此等待事件也与库高速缓存并发性有关,并且在给定对象需要在库高速缓存中修改或检查时产生此事件
Log buffer space	指出不能跟上服务器进程写入重做日志缓冲区的速率的lgrw的可能问题。一般表示日志缓冲区尺寸问题或者联机重做日志所处的设备较慢或争用
Log file parallel write	指出从重做日志缓冲将重做记录写入磁盘的相关等待。一般表示联机重做日志志所处的设备较慢或争用	
Log file single write	指出写入到日志文件的标题块。可能表示检查点种的等待
Log file switch
(archiving needed)	指出arch跟不上lgwr的等待。可能是因为联机重做日志大小、设备较慢或设备上的争用较多(一般由日志文件位于数据文件所在的设备上引起)。还可能需要研究多个arch进程或I/O从进程的可能性
Log file sync	指出用户提交时重做日志缓冲区清洗有关的等待。如果此等待持续不变,可能表示放置联机重做日志文件的设备争用或设备较慢
SQL*Net message from/to client	指出用户进程和服务器进程通信中占用的时间,在某些不常见的情况下,可清楚地显示出网络传输问题,但多数情况下可以忽略。如果应用程序支持ARRAYSIZE(如Oracle Forms、SQL*Plus、Pro*C等)配置,则配置ARRAYSIZE为一个大于默认值的值可能会减少这个事件的等待
SQL*Net message from dblink	指出与分布式处理(从其他数据库中select)有关的等待。这个事件通过DBLINKS联机查找其他数据时产生。如果查找的数据多数是静态的,则移动这些数据到本地表并根据需要刷新它,会在性能上出现很大的差别
Tiemr in sksawat	指出一个较慢的arch进程,这或者是由于数据库的多个组件争用,或者是由于没有执行归档的足够的I/O进程
transaction	指出与回退操作阻塞有关的等待
Undo segment extension	指出回退段的区和扩充的动态分配。这可能表示回退段的数目不是最佳,或者这些回退段的MINEXTENTS数不是最佳
Write complete waits	指示与写入到磁盘缓冲区有关的等待,这种写入可能有数据库缓冲区高速缓存的正常老化引起

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Oracle 性能调优的基本方案

    Oracle 性能调优需要通过八个步骤来实现,包括设立合理的 Oracle 性能优化目标、测量并记录当前性能、确定当前 Oracle 性能瓶颈、把等待事件记入跟踪文件、确定当前的 OS 瓶颈、优化所需的成分、跟踪并实施更改控制...

    Oracle数据库性能分析

    - **收集统计信息**: 对于基于成本的优化器(Cost-Based Optimizer, CBO),这一步骤很重要,因为它帮助Oracle确定最佳的查询执行计划。 - **获取分析锁**: 在语句解析过程中,Oracle会锁定相关的对象,防止对象定义...

    ORACLE性能优化工具整理

    Oracle性能优化工具整理 Oracle数据库作为全球广泛使用的商业数据库管理系统,其性能优化对于确保数据库稳定运行、提高应用响应速度至关重要。性能优化不仅需要通过合理设计数据库模式、编写高效SQL语句等手段,而且...

    高级owi与oracle性能调整

    通过高级OWI与Oracle性能调整的学习,可以有效地提高数据库的运行效率,确保业务系统的稳定性和高效性。实际应用中,应综合考虑多种因素,灵活运用OWI提供的信息,不断优化数据库配置和SQL语句,以实现最佳性能。

    Oracle 性能调优

    - **云环境下的性能优化**:云平台提供了灵活的资源配置能力,但也带来了复杂性,如何在云环境中优化Oracle性能是当前的研究方向之一。 #### 七、结论 Oracle性能调优是一项复杂而重要的任务,它涉及到数据库架构...

    Oracle性能调优

    3. 确定当前Oracle性能瓶颈:通过查询视图如v$system_event、v$session_event和v$session_wait,识别主要的等待事件。例如,查找“buffer busy waits”、“db file sequential read”等,然后查看哪些会话和SQL语句...

    高级owi与oracle性能调优

    《高级owi与oracle性能调优》是一本专注...而由于本文无法使用内容页码进行验证,上述知识点的说明是基于当前信息对高级OWI和Oracle性能调优话题的一般性讨论。在实际应用中,仍需结合具体案例和官方文档进行深入研究。

    spotlight on oracle性能监控教程

    ### Spotlight on Oracle性能监控教程详解 #### 一、Spotlight on Oracle 功能介绍 Spotlight on Oracle是一款由Dell Quest Software开发的专业Oracle数据库性能监控工具。它提供了丰富的功能来帮助数据库管理员...

    ORACLE 10G 性能优化

    磁盘I/O通常是数据库性能瓶颈之一。改进磁盘I/O的方法包括: - 使用RAID技术,提高数据读写速度。 - 将不同类型的文件放置在不同的物理磁盘上,分散I/O负载。 - 采用更快的磁盘类型,如SSD。 - 优化数据库文件布局...

    oracle11g性能优化笔记第五部

    具体操作包括检查操作系统、数据库实例的负载情况,以及通过查看CPU使用率、识别I/O和网络问题来确定性能瓶颈所在。对于CPU使用情况,需要特别注意CPU资源的有效利用率,以及是否存在某些非Oracle进程占用了过多的...

    Oracle 性能调整定位总结

    Oracle性能调整定位是对数据库运行效率进行优化的关键环节,涉及到多个层面的检查和分析。以下是对标题和描述中涉及的知识点的详细解释: 1. **查看Oracle内部参数**: 使用`SELECT substr(ksppinm,1,50), ...

    Oracle动态性能视图

    - 当遇到性能瓶颈时,可以利用V$SESSION_WAIT、V$SESSION_WAIT_CLASS等视图来查找可能存在的等待事件。 - V$DB_OBJECT_CACHE可以帮助确定是否某些对象频繁地被访问但未被正确缓存。 3. **安全性** - 定期检查V$...

    Oracle系统调优办法

    **SQL优化**是提高Oracle性能最直接的方法之一。通过优化SQL语句,可以显著减少数据库处理时间,提高查询效率。 **优化策略**: - 避免使用复杂的子查询,尽可能将其转化为更简单的连接查询。 - 合理利用索引,特别...

    ORACLE性能优化工具整理.pdf

    综上所述,AWR是Oracle性能优化中至关重要的工具之一,它通过收集、存储和分析数据库的运行数据,为DBA提供了一套全面的性能监控与诊断方案。通过对AWR报告的深入分析,DBA可以发现和解决性能问题,进而确保数据库的...

    Oracle12C调优

    - **识别瓶颈**:使用工具(如 AWR 报告)来识别性能瓶颈。 - **分析原因**:分析造成性能问题的原因。 - **实施改进**:根据分析结果采取措施进行改进。 - **验证效果**:再次使用性能监控工具验证调优效果。 ...

    Oracle数据库巡检报告

    - **CPU性能检查**:通过监控工具或命令行工具(如`top`、`vmstat`、`iostat`等),检查服务器的CPU使用率,关注CPU的用户时间(user)、系统时间(system)以及等待时间(wait)等指标,以评估CPU是否出现瓶颈。...

    oracle性能优化的基本方法概述

    ### Oracle性能优化的基本方法概述 #### 一、设立合理的性能...通过设立合理的性能目标、测量记录当前性能状态、确定性能瓶颈、实施有针对性的优化措施,并持续跟踪优化效果,可以有效提升 Oracle 数据库的整体性能。

    oracle常用监控脚本

    配合TKPROF工具,可以将trace文件格式化成易于阅读的报告,帮助分析SQL语句的执行效率,找出性能瓶颈。 2. **AWR(Automatic Workload Repository)**: AWR是Oracle 10g引入的自动性能诊断和基线管理组件,它周期...

    oracle性能调优OTop

    Oracle性能调优是数据库管理中的重要环节,它关乎到系统的响应速度、稳定性和资源利用率。OTop是一款专为Oracle数据库设计的性能优化工具,旨在帮助DBA(数据库管理员)更有效地监控和分析数据库的运行状态,从而...

Global site tag (gtag.js) - Google Analytics