解锁用户及数据库表,锁死进程

Posted GLing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解锁用户及数据库表,锁死进程相关的知识,希望对你有一定的参考价值。

 1 一丶解锁用户
 2 --修改时间格式
 3 alter session set nls_date_format = yyyy-MM-dd hh24:mi:ss;
 4 
 5 --查询锁住时间
 6 select username,lock_date  from dba_users where username like ODS;
 7 
 8 --查询用户状态
 9 select username,account_status from dba_users where username IN (od,yxx);
10 
11 --解锁用户
12 alter user yxx account unlock

 

 1 二、解锁数据表
 2 --01.注意你的用户有没有权限问题
 3 SELECT p.spid, a.serial#, c.object_name, b.session_id, b.oracle_username,
 4        b.os_user_name
 5   FROM v$process p, v$session a, v$locked_object b, all_objects c
 6  WHERE p.addr = a.paddr AND a.process = b.process
 7        AND c.object_id = b.object_id
 8 ---1、带有表名称查询
 9 select object_name, machine, s.sid, s.serial#
10   from v$locked_object l, dba_objects o, v$session s
11  where l.object_id  =  o.object_id
12    and l.session_id = s.sid;
13 
14 --2、获取出sid,serial 用于解锁的参数
15  
16   select s.username, s.osuser, s.sid, s.serial#, p.spid  from v$session s,v$process p
17 where s.paddr = p.addr    and s.username is not null;
18 --2.1、拼接sql
19    select alter system kill session ,‘‘‘‘||trim(t2.sid)||,||trim(t2.serial#)||‘‘‘;
20 from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time; 
21 
22 ---2:执行sql进行解锁
23 alter system kill session   198,12231;
24 alter system kill session   194,37558;

 

三、解锁锁死系统进程
--查询进程ID
SELECT a.username, c.spid AS os_process_id, c.pid AS oracle_process_id
  FROM v$session a, v$process c
 WHERE c.addr = a.paddr
   and a.sid =2323
   and a.serial# =213;
---kill掉进程
linux 执行:KILL -9 SPID;
window执行:orakill ORACLE_SID spid 

 

以上是关于解锁用户及数据库表,锁死进程的主要内容,如果未能解决你的问题,请参考以下文章

sql 解决表锁死

查询oracle 数据库里都有哪些表锁死

ORACLE 如何查询被锁定表及如何解锁释放session

ORACLE 如何查询被锁定表及如何解锁释放session

查看oracle是不是锁表

数据库查询锁表以及解锁表的sql