• 技术文章 >数据库 >mysql教程

    Oracle kill session.delete 600w(1.25G)数据 1个多小时无结果

    2016-06-07 17:09:32原创482

    mx表中数据太多,查询变慢,备份去年2011年的,然后将2011年数据删掉。delete from t_busi_presend_mx where cjsjlt;to_date(

    mx表中数据太多,查询变慢,备份去年2011年的,然后将2011年数据删掉。

    delete from t_busi_presend_mx where cjsj

    这个语句,执行1个多小时了,没有反应,,现在决定,把这个session删掉,想别的方法来删除这600W数据,kill session方法如下(按顺序执行sql)。某DBA给我分析:

    1.select sum(bytes/1024/1024/1024) GB ,status from dba_undo_extents group by status;

    kill session之前:

    [sql]

    kill session之后:

    [sql]

    答:

    这个delete 操作,会将删除的数据放到 undo 回滚段里面,如果回滚段空间不够,就会等待,你的回滚段只有 14m,可用,所以这个删除操作停在这了。

    两个办法

    1 等

    2 把这个进程杀掉

    问:

    等 应该是没有结果的吧 因为数据有1.25G 回滚段只有14M 怎么等都等不来吧 这种情况 会有结果么 ? 不是只有14M回滚段?
    答:

    不知道啥时候出结果,因为你的数据库一直在用。不是 只有 14m,而是只有 14m 可用。你现在没有删除成功,能回滚。杀进程吧。

    2.select sid,serial#,logon_time,username,program,machine,event from v$session
    where wait_class <> 'Idle'
    order by logon_time desc
    --查当前登录到数据库的会话

    kill session之前:

    我的电脑名:LEJER0FQOX6AT6H.所以上面第二行记录是我刚才执行的delete会话。

    linux

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:Oracle并发控制、事务管理学习笔记 下一篇:MySQL外键关联问题
    线上培训班

    相关文章推荐

    • MySQL中什么是索引?索引存储模型浅析• 步骤分明地教你在MAC上安装MYSQL• 分析MySQL用户中的百分号%是否包含localhost?• 聊聊mysql的cmake方式• 怎么快速使用MySQL Sandbox部署mysql

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网