Oracle的闪回特性之恢复truncate删除表的数据

SQL> show parameter flashback

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target        integer     1440

flashback功能默认为1440分钟,也就一天时间

数据库闪回状态可以从v$database视图中查询
SQL> select dbid,name,flashback_on,current_scn from v$database;

DBID NAME      FLASHBACK_ON       CURRENT_SCN
---------- --------- ------------------ -----------
2274326636 RISENET   NO                      997660

flashback_on为NO,也就是没有开flashback功能,当truncate删除数据时,无法使用flashback

启动flashback_on(需要数据库在mount状态下打开)

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area  272629760 bytes
Fixed Size                  1248476 bytes
Variable Size             109052708 bytes
Database Buffers          155189248 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
SQL> alter database flashback on;

数据库已更改。

SQL> select dbid,name,flashback_on,current_scn from v$database;

DBID NAME      FLASHBACK_ON       CURRENT_SCN
---------- --------- ------------------ -----------
2274326636 RISENET   YES                          0

SQL> alter database open;

数据库已更改。

SQL> connect scott/mzl
已连接。
SQL> select table_name from user_tables;

TABLE_NAME
------------------------------
SALGRADE
TEST
DEPT_COPY
DEPT_RECOVER
DEPT

SQL> select * from dept;

DEPTNO DNAME          LOC
---------- -------------- -------------
        50 support        denver
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     beijing

SQL> truncate table dept;

表被截断。

SQL> select * from dept;

未选定行

因为truncate是DDL语句,不是DML语句,所以不能闪回查询as of 来恢复

恢复数据:

SQL> connect sys/mzl as sysdba
已连接。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area  272629760 bytes
Fixed Size                  1248476 bytes
Variable Size             117441316 bytes
Database Buffers          146800640 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
SQL> flash database to timestamp
SP2-0734: 未知的命令开头 "flash data..." - 忽略了剩余的行。
SQL> flashback database to timestamp
  2  to_timestamp('2008-06-08 18:22:33','yyyy-mm-dd hh24:mi:ss');

闪回完成。

SQL> alter database open read only;

数据库已更改。

SQL> select * from scott.dept;

DEPTNO DNAME          LOC
---------- -------------- -------------
        50 support        denver
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     beijing
如果数据恢复不够理想,可以关闭数据库继续进行恢复。 如果用'alter database open resetlogs'打开,在想关闭数据库用flashback恢复就不行了
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  272629760 bytes
Fixed Size                  1248476 bytes
Variable Size             117441316 bytes
Database Buffers          146800640 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

SQL> alter database open resetlogs;

数据库已更改。

SQL> select * from scott.dept;

DEPTNO DNAME          LOC
---------- -------------- -------------
        50 support        denver
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     beijing

一旦resetlogs之后,将不能再flashback至resetlogs之前的时间点。

出处:http://blog.163.com/card_2005/blog/static/117810368200910654544146/

Oracle的闪回特性之恢复truncate删除表的数据的更多相关文章

  1. 【Oracle】闪回drop后的表

    本文介绍的闪回方式只适用于:删除表的表空间非system,drop语句中没有purge关键字(以上两种情况的误删除操作只能通过日志找回): 1.删除表后直接从回收站闪回 SCOTT@LGR> d ...

  2. Oracle根据时间恢复已删除提交的数据

    Oracle 根据数据库的时间戳恢复已删除提交的数据 1.选择一个时间点查看表中数据是否是自己想要的数据 Select * from 表名 as of timestamp to_timestamp(‘ ...

  3. Oracle 闪回特性(FLASHBACK DATABASE)

    --===================================== -- Oracle 闪回特性(FLASHBACK DATABASE) --======================= ...

  4. 6. Oracle闪回特性

    Oracle 闪回 (flashback)是9i版本提供的新特性.这一特性:其他数据库(PostgreSQL,Mysql)是羡慕不已.对数据恢复提供非常便捷的方式.闪回技术通常用于快速简单恢复数据库中 ...

  5. Oracle 六闪回技术,flashback

    Flashback 技术基于Undo segment基于内容的, 因此,限制UNDO_RETENTON参数. 要使用flashback 特征,您必须启用自己主动撤销管理表空间. 在Oracle 11g ...

  6. oracle之三闪回flashback

    闪回 flashback 5.1 flashback 的功能:1)利用undo data回溯或撤销提交的数据,2)flashback log 使database 可以恢复到过去某个时间点,可以作为不完 ...

  7. ORACLE 10G 闪回建议

    Flashback Tips The following tips and restrictions apply to using flashback features. Flashback Tips ...

  8. [Oracle]Oracle的闪回归档

    Oracle的闪回归档 场景需求,由于管理数据库的一些核心表,在实施初期会有人为误删除的问题.Oracle 11gR2提供了闪回归档的特性,可以保证不用RMAN来恢复误删除的数据.实践如下: 1.创建 ...

  9. Oracle Flashback 闪回

    Oracle 的闪回技术是一种数据恢复技术,仅能对用户逻辑错误进行恢复, 闪回针对的是提交commit的事务,没有提交的事务,使用rollback 1.闪回版本查询 Flashback Version ...

随机推荐

  1. 20145201《Java程序设计》第7周学习总结

    20145201 <Java程序设计>第七周学习总结 教材学习内容总结 本周学习了课本第十二.十三章内容,即Lambda.时间与日期 第十二章 Lambda 12.1 认识Lambda语法 ...

  2. NaviCat Primium远程连接Oracle 11g数据库操作方法

    说明:作者使用的系统是windows 10 64位系统,使用的软件及插件都是基于64位系统进行安装.一. 软件准备 1.windows 10 64位 操作系统 2.NaviCat Primium 11 ...

  3. Jquery 动态生成的元素绑定事件

    使用 on方法 $("#id1").on("click","#id2",function(){}) 这里要注意的是#id1必须是原来就存在的 ...

  4. Effective C++ 条款02:尽量以const,enum,inline替换 #define

    换一种说法就是宁可以编译器替换预处理器 举例 #define ASPECT_RATIO 1.653 记号ASPECT_RATIO也许从未被编译器看见:也许在编译起开始处理源码前它就被预处理器移走了,于 ...

  5. filebeat配置介绍

    Filebeat Prospector filebeat.prospectors: - input_type: log paths: - /var/log/apache/httpd-*.log doc ...

  6. 从reduce函数说起...

    reduce函数:  方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值, 最终返回的要看函数内部return的内容. 1. 累加器: var ar ...

  7. ArcEngine 坐标系转换

    /// <summary> /// 地理坐标系 转 投影坐标系 /// </summary> /// <param name="x"></ ...

  8. js中object的copy

    一.场景 在js中一个对象(Object)或者是一个数组(Array)在复制的过程中往往不是特别的简单,一般情况下我们会直接将其赋值给另外一个变量名下,就像这样: var a = [1,2,3]; v ...

  9. mac用ssh连接linux云服务器中文乱码或无法显示解决

    问题1:服务器是ubuntu16.04,用mac自带的ssh连接后无法正常输入中文? 解:这种情况一般是终端和服务器的字符集不匹配,MacOSX下默认的是utf8字符集. 打开编辑 .bashrc 文 ...

  10. 【LABVIEW到C#】3》String的操作之Match Pattern Funtion.vi

    C#实现如下 using System; using System.Collections.Generic; using System.Text; using System.Text.RegularE ...