数据表或记录被锁住,解锁方法,请大家指教!

最近老是碰到数据库中的数据表被锁需要解锁的问题,弄了一番后,现在把方法贡献出来给大家,请大家多指教

1、select * from v$locked_object 查出被锁定的对象,其中object_id是对象的ID,session_id是被锁定对象有session ID;

2、select object_name, object_type from dba_objects where object_id = 刚才查出来的object_id;(根据v$locked_object里的object_id提出来的)

这样来查被锁定这个对象的名字,如果能确定是哪个TABLE被锁并且要解锁,则再执行

3、select sid, serial#, machine, program from v$session where sid =第1步中查出来的session_id;(是根据v$locked_object对应锁定记录的session_id找出来的) 然后

4、alter system kill session ‘sid,serial#’;用来杀死这个会话;

以上几个步骤即能解决对象被锁定问题。

另外附上锁定一个表的语句:

LOCK TABLE tablename IN EXCLUSIVE MODE;将锁定整个表

仅供参考,请大家多指教!

时间: 2024-08-02 00:44:56

数据表或记录被锁住,解锁方法,请大家指教!的相关文章

oracle表锁住 解锁办法

第一种方法: 用系统账户如sys      as  SYSDBA 登录进去 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.object_id=l.ob

SQLITE数据表主键设置Id自增方法

SQLITE数据表主键设置Id自增方法 标签: sqliteintegerinsertnulltableapi 2010-01-12 08:39 35135人阅读 评论(8) 收藏 举报  分类: SQL(11)  版权声明:本文为博主原创文章,未经博主允许不得转载. 搞定了一个困扰许久的问题,原来sqlite中的主键也是可以设置为自增的:)方法就是声明为 INTEGER PRIMARY KEY 的字段可以自动增加.    网上查到资料说,从 SQLite 的 2.3.4 版本开始,如果将一个表

mysql学习笔记——对数据表中记录的操作

对记录的操作,主要有增.删.改.查 一.记录插入命令:insert into 表名(列名,列名, .... ) values(值, 值, ....); 值个数应该列个数相同,值顺序和列顺序相同,值类型和列字段类型匹配 当表名后面省略列名时,values后面要给出所有列的值 插入数据时,字符串添加 单引号 '' ---- 字符型和日期型数据应包含在单引号中 插入数据时,中文乱码问题:将客户端的编码集设置为gbk 修改mysql 配置文件,永久改变客户端编码集 ----- mysql/my.ini

C#将Excel数据表导入SQL数据库的两种方法

最近用写个winform程序想用excel 文件导入数据库中,网上寻求办法,找到了这个经过尝试可以使用. 方法一: 实现在c#中可高效的将excel数据导入到sqlserver数据库中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用bcp,也就是System.Data.SqlClient.SqlBulkCopy 类来实现. using System; using System.Collections.Generic; using System.ComponentMo

oracle数据库表被锁的解锁方法

亲测可用 Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?本文我们主要就介绍一下这部分内容.(1)锁表查询的代码有以下的形式:select count(*) from v$locked_object;select * from v$locked_object;(2)查看哪个表被锁select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,db

【转】MySQL数据表中记录不存在则插入,存在则更新

mysql 记录不存在时插入在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问题的解决方案. 问题:我创建了一个表来存放客户信息,我知道可以用 insert 语句插入信息到表中,但是怎么样才能保证不会插入重复的记录呢? 答案:可以通过使用 EXISTS 条件句防止插入重复记录. 示例一:插入多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的

oracle中出现"数据被另一用户锁住"的解决方法

在oracle中执行: select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time; alter system kill session 'SID,serial#' 版权声明:本文为博主原创文章,未经博主允许不得转载.

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.object_id=l.object_id

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.object_id=l.object_id