ORACLE 查询被锁住的对象,并结束其会话的方法_oracle

使用Oracle时,发现有表被锁,又不知道是谁(或者哪个程序)锁的,怎么办 ?

两步走:

1、查找出被锁对象的会话ID和序列号

执行如下SQL:

-- 查询出被锁对象,并提供 kill 脚本
SELECT S.SID, S.MACHINE, O.OBJECT_NAME, L.ORACLE_USERNAME, L.LOCKED_MODE, S.OSUSESR,
 'ALTER SYSTEM KILL SESSION '''|| S.SID || ', '|| S.SERIAL#||''';' AS KILL_COMMAND
 FROM V$LOCKED_OBJECT L, V$SESSION S, ALL_OBJECTS O
 WHERE L.SESSION_ID=S.SID AND L.OBJECT_ID=O.OBJECT_ID

2、KILL

复制出第1步查询结果中的 KILL_COMMAND 字段值,执行。

-- kill 的基本语法

ALTER SYSTEM KILL SESSION '$SID, $SERIAL#';

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索oracle
oracle 结束会话、oracle表锁住了怎么办、oracle数据库被锁住、oracle数据库表被锁住、oracle 表锁住,以便于您获取更多的相关知识。

时间: 2024-09-25 00:29:40

ORACLE 查询被锁住的对象,并结束其会话的方法_oracle的相关文章

oracle 使用sql获取数据库表、表的字段的多种方法_oracle

--第一种方法: 查询dba_tab_columns 复制代码 代码如下: select COLUMN_NAME,DATA_TYPE,DATA_LENGTH from dba_tab_columns where table_name =upper('表名') order by COLUMN_NAME --这种方法需要有DBA权限 --第二种方法: 查询user_tab_cols select COLUMN_NAME,DATA_TYPE,DATA_LENGTH from user_tab_cols

synchorized和ReetrantLock锁住的分别是什么

问题描述 synchorized和ReetrantLock锁住的分别是什么 10C synchorized 是锁住了对象,对于同一个类内的其它带synchorized的方法都是一样的.只要有一个线程执行synchorized方法,其它带synchorized方法的线程就会被阻塞?而ReetrantLock锁住的是线程,非此线程一旦运行到带锁部分就会被挂起,对于其它的线程调用其它的lock块是不会影响的? 解决方案 ReentrantLock 拥有Synchronized相同的并发性和内存语义,此

怎样锁住电脑桌面

我们总是喜欢我自己设置一个好看的桌面背景,根据个人喜好不同,有的时候会被别 人改动.如何锁住这些桌面背景不让别人随意改动呢.下面我给大家简单解释一下如 何锁住桌面背景. 首先打开"开始→运行",输入"regedit"打开注册表编辑器,找到分支 "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersion Policies", 新建一个ActiveDeskop项,再在右侧窗口中新建一个名为Noch

oracle 常见等待事件及处理方法_oracle

看书笔记db file scattered read DB ,db file sequential read DB,free buffer waits,log buffer space,log file switch,log file sync 我们可以通过视图v$session_wait来查看系统当前的等待事件,以及与等待事件相对应的资源的相关信息,从而可确定出产生瓶颈的类型及其对象.v$session_wait的p1.p2.p3告诉我们等待事件的具体含义,根据事件不同其内容也不相同,下面就一

sqlserver:查询锁住sql以及解锁方法

查看被锁表语句 --查看被锁表: SELECT request_session_id spid, OBJECT_NAME( resource_associated_entity_id ) tableName FROM sys.dm_tran_locks WHERE resource_type = 'OBJECT' ORDER BY request_session_id ASC --spid 锁表进程 --tableName 被锁表名 --根据锁表进程查询相应进程互锁的SQL语句 DBCC INP

oracle 记录被另一个用户锁住

  oracle数据中删除数据时提示"记录被另一个用户锁住" 解决方法   1 查看数据库锁,诊断锁的来源及类型   select object_id,session_id,locked_mode from v$locked_object;     或者用以下命令:    select b.owner,b.object_name,l.session_id,l.locked_mode    from v$locked_object l, dba_objects b    where b.

spring oracle 锁表-为什么insert操作会把整张表都锁住呢?

问题描述 为什么insert操作会把整张表都锁住呢? 项目中遇到一个很奇怪的问题: 问题描述:现在需要从项目外部导大量的数据到项目内,这个时候我起了一个spring事务往很多张表中去插入数据,这个时候其他用户访问系统去更新旧的数据的时候发现表被锁了.也就是说我在导入数据的时候,其他用户都不能对系统的表进行相应的更新操作.这是为什么???? 解决方案 查的时候不会锁住,只有曾删改才会 解决方案二: 当ORACLE执行insert等DML语句时,会首先自动在所要操作的表上申请一个TM锁,当TM锁获得

mysql数据库select查询的时候老是被锁住,大家有什么好的建议

问题描述 公司做了个项目,所有的update和insert操作在一个数据库服务器上,查询select在另一台数据库服务器上,原意是为了减压,然后利用了实时同步备份模式,即当一个数据库发生更新操作的时候立马就同步,课问题是在查询的数据库服务器上的表老是被锁住导致无法同步数据库,数据库用的是mysql,数据量比较大,大多都是当有列表请求的时候被锁,大家说说有什么办法可以对查询优化下,查询语句已经算是优化的不错了.请各位高手赐 教!!!!问题补充:先谢谢robbin的提议!!今天有把robbin的提议

如何检测被锁住的Oracle存储过程及处理办法汇总(转)

  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