zoukankan      html  css  js  c++  java
  • Oracle 闪回技术

    1.查看表历史时刻数据

    select * from tab_test AS OF TIMESTAMP to_timestamp('20140917 10:00:00','yyyymmdd hh24:mi:ss');

    2、利用flashback table恢复表到过去某一时刻

    alter table tab_test enable row movement;

    flashback table tab_test to timestamp ('20140917 10:00:00','yyyymmdd hh24:mi:ss');

    alter table tab_test disable row movement;

    3、查看过去某一段时间内对表的操作,以确认需要恢复到的时间点

    select SQL_TEXT,LAST_ACTIVE_TIME from v$sqlarea where LAST_ACTIVE_TIME >to_date('20140917 10:00:00','yyyymmdd hh24:mi:ss') and SQL_TEXT like '%tab_test%';

    4、确认是否开启闪回

    select log_mode,flashback_on from v$database;

    5.开户闪回

    Oracle闪回开启及操作

     

    1. 记录当前时间或SCN

    数据库变动前记录时间或SCN

    SQL> select  to_char(sysdate,'YYYY-MM-DD HH24:mi:ss') from dual;

    SQL> select  current_scn from v$database;

     

     2.开启闪回

    开启闪回需要数据库在归档模型下,所以首先需要开启归档。并且在mount状态下。

    首先查看是否开启闪回:

    SQL> select flashback_on from V$database;

    FLASHBACK_ON

    ------------------

    NO

    如果已经开启了闪回,无须执行下面的操作。

    SQL> alter system set db_recovery_file_dest_size=30G scope=both;

    SQL> alter system set db_recovery_file_dest='D:Oracle11g'  scope=both;

    SQL> shutdown immediate

    SQL> startup mount

    SQL> alter database archivelog;

    SQL> alter database flashback on;

    SQL> alter database open;

    再进行确认:

    SQL> select flashback_on from V$database;

    FLASHBACK_ON

    ------------------

    YES

     

    3.闪回操作

    3.1闪回数据库

    SQL >flashback database to time to_date(xxx);

    SQL >flashback database to time TO_TIMESTAMP (xxx);

    SQL >flashback database to scn xxx

    SQL >flashback database to sequence xxx thread 1

    SQL>flashback database to timestamp(sysdate-1/24)

    3.2闪回表

    先要开启row movement

    SQL>alter table emp enable row movement;

    SQL >FLASHBACK TABLE tablename TO TIMESTAMP (JUL-07-2013, 02:33:00) 

    SQL >FLASHBACK TABLE employee TO SCN 133456;

    SQL >FLASHBACK TABLE t1 TO TIMESTAMP '2013-03-03 12:05:00' ENABLE TRIGGERS;

    闪回表可以分为两种情况,一种是闪回到指定时间或SCN,一种是drop闪回

    闪回到指定时间或SCN:

    SQL>flashback table emp to timestampto_timestamp

    ('2013-09-12 08:00:00','yyyy-mm-ddhh24:mi:ss');

    SQL>flashback table emp to scn 11064241;

     DROP闪回:

    如果误对表做了drop操作,可用下面的方法闪回

    SQL>flashback table s_emp1 to before drop;

    可以以下面的方法闪回

    SQL>flashback table flashbacktable to before drop rename to a;

    SQL>flashback table "回收站实体名"to before drop; 

    --闪回表后表的索引也会回来,但是索引名还是在recyclebin中显示的名字,所以使用 alterindex“ bin$xxx” rename to xxxx命令修改索引名称。

    SQL>alter index "BIN$s6TKiw4uafDgRAAVF3jtoA==$0"

    rename to PK_PC_STIM_INJ_ENHANCE_MON

     

    3.3查询闪回(flashbackquery)

    delete数据库里的数据都删除了以后,还commit,采用下面的方法实现数据的还原

    ·查询过去某指定时间点数据库中的数据。

    SQL>select* from emp as of timestamp to_timestamp('2013-07-05 08:00:00','yyyy-mm-ddhh24:mi:ss');

    ·删除表后将数据添加到原表中    

    SQL>insertinto emp select * from emp

    as of timestamp to_timestamp

    ('2013-07-05 08:00:00','yyyy-mm-ddhh24:mi:ss');

     

    3.4 删除闪回(flashbackdrop)

    闪回被dropped的基表,

    ·显示回收站信息

    SQL>show recyclebin

    --select* from user_recyclebin

    ·彻底删除基表

    SQL>drop table s_emp1 purge ;

    ----彻底删除一个表用PURGE,这样的删除的表不能闪回。

    ·清除回收站

    SQL>purge recyclebin;

    ·查数据库选项产品:

    SQL>select * from V$option;

    · truncate删除后不保留存储空间,而Delete删除后,保留存储空间,如果要删掉这些存储空间,以释放空间,可以执行以下命令:

    SQL>alterttable emp deallocate unused;

    ·如果还要保留一部分,可以用:

    SQL>alterttable emp deallocate unused 200k;

     

    4.关于数据闪回的几点说明

    *系统表空间数据不得闪回

    *实体在数据库保存时间不可保证,保留时间取决于系统运行状况,可能是几秒钟,也可能是几个月。

    *基表闪回时,建立在表上的约束不可保证

  • 相关阅读:
    简单的模板解析函数
    HTML通过事件传递参数到js 二 event
    HTML通过事件传递参数到js一
    通过this获取当前点击选项相关数据
    LeetCode 20. 有效的括号(Valid Parentheses)
    LeetCode 459. 重复的子字符串(Repeated Substring Pattern)
    LeetCode 14. 最长公共前缀(Longest Common Prefix)
    LeetCode 168. Excel表列名称(Excel Sheet Column Title)
    LeetCode 171. Excel表列序号(Excel Sheet Column Number) 22
    LeetCode 665. 非递减数列(Non-decreasing Array)
  • 原文地址:https://www.cnblogs.com/Acamy/p/6550940.html
Copyright © 2011-2022 走看看