http://www.itpub.net/forum.php?mod=viewthread&tid=1761963

以前在数据库维护中,基本都是碰到表被锁的情况,然后就是查找被锁的表相关的信息,通过v$session视图查找到相关的sid和serial#,通过

alter system kill session ‘sid,serial#’

kill掉相关的进程即可。但是今天碰到开发包更新过程中,连接中断,导致开发包一直被锁定的状态,无法操作。

由于以前没有遇到包被锁的情况,所以也没太注意这方面的技术,网上好像也很少相关的信息。当开发找到我的时候 确实也琢磨了好一阵子。

然后又从网上查到一些相关的信息,最后结合,解决问题。这里吧解决方法写下来,供参考!

如有更好的方法,欢迎大神指导学习!!欢迎拍砖

锁表的信息属于dml锁,在v$locked_object中,

但所包的信息属于ddl锁,在dba_ddl_locks中,

首先查找那个进程锁住了该对象,以下是操作过程

sql> Select b.SID,b.SERIAL#   From dba_ddl_locks a, v$session b  Where a.session_id = b.SID    And a.name = 'xxx包名' AND OWNER='登陆用户';

SID    SERIAL#
---------- ----------
       249 27744
       255 10572
       70 49021
       39  9881
       220  1101
       32 33362
       290   828
       264 36682
       266 34873
       93 41887
       193 63309
       115 46955
       186 20919
       84  2125
       62 57709
       41 21572
       320 58450
       285 14303
       133 38681
       221 32723
       39  9881
       220  1101
       193 63309
       115 46955
       62 57709
       133 38681
       221 32723

27 rows selected.

好多信息,这个时候本来可以直接执行

Select spid, osuser, s.program   From v$session s, v$process p  Where s.paddr = p.addr    And s.sid = (sid);

找到相关sid的spid。然后执行kill -9 spid 或者执行

alter system kill session 'sid,serial#'

kill掉进程就可以了,但是一个数据库上面与很多链接用户,都在做同一件事情,你不可以吧其他正常的进程也给kill了吧

显然是不可能的。

如果是这样的情况,你可以直接查找到链接客户端机器锁开启的所有进程,kill掉,避免乱杀无辜!

确认该用户的包是否存在

select * From all_objects where owner='登陆用户'and object_type = 'PACKAGE'   确实存在。其实这步这里可以不做每应该在最前面做,可以看看包的信息-----

终极方法,对锁表和所包应该够有效果

一般开发都是客户端连接数据库服务器。所以查到该用户在当前数据库下的所有会话,记得连客户端的计算机名都查出来,避免乱杀

涉及到数据数据我就不多截图了

sys> select saddr,sid,serial#,username,MACHINE from v$session order by username desC;

SADDR                  SID           SERIAL#      USERNAME                MACHINE
--------            ----------    ----------    ------------------- -----------------------

B54R8510                71          27377          DB1
B5659D50                319            1           DB1

B54A3B28                 32        37270           xxxx                  user-b4b16aa573

这样就可以看到该计算机连接到数据库的所有进程了

现在就可以执行

alter system kill session '32,37270';

执行后再查看

sys> select saddr,sid,serial#,username,MACHINE from v$session order by username desC;

已经没有该客户端的进程了!!搞定

欢迎拍砖哈!!!

