Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2617656
  • 博文数量: 323
  • 博客积分: 10211
  • 博客等级: 上将
  • 技术积分: 4934
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-27 14:56
文章分类

全部博文(323)

文章存档

2012年(5)

2011年(3)

2010年(6)

2009年(140)

2008年(169)

分类: Oracle

2008-12-29 17:37:21

  下午接到事业部同事的电话,说ASCP运行错误。因为订单急等要下,所以情况很紧急!进入系统查看出错的请求日志,一共有4种类型的请求报错,分别是:基于内存的快照,快照监控程序,快照删除工作流程,基于内存的快照工作流程。分别查看错误日志,发现错误的起源来自快照删除工作流程这个请求。日志已经列出了出错的原因:此程序无法在表MSC_SUPPLIES中进行锁定。措施:稍后重新提交此程序。
  查看这张表是否已经被锁定了:
SQL> select * from dba_objects where OBJECT_NAME='MSC_SUPPLIES';
--这张表是分区表,object_id=87546
SQL> select * from v$locked_object where object_id=87546;
    XIDUSN    XIDSLOT     XIDSQN  OBJECT_ID SESSION_ID ORACLE_USERNAME                OS_USER_NAME                   PROCESS      LOCKED_MODE
---------- ---------- ---------- ---------- ---------- ------------------------------ ------------------------------ ------------ -----------
        25         31     100738      87546        434 APPS                           applprod                       426478                 3
 
--果然是被锁住了,锁的类型是行独占锁。
 
select   p.spid,a.serial#, c.object_name,b.session_id,b.oracle_username,b.os_user_name   from   v$process   p,v$session   a,   v$locked_object   b,all_objects   c   where   p.addr=a.paddr   and   a.process=b.process   and   c.object_id=b.object_id  And b. object_id=87546
 
--获得87546这个对象的一些进程,会话信息。
 
select * from v$session where SERIAL# in(10065,1574)
 
--获得sid,SERIAL#。从v$session里可以看到这个两个session已经是inactive了。kill后重新跑
 
阅读(2701) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~