• 快速恢复update了的orcale数据表


    在update的时候 没有写条件 将整个表中的数据全部都更新了,这时候怎么办呢?

    orcale提供了以下的方法产看某一个时间戳, 所执行的sql的语句内容, 同时可以利用该这个时间戳查看当时语句执行显示的结果

    查出需要撤销SQL 的执行时间:

    SELECT last_load_time, sql_text  
    FROM v$sql  
    WHERE last_load_time IS NOT NULL  
    and sql_text like '%你错误执行的sql%'  
    ORDER BY last_load_time DESC; 

    说明:这个语句中除了like里的字段 其他的都是固定的,like中写的是你要恢复的那条sql中的一段 或者全部

    执行结果如下:

    执行结果,找到对应的错误sql执行时间

    在上图的执行结果里, 找到你错误执行的那条sql的时间,我这里错误执行语句的时间是第二条:2017-08-21/11:07:49
    然后通过下面的sql,找回update之前的数据: 

    select * from your_table
    as of timestamp to_timestamp('2017-08-21/11:07:49','yyyy-mm-dd/hh24:mi:ss');

    若是全表恢复:

    1.将错误更新之前的数据新建一张表tableNameCopy 保存

    create table tableNameCopy 

    as select * from tableName 

    as of timestamp to_timestamp('2017-08-21/11:07:49','yyyy-mm-dd/hh24:mi:ss');

    2.删除原表 tableName 中的所有被错误更新的数据

    delete from tableName ; 

    3.将tableNameCopy 表中的数据写入原表 tableName

    insert into tableName select * from tableNameCopy


    ------完美啦~
  • 相关阅读:
    java中equals与hashCode的重写问题
    关于java的二维码的生成与解析
    bootstrap的时间控件使用(双日历)
    Mysql表,列,库的增删查改
    关于js重名方法的先后调用问题
    javascript的比较运算符
    javascript的运算符
    JavaScript的数据类型
    javascript的基本语法
    MAP集合
  • 原文地址:https://www.cnblogs.com/zhanym/p/7403577.html
Copyright © 2020-2023  润新知