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
SELECT 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
2、找出数据库的serial#,以备杀死:
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;
3、杀死该session
alter system kill session 'sid,serial#'
用步骤2中查出来的记录,对应进该语句删除
就是这样子,以下是我操作的方法:
第一步:(只是用于查看哪些表被锁住,真正有用的是第二、第三步)
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
后:
OWNER OBJECT_NAME SESSION_ID LOCKED_MODE
1 BSZCGL TDISPOSE_ACCEPT_F 1115 3
2 BSZCGL TDISPOSE_ACCEPT_F 1097 3
3 BSZCGL TDISPOSE_ACCEPT_Z 1116 3
4 BSZCGL TDISPOSE_ACCEPT_Z 1111 3
5 BSZCGL TDISPOSE_ACCEPT_Z 1103 3
6 BSZCGL TDISPOSE_ACCEPT_Z 1100 3
7 BSZCGL TDISPOSE_ACCEPT_Z 1097 3
8 BSZCGL TDISPOSE_ACCEPT_Z 1092 3
9 BSZCGL TDISPOSE_DAMAGE_Z 1106 3
10 BSZCGL TZC6_22CL 1097 3
可以看出,那些表被锁住
第二步:
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;
后:
USERNAME SID SERIAL# LOGON_TIME
1 BSZCGL 1115 132 2011-12-6 14:51:35
2 BSZCGL 1097 116 2011-12-6 14:51:57
3 BSZCGL 1097 116 2011-12-6 14:51:57
4 BSZCGL 1097 116 2011-12-6 14:51:57
5 BSZCGL 1111 155 2011-12-6 14:56:29
6 BSZCGL 1103 292 2011-12-6 14:57:34
7 BSZCGL 1116 388 2011-12-6 15:04:56
8 BSZCGL 1100 240 2011-12-6 15:08:13
9 BSZCGL 1106 228 2011-12-6 15:26:20
10 BSZCGL 1092 10 2011-12-6 15:26:46
第三步:(关键)
执行:(alter system kill session 'sid,serial#')具体如下:
alter system kill session '1115,132'
alter system kill session '1097,116'
alter system kill session '1111,155'
alter system kill session '1103,292'
alter system kill session '1116,388'
alter system kill session '1100,240'
alter system kill session '1106,228'
alter system kill session '1092,10'
执行成功,会提示执行完毕!
有可能执行完一条之后,其他的ID也跟着消失,执行完3后,在执行2,检查时候清除完毕
oracle 被另一个用户锁定的更多相关文章
- oracle "记录被另一个用户锁定"
出现的原因是有人对某一条数据进行了修改,oracle会通过这个事务记住这条数据,若修改的人没有进行提交或进行回滚记录,oracle是不允许对这条数据在此进行修改的,在这种情况下你要进行修改数据,则会被 ...
- Oracle报错>记录被另外一个用户锁定
原因 当一个用户对数据进行修改时,若没有进行提交或者回滚,Oracle不允许其他用户修改该条数据,在这种情况下修改,就会出现:"记录被另外一个用户锁定"错误. 解决 查询用户.数据 ...
- ORACLE的表被 另一个用户锁定,如何解除..
SELECT object_name, machine, s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv$session s W ...
- oracle授权另外一个用户访问自己创建的数据对象
oracle安装好之后,有一个默认的scott用户,该用户有一个默认的emp表,怎样让新创建的用户也能够访问这个表呢? 授权xiaoming这个用户访问emp表,但是xiaoming只有select权 ...
- oracle中创建一个用户,只能查看指定的视图,如何授权,创建别名
1.create user A identified by Apassword,创建用户,用户名是A,密码是Apassword2.grant connect to A --授予connect权限3.g ...
- oracle如何清空一个用户下的所有表中的数据?
-- 大概 这个样子,如果没有 FK 的话,一下子就都删掉了. begin for x in (select table_name from user_tables) loop execute imm ...
- oracle怎么把一个用户下的表复制给另一个用户?(授予表权限)
//把system读写权限 授权给scottselect 'Grant all on '||table_name||' to scott;' from all_tables where owner = ...
- Oracle 导入导出 创建用户等
localhost:1158/emD:\app\Administrator\product\11.2.0\dbhome_1\bin\imp.exe log path E:\app\Administ ...
- Oracle开发:创建一个用户并分配表空间和分配权限
-- 创建一个用户并分配表空间和分配权限 -- 以sysdba登录 oracle@sha-col-oracle-2:~> sqlplus / as sysdba SQL*Plus: Releas ...
随机推荐
- html状态码
100——客户必须继续发出请求101——客户要求服务器根据请求转换HTTP协议版本 200——交易成功201——提示知道新文件的URL202——接受和处理.但处理未完成203——返回信息不确定或不完整 ...
- php实现二维码
封装函数 function verifyImage($len=3){ //session_start(); $scr="abcdefghijklmnoqprstuvwxyzABCDEFJHI ...
- memcached 实现读锁
memcached锁,网上大多就介绍乐观锁(cas)[1.2.4以上版本,telnet连接上memcache使用status可以查看版本号].核心就是每次写入数据的时候使用 cas($cas_toke ...
- [9018_1592]USACO 2014 Open Silver Fairphoto
题目描述 Farmer John's N cows (1 <= N <= 100,000) are standing at various positions along a long o ...
- Linux网络编程一步一步学【转】
转自:http://blog.chinaunix.net/uid-10747583-id-297982.html Linux网络编程一步一步学+基础 原文地址:http://blogold.chin ...
- 自定义topo遇到的坑
错误:TypeError: __init__() got an unexpected keyword argument 'delay' 解决办法:在创建topo的地方加一个link=TCLink即可, ...
- List的set和add方法
问题描述:[相机]打开记录拍摄地理位置后拍照详情中少“宽度”属性; 原因分析:在listview动态刷新时用set(index,elemet)方法替换了宽度及其值: 解决方法:改为add(index, ...
- JMeter乱码问题的解决
一.JMeter返回数据是乱码 解决办法是: 在JMeter安装路径的bin目录下,以记事本打开文件jmeter.properties, 找到Sampleresult.default.encoding ...
- 【bugfree】安装
我用的是WIN8系统 首先要安装XAMPP,开始里面的Apache和MySQL服务. 在运行Apache服务时报错: ----------------------------------------- ...
- 使用jquery实现省市二级列表
这里讲用到 jquery 的 each 遍历方法 追加 节点或元素方法 append appendTO 以及 remove 清除节点 <script> $(function( ...