数据库查询一条语句就需要很长的时间

简介:

2016年7月8日

    今天开发提供了一条删除表中数据的语句,delete语句。放在plsql中执行了之后发现执行了半个小时还没有结束,这个时候开发还有脚本需要执行,本想创建新的会话,来执行开发提供的语句,可是一个简单的建表语句也不能够执行了。

    我就把delete的那个会话在plsql中强制给关掉了,只是把plsql窗口关掉了,虽然管了好半天才给强制关掉。但是建表语句依旧不能够执行。执行了就是没有回应。这个时候测试人员反映点击界面很卡,登录客户端也是一直处于打转的状态。

    根据以上情况想到,可能是刚刚强制关掉plsql窗口,虽然窗口关掉了,但是进程还是没有关掉的。

    那么怎么查看进程是都存在呢。

查看这个表   

select * from v$session  

select * from v$session a

where a.USERNAME='SYS' and a.TERMINAL='SHA-P07010086' and a.status='ACTIVE';

这里是因为我执行delete是用sys用户执行的,我的电脑名称是SHA-P07010086

查看进程号

select * from v$process


select * from v$sqlarea b

where b.SQL_ID in ('dauuu7kkf7xma','gs36qsq4dju1v');


--dauuu7kkf7xma

杀掉进程

alter system kill session '133,15615' immediate;

这样操作之后,我delete的进程就杀掉了。 

之后再查数据,就好些了。测试人员重新登陆应用后,也好了。


定位性能sql

1、查找前十条性能差的sql

SELECT * FROM (select PARSING_USER_ID,EXECUTIONS,SORTS, 

COMMAND_TYPE,DISK_READS,sql_text FROM v$sqlarea 

order BY disk_reads DESC )where ROWNUM<10 ; 

2、查看IO高的session

SELECT se.sid,se.serial#,pr.SPID,

--se.username,se.status, 

--se.terminal,se.program,se.MODULE,se.sql_address,st.event,

st.p1text,si.physical_reads 

--,si.block_changes 

FROM v$session se,v$session_wait st, 

v$sess_io si,v$process pr WHERE st.sid=se.sid AND st.sid=si.sid AND se.PADDR=pr.ADDR AND se.sid>6 AND st. 

wait_time=0 AND st.event NOT LIKE '%SQL%' ORDER BY physical_reads DESC;

3、通过进程号查看异常sql

SELECT a.username,

       a.machine,

       a.program,

       a.sid,

       a.serial#,

       a.status,

       c.piece,

       c.sql_text

FROM v$session a,

       v$process b,

       v$sqltext c

WHERE b.spid=5200  

   AND b.addr=a.paddr

   AND a.sql_address=c.address(+)

ORDER BY c.piece  ;

alter system kill session 'sid,serial#' ;--查看sql




本文转自aaa超超aaa 51CTO博客,原文链接:http://blog.51cto.com/10983441/1812744
相关文章
|
2月前
|
SQL 存储 数据库
优化数据库查询性能
【8月更文挑战第23天】优化数据库查询性能
49 7
|
20天前
|
SQL 关系型数据库 MySQL
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
课程分类查询、课程新增、统一异常处理、统一封装结果类、JSR303校验、修改课程、查询课程计划、新增/修改课程计划
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
|
20天前
|
前端开发 应用服务中间件 API
|
6天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
49 5
|
28天前
|
存储 关系型数据库 MySQL
如何优化数据库查询?
如何优化数据库查询?
63 1
|
2月前
|
SQL 缓存 监控
优化大型数据库查询的最佳实践
在处理大规模数据时,数据库查询性能的优化至关重要。本文探讨了几种优化大型数据库查询的最佳实践,包括索引策略、查询重写、数据分区和缓存机制。通过这些方法,开发人员可以显著提高查询效率,减少系统负担,提升用户体验。本文还结合实际案例,提供了具体的优化技巧和工具建议,帮助读者有效地管理和优化大型数据库系统。
|
20天前
|
SQL 存储 数据库
MSSQL遍历数据库根据列值查询数据
【9月更文挑战第12天】在 SQL Server 中,可以通过游标或临时表遍历数据库并根据列值查询数据。示例展示了如何创建临时表存储数据库名,并通过循环遍历这些名称来执行特定查询。需替换 `YourTableName`、`YourColumnName` 和 `YourValue` 为实际值。此方法要求有足够权限访问各数据库。若无跨库权限,需分别执行查询。
|
2月前
|
SQL 数据库 Java
HQL vs SQL:谁将统治数据库查询的未来?揭秘Hibernate的神秘力量!
【8月更文挑战第31天】Hibernate查询语言(HQL)是一种面向对象的查询语言,它模仿了SQL的语法,但操作对象为持久化类及其属性,而非数据库表和列。HQL具有类型安全、易于维护等优点,支持面向对象的高级特性,内置大量函数,可灵活处理查询结果。下面通过示例对比HQL与SQL,展示HQL在实际应用中的优势。例如,HQL查询“从员工表中筛选年龄大于30岁的员工”只需简单地表示为 `FROM Employee e WHERE e.age &gt; 30`,而在SQL中则需明确指定表名和列名。此外,HQL在处理关联查询时也更为直观易懂。然而,对于某些复杂的数据库操作,SQL仍有其独特优势。
39 0
|
2月前
|
API Java 数据库连接
从平凡到卓越:Hibernate Criteria API 让你的数据库查询瞬间高大上,彻底告别复杂SQL!
【8月更文挑战第31天】构建复杂查询是数据库应用开发中的常见需求。Hibernate 的 Criteria API 以其强大和灵活的特点,允许开发者以面向对象的方式构建查询逻辑,同时具备 SQL 的表达力。本文将介绍 Criteria API 的基本用法并通过示例展示其实际应用。此 API 通过 API 构建查询条件而非直接编写查询语句,提高了代码的可读性和安全性。无论是简单的条件过滤还是复杂的分页和连接查询,Criteria API 均能胜任,有助于提升开发效率和应用的健壮性。
62 0
|
2月前
|
Java UED 开发者
当错误遇上Struts 2:一场优雅的异常处理盛宴,如何让错误信息成为用户体验的救星?
【8月更文挑战第31天】在Web应用开发中,异常处理对确保用户体验和系统稳定性至关重要。Struts 2 提供了完善的异常处理机制,包括 `exception` 拦截器、`ActionSupport` 类以及 OGNL 表达式,帮助开发者优雅地捕获和展示错误信息。本文详细介绍了 Struts 2 的异常处理策略,涵盖拦截器配置、错误信息展示及自定义全局异常处理器的实现方法,使应用程序更加健壮和用户友好。
36 0
下一篇
无影云桌面