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

简介:
/* 2008/06/06
*环境:Windows XP +Oracle10.2.0.1
*循序渐进oracle——数据库管理、优化与备份恢复
*循序渐进oracle第8章: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之前的时间点。



本文转自 Super康 51CTO博客,原文链接:http://blog.51cto.com/zhengkangkang/1966407,如需转载请自行联系原作者

相关文章
|
存储 Oracle 关系型数据库
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
在YMP校验过程中,从yashandb同步至Oracle的数据出现timestamp(0)字段不一致问题。原因是yashandb的timestamp(x)存储为固定6位小数,而Oracle的timestamp(0)无小数位,同步时会截断yashandb的6位小数,导致数据差异。受影响版本:yashandb 23.2.7.101、YMP 23.3.1.3、YDS联调版本。此问题会导致YMP校验数据内容不一致。
|
Oracle 关系型数据库 Java
【YashanDB知识库】Flink CDC实时同步Oracle数据到崖山
本文介绍通过Flink CDC实现Oracle数据实时同步至崖山数据库(YashanDB)的方法,支持全量与增量同步,并涵盖新增、修改和删除的DML操作。内容包括环境准备(如JDK、Flink版本等)、Oracle日志归档启用、用户权限配置、增量日志记录设置、元数据迁移、Flink安装与配置、生成Flink SQL文件、Streampark部署,以及创建和启动实时同步任务的具体步骤。适合需要跨数据库实时同步方案的技术人员参考。
【YashanDB知识库】Flink CDC实时同步Oracle数据到崖山
|
10月前
|
存储 Oracle 关系型数据库
oracle数据恢复—oracle数据库执行错误truncate命令的数据恢复案例
oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原报错等。下面和大家分享一例oracle数据库误执行truncate命令导致数据丢失的数据库数据恢复过程。
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的闪回版本查询
本文介绍了Oracle数据库的闪回版本查询(Flashback Version Query)功能,通过示例详细讲解了其使用方法。闪回版本查询可获取指定时间区间内行的不同版本,利用`versions between`子句实现。文中包含视频讲解,并通过创建测试表、插入数据及执行查询等步骤,演示如何获取历史版本信息和伪列详情,帮助用户深入了解该功能的实际应用。
318 13
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回数据库
Oracle闪回数据库功能类似于“倒带按钮”,可快速将数据库恢复至 earlier 状态,无需还原备份。本文介绍了闪回数据库的使用方法及实战案例:包括设置归档模式、开启闪回功能、记录SCN号、执行误操作后的恢复步骤等。通过具体 SQL 操作演示了如何利用闪回数据库恢复被误删的用户数据。注意,使用此功能前需确保数据库为归档模式。
411 9
|
存储 Oracle 关系型数据库
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回数据归档
本文介绍了Oracle闪回数据归档(Flashback Data Archive)的功能与实现方法。闪回数据归档可将表中的历史数据进行归档,支持全面的历史数据查询,引入了“Oracle Total Recall”概念。文中通过具体实战步骤演示了如何创建和启用闪回数据归档:包括创建表空间、数据归档,设置默认归档,授予用户权限,开启表的归档功能,并展示了误操作后如何通过归档恢复数据。最后通过执行计划验证了数据来源于归档。
323 4
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回事务查询
Oracle数据库的闪回事务查询(Flashback Transaction Query)是闪回版本查询的扩充,可用于审计或撤销已提交的事务。通过`flashback_transaction_query`视图,可生成还原特定事务的SQL语句。本文介绍了其基本概念,并通过实战演示如何使用该功能:从授权、开启UNDO数据增强,到创建测试表和事务,最后利用闪回查询撤销已提交的事务,验证数据恢复效果。附带视频讲解,帮助深入理解。
332 3
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle的闪回删除
本文介绍了Oracle数据库的闪回删除(Flashback Drop)功能,该功能可从回收站恢复已删除的对象至删除前状态。文章详细讲解了回收站的工作原理及操作步骤,包括检查回收站功能是否开启、删除表、查看回收站内容以及使用闪回删除恢复数据等实战操作。通过具体示例,演示了如何恢复被删除的员工表及其数据,并处理同名表冲突问题。文末还附有视频讲解,帮助读者更直观地理解操作流程。
287 1
|
Oracle 关系型数据库 Linux
【YashanDB知识库】通过dblink查询Oracle数据时报YAS-07301异常
【YashanDB知识库】通过dblink查询Oracle数据时报YAS-07301异常

推荐镜像

更多
下一篇
开通oss服务