账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    请教各位:oracle表数据delete不了,索表问题
    45
    0

    在数据库表里直接执行语句

    查看哪些对象被锁:

    select object_name, machine, s.sid, s.serial#
    from v$locked_object l, dba_objects o, v$session s
    where l.object_id  =  o.object_id
    and l.session_id = s.sid;

    杀死一个进程:

    alter system kill session 'sid,serial#'; 

    之后,再次查询是没有被锁对象的,此时执行表的delete语句,执行不成功(只是一直在查询时间),请问这是什么问题?


    业务逻辑功能删除时也会锁表,执行逻辑代码如下(若有不完善的地方,请指教一下):

    List<String> delSqls = new ArrayList<>();
    for (String id : ids) {
        String sql2 = " update table1 set name = '1' where id = ?;
        String sql3 = " delete from table2 where id = ?;
        String sql3 = " delete from table3 where id = ?;
        String sql3 = " delete from table4 where id = ;
        
        delSqls.add(sql2);
        delSqls.add(sql3);
        delSqls.add(sql4);
        delSqls.add(sql5);
    }
    dao.executeSql(delSqls);
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 紫夜天狼 普通会员 1楼

      Oracle表数据删除不了或索引问题,这可能有以下几种情况:

      1. 索引问题:可能是表中存在错误的索引,导致数据无法删除。你可以尝试使用以下命令来检查和修复索引: SELECT * FROM user WHERE id = ? FOR UPDATE; 在这个命令中,? 是你想要检查的用户的ID。

      2. 数据量问题:如果表中存在大量的数据,可能会导致数据无法删除。你可以尝试增加表的物理空间,或者删除一些不需要的数据,来减少表的大小。你可以使用以下命令来查看表的大小: SELECT * FROM dba_objects WHERE name = 'your_table_name'; 在这个命令中,'your_table_name' 是你的表名。

      3. 表结构问题:如果你的表结构有问题,例如表中存在错误的字段或者列名,也可能导致数据无法删除。你可以尝试使用以下命令来检查和修复表结构: ALTER TABLE your_table_name RENAME TO your_new_table_name; 在这个命令中,'your_table_name' 是你的表名,'your_new_table_name' 是你的新表名。

      4. 用户权限问题:如果你的用户没有足够的权限删除数据,也可能导致数据无法删除。你可以尝试检查用户的权限: SELECT * FROM user WHERE id = ? FOR UPDATE; 在这个命令中,? 是你想要检查的用户的ID。

      如果以上方法都不能解决问题,你可能需要进一步排查数据的存储和删除逻辑,或者寻求专业的技术支持。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部