FRM-40654问题解决

转自:http://blog.csdn.net/bubblekitty/article/details/5441073

FRM-40654:已更新记录。重新查询块,已查看更改!

FRM-40654问题解决 - 居变 - ------居变------
 


发现这样的问题有两种可能性:

1.  表被锁定。查看是否有被锁定请参考下文查询,并利用SQL进行解锁。

在erp中我们常常会遇到表锁定的问题,那么我们如何去查那些表被锁定了呢?一下是fifali提供的一个查找解锁表的SQL语句,在执行该SQL后你可以杀掉该表对应的 DB_PID进程。

杀进程的语句为:

alter system kill session 'session_id,serial#';

以下为查询SQL :

  1. SELECT
    dob.OBJECT_NAME Table_Name ,
    lo.LOCKED_MODE,
    lo.SESSION_ID,
    vss.SERIAL#,
    vps.spid,
    vss.action Action,
    vss.osuser OSUSER,
    vss.process AP_PID,
    VPS.SPID DB_PID,
    'alter system kill session ' || '''' || lo.SESSION_ID || ',' ||vss.SERIAL# || ''';' kill_command
    from
    v$locked_object lo, dba_objects dob, v$session vss, V$PROCESS VPS
    where lo.OBJECT_ID = dob.OBJECT_ID
    and lo.SESSION_ID = vss.SID
    AND VSS.paddr = VPS.addr
    order by 2, 3, DOB.object_name;


查找被锁表的SQL:

  1.    select B.SID,
       b.USERNAME,
       b.MACHINE,
       a.OBJECT,
       'alter system kill session ' || '''' || b.SID || ',' || b.SERIAL# ||
       ''';' kill_command
       FROM V$ACCESS A, V$SESSION B
       WHERE A.SID = B.SID
       and upper(a.OBJECT) like '%MTL_DESCR_ELEMENT_VALUES%'
       and a.TYPE = 'TABLE'

    select B.SID, b.USERNAME, b.MACHINE, a.OBJECT, 'alter system kill session ' || '''' || b.SID || ',' || b.SERIAL# || ''';' kill_command FROM V$ACCESS A, V$SESSION B WHERE A.SID = B.SID and upper(a.OBJECT) like '%CUX%' and a.TYPE = 'PACKAGE'

2.  该表中有一个看不见的字符(空格结尾)遇到该问题,请用数据库后台将空格去掉(首先尝试前台诊断是否可以修改)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值