Chinaunix首页 | 论坛 | 博客
  • 博客访问: 690563
  • 博文数量: 176
  • 博客积分: 4791
  • 博客等级: 上校
  • 技术积分: 1921
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-24 18:47
个人简介

it江湖漂,怎能不挨刀;一朝机器当,看你怎么着!

文章分类

全部博文(176)

文章存档

2014年(2)

2012年(17)

2011年(27)

2010年(18)

2009年(6)

2008年(21)

2007年(43)

2006年(42)

分类: LINUX

2011-04-02 13:07:32

问题提出:
SQL〉DROP USER USER1 CASCADE
ERROR:ORA-01940: cannot drop a user that is currently connected
由于当前用户正连接到数据库,所以无法删除
解决办法:
1、查询此用户的会话进程,
SQL〉SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME='USER1';
       SID    SERIAL#
---------- ----------
        24      25341
        86      18117
2、结束此用户的所有会话
SQL>ALTER SYSTEM KILL SESSION '24,25341';
System altered.
SQL>ALTER SYSTEM KILL SESSION '86,18117';
System altered.
3、删除用户
SQL〉DROP USER USER1 CASCADE;
经常在oracle的使用过程中碰到这个问题,所以也总结了一点解决方法:)
1)查找死锁的进程:
sqlplus "/as sysdba"
SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID;
2)kill掉这个死锁的进程:
alter system kill session ‘sid,serial#’;  (其中sid=l.session_id)
3)如果还不能解决,
select pro.spid from v$session ses,v$process pro where ses.sid=XX and ses.paddr=pro.addr; 
其中sid用死锁的sid替换。
exit
ps -ef|grep spid
其中spid是这个进程的进程号,kill掉这个Oracle进程。
 
阅读(616) | 评论(0) | 转发(0) |
0

上一篇:治痔疮秘方

下一篇:flahback table

给主人留下些什么吧!~~