`
nesta2001zhang
  • 浏览: 70814 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

查找运行慢的进程及SQL语句

 
阅读更多

一、造成系统慢的原因初步介绍

     系统运行过程中,用户反映速度慢,作为DBA,应该怎么去查找系统慢的原因?首先需要运行操作系统的当前运行状态,使用一些命令,如VMSTAT、 SAR、SWAPINFO等,观察系统当前的CPU、内存、磁盘、系统缓存等目前运行状态,判断这些系统资源是否存在瓶颈,如果是这些资源的原因而造成系 统存在瓶颈,建议先在硬件资源上进行升级更新。

      如果排除了硬件及操作系统的原因,对于数据库来说,需要判断系统慢的原因,建议在繁忙时期生成STATSPACK报告,并根据报告的结果才能得到比较准确 的判断。对于DBA来说,系统变慢的时候,可以运行一些脚本去检测,常见的问题有锁未及时释放、SQL本身需要优化等原因。下面我们就主要就这两种情况进 行讲解。

二、几种常见的故障检测及解决方法

1、对于锁冲突而引起的系统等待故障:

(1)首先判断当前是否存在进程锁等待的情况:

select * from v$session where lockwait is not null;

(2)如果存在,可以进一步判断是哪个进程占住了锁使得其他的进程在等待。如果这是第一次使用,需要安装ORACLE的内部视图,方法如下:使用SYS用户登上数据库服务器的SQL*PLUS,运行如下SQL命令安装检测锁冲突的系统视图:

@?/rdbms/admin/catblock.sql

(3)使用以下命令可以查看系统当前锁的情况:

@?/rdbms/admin/utllockt.sql

(4)由于某些特殊情况,一些进程一直没有释放锁,使得其他进程无法使用锁住的数据而一直在等待,做为DBA,可以将这些异常的进程找出来并 KILL掉,使系统恢复正常。

找出锁住别的进程的进程sid和serial#:

SELECT sid, serial#

FROM v$session

WHERE sid in (SELECT holding_session FROM dba_waiters);

将这些进程KILL掉:

ALTER SYSTEM

KILL SESSION 'sid,serial#';

以上介绍的是一种常用的方法,用来解决因锁冲突而引起故障,但是由于以上脚本也有些需要申请锁,因此有时也会出现等待的情况,因此建议大家也可以使用OEM工具中的Lock Manager来处理这种情况。

 

2、对于因SQL语句原因造成系统慢:

 

这种情况一般CPU负荷运行时比较满,因此我们可以使用TOP进程观察当前最忙的几个进程分别是什么,如果是ORACLE的前台进程,有可能是此进程造成系统目前比较慢。

记下此进程的PID,使用如下SQL语句查找当前的进程:

select a1.*,a2.* from v$session a1,v$process a2 where a1.paddr=a2.addr and a2.spid=&pid;

对此进程进行分析,看其当前在运行的SQL语句

可以使用以下SQL查看某个进程正在运行的SQL

select sql_text from v$sql where address =(select a1.sql_address from v$session a1,v$process a2 where a1.paddr=a2.addr and a2.spid=&pid);

也可以使用TOAD或OEM工具,对某个SESSION进行查看,可以看到目前SESSION正在运行的SQL语句。

可以使用OEM工具中的TOP SQL,查看系统中对性能影响比较大的SQL语句,具体使用为:选择工具-》Diagnostic Pack-》Top SQL.

分享到:
评论

相关推荐

    Sql Server ExpressProfiler 监视Sql语句

    它允许数据库管理员和开发人员实时跟踪和记录数据库服务器上的事件,包括SQL语句的执行情况,以优化性能、查找问题或调试应用程序。在公司环境中,由于未安装官方的Profiler,你可能已经下载了第三方的...

    Oracle中SQL语句执行效率的查找与解决

    综上所述,Oracle中SQL语句执行效率的查找与解决是一个复杂但系统性的过程。通过对资源消耗、执行计划和常见执行计划类型的深入了解,数据库管理员可以采取有效措施,优化查询性能,确保系统的高效稳定运行。

    oracle查找定位占用临时表空间较大的SQL语句方法

    oracle查找定位占用临时表空间较大的SQL语句方法,包括:(1)造成临时表空间暴涨的SQL还在运行中(2)造成临时表空间暴涨的SQL已经运行过了。

    SQL 语句执行步骤

    逻辑查询处理是指SQL语句从提交到执行计划生成之前的处理过程。这一阶段主要包括以下几步: 1. **解析**:将SQL语句转换为抽象语法树(AST),以便后续处理。 2. **语法分析**:检查SQL语句是否符合语法规则。 3. *...

    oracle 查看前数据库中: 谁在运行什么 SQL语句

    在Oracle数据库管理系统中,了解当前正在执行的SQL语句以及是由哪个用户运行的,对于数据库监控、性能优化和问题排查至关重要。以下是如何在Oracle中查看这些信息的详细步骤和相关知识点: 1. **视图v$session与v$...

    asp精妙的SQL语句例子

    ### ASP中的精妙SQL语句...以上就是从给定的文件标题、描述、标签及部分内容中提炼出来的精妙SQL语句实例及其详细解析。这些SQL语句涵盖了从简单的数据更新到复杂的数据处理等多个方面,希望对学习和实际应用有所帮助。

    SQL语句嵌套的实例.rar_SQL语句_sql 语句_sql嵌套

    8. **动态SQL**:在某些场景下,SQL语句的嵌套还包括动态构建SQL字符串,根据运行时的条件生成不同的查询,常见于存储过程和函数中。 以上是关于SQL语句嵌套的一些主要知识点。在实际应用中,理解并熟练掌握这些...

    《Effective MySQL之SQL语句最优化》手册

    《Effective MySQL之SQL语句最优化》是一本深入探讨如何提升数据库性能的专业手册,它针对SQL语句的优化提供了一...通过阅读本书,你将能够更有效地管理和优化你的SQL语句,从而让你的数据库应用运行得更加顺畅高效。

    SQL语句性能分析之explain

    ### SQL语句性能分析之explain #### 概述 在数据库管理及开发过程中,SQL查询语句的性能优化是一项至关重要的工作。为了更好地理解和优化SQL查询,MySQL提供了一个非常有用的工具——`EXPLAIN`。通过在SQL语句前...

    经典SQL语句大全

    10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1...

    sqlserver如何快速查询死锁语句

    在SQL Server数据库管理系统中,死锁是一个...总的来说,通过监控未提交事务、查找阻塞和死锁的SQL语句,以及适时使用`KILL`命令,我们可以有效地管理和解决SQL Server中的死锁问题,确保数据库系统的稳定和高效运行。

    自动查找数据源,自动根据SQL语句,在表格中显示 <img src="/ima

    在IT行业中,自动查找数据源并依据SQL语句在表格中显示是一种常见的数据处理和可视化技术,广泛应用于数据库应用和数据分析。以下将详细介绍这个过程涉及的知识点。 首先,"自动查找数据源"指的是程序能够自动识别...

    【脚本】获取当前最忙的进程的sql语句

    标题中的“【脚本】获取当前最忙的进程的sql语句”指的是通过编写特定的脚本来监控系统中运行的进程,特别是找出那些消耗资源最多的SQL语句,以优化数据库性能。这种做法在IT运维中非常常见,尤其对于处理大量数据的...

    sql语句妙用,各种sql语句的详细用法与讲解 .doc

    1. 动态SQL语句是SQL中一种强大的功能,它允许在运行时构建和执行SQL命令。例如,`EXEC`和`sp_executesql`存储过程用于执行动态生成的SQL语句。在例子中,我们看到如何使用变量来构建SQL语句,如`DECLARE`和`SET`...

    动态SQL语句.rar

    2. **性能影响**:动态SQL的执行通常比静态SQL慢,因为需要在运行时解析和编译SQL语句。 3. **调试困难**:由于SQL是在运行时构建的,所以很难在代码中直接看到完整的SQL语句,这可能使调试变得复杂。 在实际应用中...

    SQL语句检查工具.zip

    在SQL开发过程中,编写高效、规范的SQL语句至关重要。SQL语句检查工具通过自动化检查,可以快速发现并修正语法错误、性能瓶颈、不规范的写法等问题。例如,它可能会检测到未使用的变量、冗余的JOIN操作、未优化的...

    Oracle sql语句优化规则汇总

    ### Oracle SQL语句优化规则详解 ...综上所述,Oracle SQL语句优化是一个多方面的过程,涉及优化器的选择、访问策略的制定和SQL语句的高效管理。通过精心设计和持续调优,可以显著提升Oracle数据库的性能和响应速度。

Global site tag (gtag.js) - Google Analytics