oracle数据库锁表问题的解决办法
今天使用oraclepl/sql遇到锁表情况,以前也遇到过都是用完忘了,今天记录下。
1、先登录数据库,使用以下查询语句查询出哪个对象被锁
select t2.username,
t2.sid,
t2.serial#,
t3.object_name,
t2.osuser,
t2.machine,
t2.program,
t2.logon_time,
t2.command,
t2.lockwait,
t2.saddr,
t2.paddr,
t2.taddr,
t2.sql_address,
t1.locked_mode
from v$locked_object t1, v$session t2, dba_objects t3
where t1.session_id = t2.sid
and t1.object_id = t3.object_id
order by t2.logon_time;
2、使用alter语句修改被锁
alter system kill session 'sid,seial#'; --sid,seial#为上一个语句查出的
3、还有实用查询正在使用中的sql可以快速定位到哪个操作导致锁表。
select /*+ ordered */
sql_text
from v$sqltext a
where (a.hash_value, a.address) in
(select decode(sql_hash_value, 0, prev_hash_value, sql_hash_value),
decode(sql_hash_value, 0, prev_sql_addr, sql_address)
from v$session b
where b.sid = '1162') /* 此处1162 为sid*/
order by piece asc;
上一篇: java Spring 之IOC依赖注入
推荐阅读
-
Oracle针对数据库某一行进行操作的时候,如何将这一行加行锁
-
PDO取Oracle lob大字段,当数据量太大无法取出的问题的解决办法
-
关于Oracle中sys、system和Scott用户下的数据库连接问题
-
oracle查看被锁的表和被锁的进程以及杀掉这个进程
-
快速查出Oracle数据库中锁等待的方法
-
sqlserver2014不允许保存更改,阻止保存要求重新创建表的更改问题解决办法
-
Oracle数据库中SP和表之间的关系
-
永久性解决Oracle11g空表导出问题的方法
-
Oracle提示ORA-1652表空间已满的解决办法
-
MFC连接数据库时,无法启动程序,计算机丢失libmysql.dll的问题解决办法