Oracle的锁表与解锁
SELECT /*+ rule */ 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,dba_objects o
WHERE l.sid = s.sid
AND l.id1 = o.object_id(+)
AND s.username is NOT Null
--kill session语句
alter system kill session'50,492';
--以下几个为相关表
SELECT * FROM v$lock;
SELECT * FROM v$sqlarea;
SELECT * FROM v$session;
SELECT * FROM v$process ;
SELECT * FROM v$locked_object;
SELECT * FROM all_objects;
SELECT * FROM v$session_wait;
--1.查出锁定object的session的信息以及被锁定的object名
SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username,
l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time
FROM v$locked_object l, all_objects o, v$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid
ORDER BY sid, s.serial# ;
--2.查出锁定表的session的sid, serial#,os_user_name, machine name, terminal和执行的语句
--比上面那段多出sql_text和action
SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#,
l.os_user_name,s.machine, s.terminal,a.sql_text, a.action
FROM v$sqlarea a,v$session s, v$locked_object l
WHERE l.session_id = s.sid
AND s.prev_sql_addr = a.address
ORDER BY sid, s.serial#;
--3.查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode
SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,
s.terminal, s.logon_time, l.type
FROM v$session s, v$lock l
WHERE s.sid = l.sid
AND s.username IS NOT NULL
ORDER BY sid;
这个语句将查找到数据库中所有的DML语句产生的锁,还可以发现,
任何DML语句其实产生了两个锁,一个是表锁,一个是行锁。
杀锁命令
alter system kill session 'sid,serial#'
SELECT /*+ rule */ 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,dba_objects o
WHERE l.sid = s.sid
AND l.id1 = o.object_id(+)
AND s.username is NOT NULL
如果发生了锁等待,我们可能更想知道是谁锁了表而引起谁的等待
以下的语句可以查询到谁锁了表,而谁在等待。
以上查询结果是一个树状结构,如果有子节点,则表示有等待发生。
如果想知道锁用了哪个回滚段,还可以关联到V$rollname,其中xidusn就是回滚段的USN
col user_name format a10
col owner format a10
col object_name format a10
col object_type format a10
SELECT /*+ rule */ lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username User_name,
o.owner,o.object_name,o.object_type,s.sid,s.serial#
FROM v$locked_object l,dba_objects o,v$session s
WHERE l.object_id=o.object_id
AND l.session_id=s.sid
ORDER BY o.object_id,xidusn DESC
http://www.cnblogs.com/swcjd/articles/1150893.html
分享到:
相关推荐
在深入探讨Oracle RAC(Real Application Clusters)集群管理状态为"unknown"的问题之前,我们首先需要理解Oracle RAC的基本概念及其运作原理。Oracle RAC是Oracle数据库的一种高可用性解决方案,它允许多个数据库...
********** 实 例 状 态 ****************** on,status,database_status from v$instance; ********** 数 据 库 状 态 ********************* mode from v$database; ********** 控 制 文 件 状 态 ***************...
DBA相关监控脚本, 用于监控Oracle数据库状态的常用语句
Oracle 默认用户名与密码速查表是 Oracle 数据库管理系统中一个非常重要的组件。 Oracle 默认用户名与密码速查表提供了 Oracle 数据库中各种默认用户名和密码的信息,这些信息对管理员用户非常重要。 Oracle 默认...
自己整理的关于oracle session的状态查看,对新手有一定的帮助,希望您喜欢。
在Oracle 11g RAC环境中,集群状态是非常重要的,因为它直接关系到数据库服务的可用性和稳定性。通过以下命令可以检查集群的整体状态: ```bash [grid@rac02 ~]$ crsctl check cluster ``` 此命令执行后会返回一...
oracle系统状态trace文件分析器 当系统hang住时,或者进程间有阻塞时,你可以产生下面两种跟踪文件,一种是进程状态跟踪文件,一种是系统状态跟踪文件: process state dumps ==> 一个进程的所有对象状态,...
这包括检查 Oracle 控制文件状态、检查 Oracle 在线日志状态、检查 Oracle 表空间的状态等。 3.1. 检查 Oracle 控制文件状态 检查 Oracle 控制文件状态是了解 Oracle 控制文件状态的重要步骤。可以使用 SQL 语句来...
基础巡检是对 Oracle 数据库的基本状态进行检查,包括检查 Oracle 实例状态、Oracle 在线日志状态、Oracle 表空间状态、Oracle 所有数据文件状态、无效对象、所有回滚段状态、Oracle 服务进程、Oracle 监听状态等八...
"oracle数据库性能健康检查脚本" Oracle数据库性能健康检查脚本是一种用于检查Oracle数据库性能的工具,帮助DBA快速检查数据库的健康状况。下面是该脚本中涉及到的知识点: 一、操作系统层检查 * 使用ps命令检查...
管理员可以通过检查对象状态来了解Oracle对象的当前状态,例如控制文件状态、在线日志状态、表空间状态等。 3.1. 检查Oracle控制文件状态 Oracle控制文件状态检查是了解控制文件信息的重要步骤。管理员可以通过...
在日常维护中,需要定期检查 Oracle 实例的状态,包括检查 Oracle 服务进程、监听状态、系统和 Oracle 日志文件等。通过检查这些信息,可以及时发现数据库中的问题,避免数据库的崩溃。 检查 Oracle 实例状态 检查...
在IT领域,尤其是在数据库管理与应用中,Oracle作为一款领先的企业级关系数据库管理系统,其数据表与查询功能是核心组成部分。本次将从给定的文件信息出发,深入解析Oracle数据表与查询的关键知识点,旨在为初学者...
在Oracle数据库管理中,处理死锁进程和释放状态为killed的session是一项关键技能,尤其对于维护数据库性能和稳定性至关重要。以下将详细阐述如何通过一系列步骤有效地关闭Oracle死锁进程,以及如何释放状态为killed...
涉及到数据库开发的地方经常需要重启服务,反复打开service.msc很麻烦,在次一并实现
在 Oracle 对象状态检查中,数据库管理员需要检查 Oracle 控制文献状态、Oracle 在线日记状态、Oracle 表空间状态、Oracle 所有数据文献状态等,以确保数据库的对象状态的完整性和正确性。此外,还需要检查无效对象...
ORACLE对象状态检查是数据库管理员日常工作的又一重要组成部分,包括检查ORACLE控制文件状态、ORACLE在线日志状态、ORACLE表空间的状态、ORACLE所有数据文件状态等。这些检查可以帮助数据库管理员了解ORACLE对象的...
本手册涵盖了数据库日常维护的各个方面,包括数据库基本状况检查、系统和ORACLE日志文件检查、ORACLE对象状态检查、ORACLE相关资源使用情况检查等。 一、检查数据库基本状况 数据库基本状况检查是数据库日常维护的...
* 检查Oracle实例状态:检查Oracle实例状态,确保状态为“OPEN”,数据库状态为“ACTIVE”。 * 检查Oracle服务进程:检查Oracle服务进程,确保至少包含以下进程:ora_dbw0_ORCL、ora_lgwr_ORCL、ora_smon_ORCL、ora_...