--查询那些用户,操纵了那些表造成了锁机
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常用经典数据库管理sql语句,涵盖数据库日常维护和管理的SQL语句。
oracle数据库常用操作语句,实现对用户的管理和权限管理。
这是数据库的备份和还原的sql语句,只适用于oracle数据库。
oracle数据库语句大全系统的介绍oracle常用数据库相关语句。详尽的实例让你即看即用,更是零基础者实用的学习资料。
自动生成表分析sql语句和索引分析语句: 表分析语句 analyTab.sql SELECT 'ANALYZE TABLE ZFMI.'||TABLE_NAME||' COMPUTE STATISTICS ;' FROM USER_TABLES; ----------------------------------------------...
Oracle数据库常用dos命令,sql语句分类介绍,常用sql语句,oracle函数大全。oracle创建表空间,创建用户并授权。
oracle还原数据库基础语句 创建表空间,创建用户,还原语句
Oracle数据库SQL语句大全
清楚的记载了Oracle数据库的操作,带有截图,oracle数据库语句
ORACLE 学习之常用数据库系统表语句,本文介绍系统表的相关sql 常用语句,方便日常工作和学习,适合学习Oracle的人群使用。
写一条SELECT查询语句 在查询中使用表达式、运算符 对空值的处理 对查询字段起别名 查询字段的连接 第二章 条件查询 WHERE条件查询 在查询中使用表达式、运算符 使用LIKE、BETWEEN、IN进行模糊查询 第三章 单行...
Oracle数据库 中的sql语句基本操作详细解释 有助初学者 学习
Oracle中用sql语句创建数据库,比较长,一般做了解
NULL 博文链接:https://yanggx.iteye.com/blog/702761
ORACLE数据库的一些SQL语句 数据操纵语言DML M = Manipulation 数据操纵语言DML用于改变数据库数据 主要有三种形式: 1) 插入:INSERT 2) 更新:UPDATE 3) 删除:DELETE
Oracle数据库语句精选大全
ORACLE数据库优化之SQL语句的并行处理.pdf
自己做数据库管理积攒的一些SQL语句,主要是针对用户,表空间的一些操作