Oracle开发包被锁解决办法-终极办法的更多相关文章

  1. Oracle用户被锁解决方法

    .查看用户的proifle是哪个,一般是default: sql>SELECT username,PROFILE FROM dba_users; .查看指定概要文件(如default)的密码有效 ...

  2. Oracle用户被锁原因及办法

    Oracle用户被锁原因及办法   在登陆时被告知test用户被锁 1.用dba角色的用户登陆,进行解锁,先设置具体时间格式,以便查看具体时间 SQL> alter session set nl ...

  3. Oracle导入中文乱码解决办法

    Oracle导入中文乱码解决办法 一.确保各个客户端字符集的编码同服务器字符集编码一致 1-       确定sqlplus字符集编码,如果是windows设置环境变量. 2-       确保Sec ...

  4. 解决ajax的parsererror错误的终极办法(后台传给前台的数据json问题)

    解决ajax的parsererror错误的终极办法(后台传给前台的数据json问题) 出现这个问题的原因是因为后台传给前台的数据出现了问题,ajax对于json的格式特别的严格 下面是会出现这个问题的 ...

  5. MySql无法远程登录以及IP被锁解决办法

    授权 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION;Query OK, 0 rows aff ...

  6. 【小梅哥SOPC学习笔记】SOPC开发常见问题及解决办法集锦

    SOPC开发常见问题及解决办法集锦 一.Symbol 'NULL' could not be resolved 近期在评估使用NIOS II处理器进行项目的开发,我使用的软件是Quartus II 1 ...

  7. 导出oracle 到 mysql的解决办法

    导出oracle 到 mysql的解决办法 使用sqluldr2 命令如下sqluldr2 USER=weibh/1234@dydb file=c:\1.txt sql=sql.sql   FORMA ...

  8. 升级时针对Source oracle home 不存在解决办法

    针对于oracle升级从11.2.0.4升级至12.1.0.1,遇到的问题解决. 运行/oracle/app/product/12.1.0.1/dbhome_1/bin/dbua 后 在选择数据库ho ...

  9. sql索引碎片产生的原理 解决碎片的办法(sql碎片整理)(转)

    本文讲述了SQL SERVER中碎片产生的原理,内部碎片和外部碎片的概念.以及解决碎片的办法和填充因子.在数据库中,往往每一个对于某一方面性能增加的功能也会伴随着另一方面性能的减弱.系统的学习数据库知 ...

随机推荐

  1. Real-time qPCR So Easy?

    Real-time qPCR So Easy? [2016-05-27]       实时荧光定量PCR技术是在定性RCR技术基础上发展起来的核酸定量技术,于1996年由美国Applied biosy ...

  2. Mac 下配置Nginx安装环境配置详细说明

    环境信息: Mac OS X 10.11.1 Homebrew  0.9.5 正文 一.安装 Nginx 1.终端执行: ? 1 2 brew search nginx brew install ng ...

  3. NOIP需要掌握的内容(大致

    1.排序算法(快排.选择.冒泡.堆排序.二叉排序树.桶排序)2.DFS/BFS 剪枝 哈希表3.树   ①遍历   ②二叉树   ③二叉排序树(查找.生成.删除)   ④堆(二叉堆.左偏树.堆排序)  ...

  4. mysql mariadb的VC客户端遇到的问题

    在使用VS2017编写数据库客户端 具体设置可参见以下内容 https://dev.mysql.com/doc/connector-cpp/en/connector-cpp-apps-windows- ...

  5. RecyclerView错误

    1. java.lang.NoClassDefFoundError: android.support.v7.widget.RecyclerView 这个错误真TM见鬼,明明jar包里面就有这个类,工程 ...

  6. Python开课复习-10/16

    import random # random 随机数模块 # print(random.random()) #----float 大于0且小于1之间的小数# print(random.choice([ ...

  7. thymeleaf使用基础教程

    thymeleaf 是新一代的模板引擎,在spring4.0中推荐使用thymeleaf来做前端模版引擎. thymeleaf介绍 简单说, Thymeleaf 是一个跟 Velocity.FreeM ...

  8. Codeforces gym 102062 简要题解

    文章目录 A. Bob and BoB B. Vibranium Gift C. The Blood Moon D. Palindrome and Chocolate E. Jumpy Robot F ...

  9. 2019.01.17 bzoj1854: [Scoi2010]游戏(二分图匹配)

    传送门 二分图匹配菜题. 题意:nnn个二元组(xi,yi)(x_i,y_i)(xi​,yi​),每个二元组可以选一个数总共nnn个数aia_iai​,问将aia_iai​排好序之后从111开始最多可 ...

  10. 2019.01.17 bzoj1853: [Scoi2010]幸运数字(容斥+dfs)

    传送门 搜索菜题,然而第一次没有注意然后爆longlonglong longlonglong了. 题意:称所有数位由6,86,86,8组成的数为幸运数字,问一个一个区间[l,r][l,r][l,r]中 ...