--查询那些用户,操纵了那些表造成了锁机
SELECT s.username,
decode(l.type, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) LOCK_LEVEL,
o.owner,
o.object_name,
o.object_type,
s.sid,
s.serial#,
s.terminal,
s.machine,
s.program,
s.osuser
FROM v$session s, v$lock l, all_objects o
WHERE l.sid = s.sid
AND l.id1 = o.object_id(+)
AND s.username is NOT Null;
--查出被锁的表,和锁住这个表的会话ID
select a.session_id, b.*
from v$locked_object a, all_objects b
where a.object_id = b.object_id;
--查出对应的SQL语句
select vs.SQL_TEXT,
vsess.sid,
vsess.SERIAL#,
vsess.MACHINE,
vsess.OSUSER,
vsess.TERMINAL,
vsess.PROGRAM,
vs.CPU_TIME,
vs.DISK_READS
from v$sql vs, v$session vsess
where vs.ADDRESS = vsess.SQL_ADDRESS
and vsess.sid = (1033);
五、
1.查哪个过程被锁
查V$DB_OBJECT_CACHE视图:
SELECT * FROM V$DB_OBJECT_CACHE WHERE OWNER='过程的所属用户' AND LOCKS!='0';
2. 查是哪一个SID,通过SID可知道是哪个SESSION.
查V$ACCESS视图:
SELECT * FROM V$ACCESS WHERE OWNER='过程的所属用户' AND NAME='刚才查到的过程名';
3. 查出SID和SERIAL#
查V$SESSION视图:
SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='刚才查到的SID'
查V$PROCESS视图:
SELECT SPID FROM V$PROCESS WHERE ADDR='刚才查到的PADDR';
4. 杀进程
(1).先杀ORACLE进程:
ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#';
(2).再杀操作系统进程:
KILL -9 刚才查出的SPID
或
ORAKILL 刚才查出的SID 刚才查出的SPID
六、查找最耗费系统资源的SQL
--CPU
select b.sql_text,
a.buffer_gets,
a.executions,
a.buffer_gets/decode(a.executions , 0 , 1 , a.executions),
c.username
from V$sqlarea a,
v$sqltext_with_newlines b,
dba_users c
where a.parsing_user_id = c.user_id
and a.address = b.address
order by a.buffer_gets desc , b.piece
;
--IO
select b.sql_text,
a.disk_reads,
a.executions,
a.disk_reads/decode(a.executions , 0 , 1 , a.executions),
c.username
from v$sqlarea a,
v$sqltext_with_newlines b,
dba_users c
where a.parsing_user_id = c.user_id
and a.address = b.address
order by a.disk_reads desc , b.piece
;
select s.sid,s.value "CPU Used"
from v$sesstat s,v$statname n
where s.statistic#=n.statistic# and n.name='CPU used by this session'
and s.value>0
order by 2 desc;
分享到:
相关推荐
Oracle数据库查询语句大全是一篇关于Oracle数据库的查询语句总结的文章,文章包含了各种查询语句,包括查询表名、查询用户、查询数据库参数、查询实例名、查询数据库域名、查询服务名、显示当前用户、直接登陆、查询...
### 自动生成Oracle数据库表分析语句 在Oracle数据库管理中,定期进行表分析对于优化查询性能至关重要。通过分析表和索引,Oracle可以更新统计信息,这些信息将被查询优化器用于选择最佳的执行计划。本文将详细介绍...
了解如何查询和解决Oracle数据库中的死锁对于数据库管理员来说至关重要。 首先,我们要明白死锁的四个必要条件: 1. **互斥**:资源不能同时被多个事务占用。 2. **请求与保持**:事务已经占有至少一个资源,但又...
总之,Oracle数据库锁的使用是数据库管理中的重要一环,理解并合理运用这些锁可以帮助我们优化并发性能,防止数据冲突,并确保数据的正确性和一致性。在设计事务和处理并发操作时,应根据业务需求选择合适的锁类型,...
oracle数据库常用操作语句,实现对用户的管理和权限管理。
这是数据库的备份和还原的sql语句,只适用于oracle数据库。
Oracle 数据库语句大全还包括创建表空间、删除表空间、查询表空间基本信息、创建用户、更改用户、锁定用户、删除用户等语句。 二.数据操纵语言(DML) 数据操纵语言(DML)用于操作数据库中的数据,包括插入、...
在这个场景中,我们可以利用批处理文件来简化Oracle数据库的操作,如删除用户、创建用户、创建表和触发器,以及执行其他SQL语句。 首先,我们需要了解如何在批处理文件中连接Oracle数据库。这通常通过Oracle的...
oracle还原数据库基础语句 创建表空间,创建用户,还原语句
Oracle数据库SQL语句大全
ORACLE数据库锁表问题浅析 Oracle数据库锁机制是企业级数据库管理系统中一个非常重要的机制。锁机制的主要目的是为了保证数据的一致性和正确性,在多用户同时访问数据库时,避免数据的不一致和错误。Oracle数据库锁...
Oracle数据库的SQL语句是数据库管理员和开发人员日常工作中不可或缺的一部分。本文将深入解析Oracle SQL语句的基本操作,帮助初学者更好地理解和应用这些技巧,从而提高数据库查询效率。 首先,理解选择最有效率的...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级应用中扮演着核心角色。...总之,掌握Oracle数据库执行查询语句的相关知识和使用OraTracer工具,对于提升数据库的稳定性和效率具有重要意义。
总的来说,这个主题涉及的知识点包括:Windows批处理脚本、Oracle数据库连接、SQL语句(特别是INSERT语句)、数据库连接字符串的构建以及可能的错误处理和调试技巧。对于想要自动化数据库操作的IT从业者,这些都是...
写一条SELECT查询语句 在查询中使用表达式、运算符 对空值的处理 对查询字段起别名 查询字段的连接 第二章 条件查询 WHERE条件查询 在查询中使用表达式、运算符 使用LIKE、BETWEEN、IN进行模糊查询 第三章 单行...
Oracle SQL Profiler,自己设计算法写的一款非常好用的抓取Oracle数据库SQL语句的工具,可以再没有源码的情况下监控ORACLE数据库服务器的v$sqlarea视图抓取出从点击开始按钮到点击结束按钮期间执行过的SQL语句。...
Oracle中用sql语句创建数据库,比较长,一般做了解
ORACLE数据库的一些SQL语句 数据操纵语言DML M = Manipulation 数据操纵语言DML用于改变数据库数据 主要有三种形式: 1) 插入:INSERT 2) 更新:UPDATE 3) 删除:DELETE
Oracle数据库语句精选大全
SQL语句的并行处理是Oracle数据库优化的重要手段,它能够充分利用多处理器或多核心的硬件优势,大幅度提升查询性能,尤其是在大数据量的环境下。然而,实现并行处理需要考虑数据库的配置、数据的分布特性以及系统的...