flashback 后 恢复现场

这篇具有很好参考价值的文章主要介绍了flashback 后 恢复现场。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

fix:

Since there is no undo command for a truncate, a recovery of the database is 
required to get the data back in the table. This document outlines the steps to 
follow to recover from the truncate command.


This document is intended to give a step by step guide for experienced
users.  It assumes that the some basic knowledge about backup and restore of an
Oracle database is available.


Step by Step solution
-----------------------------

*NOTE:  Always backup the database before starting to recover or restore old
        backups.


   1. Is there an export dump of the table which I can use to restore the data?
       a. yes -> import the file
       b. no  -> go to step 2.

   2. Is the database is archivelog mode ?
       a. yes -> go to step 3.
       b. no  -> go to step 4 
  
   3. The database is in archivelog mode.  This makes it possible to recover the
      database until a moment just before the truncate command.
       a. restore a backup of the database to another location.
       b. recover this database to a moment in time BEFORE the truncate command
          RECOVER DATABASE UNTIL TIME .....
       c. export the table data from this recovered database.
       d. import the data back into the original database
       e. remove the restored database.

   4. Since the database is not in archivelog mode, there is no way to recover
      the database to a time just before the truncate command.
      Contact Oracle Support to discuss the possible options left.

You can also use FLASHBACK to rollback a TRUNCATE


This scenario will show how we can use a combination of FLASHBACK database and also recovery to take a database back in time to undo a TRUNCATE operation and then roll forward the database after the flashback operation to bring it to the current point in time.
 
INSERT ROWS INTO TABLE MYOBJ – THIS WILL BE TRUNCATED
 SQL> insert into test.myobj select * from all_objects;

50496 rows created.

SQL> /

50496 rows created.

SQL> select count(*) from test.myobj;

  COUNT(*)
----------
    100992
 
OBTAIN THE CURRENT SCN – FLASHBACK WILL HAPPEN TO THIS SCN
 SQL> select current_scn from v$database;


          CURRENT_SCN
---------------------
          15633908021

TRUNCATE THE TABLE

SQL> truncate table test.myobj;

Table truncated.

SQL> select count(*) from test.myobj;

  COUNT(*)
----------
         0
 

AT THE SAME TIME OTHER CHANGES ARE HAPPENING IN THE DATABASE AND THESE CHANGES WILL BE RECOVERED AFTER THE FLASHBACK IS DONE
 
SQL> insert into test.myobj2 select * from test.myobj2;

356874 rows created.

SQL> /

713748 rows created.

SQL> commit;

Commit complete.
 
SHUTDOWN THE DATABASE AND PERFORM THE FLASHBACK TO THE SCN BEFORE THE TRUNCATE WAS DONE
 SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area  469762048 bytes
Fixed Size                  2084880 bytes
Variable Size             377491440 bytes
Database Buffers           83886080 bytes
Redo Buffers                6299648 bytes
Database mounted.



SQL> FLASHBACK DATABASE TO SCN 15633908021;

Flashback complete.

 
OPEN THE DATABASE IN READ ONLY MODE AND EXPORT THE TABLE THAT WAS TRUNCATED EARLIER. THIS TABLE WILL BE IMPORTED AFTER THE RECOVERY IS DONE
 SQL> alter database open read only;

Database altered.


SQL>  select count(*) from test.myobj;

  COUNT(*)
----------
         100992

SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
crashdb:/u03/oradata/crashdb/arch> exp file=test.dmp tables=myobj

Export: Release 10.2.0.4.0 - Production on Fri Feb 6 09:53:00 2009

Copyright (c) 1982, 2007, Oracle.  All rights reserved.


Username: test
Password:

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in US7ASCII character set and AL16UTF16 NCHAR character set
server uses WE8ISO8859P1 character set (possible charset conversion)

About to export specified tables via Conventional Path ...
. . exporting table                          MYOBJ          100992 rows exported
Export terminated successfully without warnings.
 
NOW SHUTDOWN THE DATABASE,STARTUP MOUNT AND PERFORM THE RECOVERY 
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.







SQL> startup mount;
ORACLE instance started.

Total System Global Area  696254464 bytes
Fixed Size                  2086616 bytes
Variable Size             184551720 bytes
Database Buffers          503316480 bytes
Redo Buffers                6299648 bytes
Database mounted.
SQL> recover database;-----contrilfile 不要动
Media recovery complete.
SQL> alter database open;

Database altered.

 
AS EXPECTED TABLE MYOBJ WHICH WAS TRUNCATED NOW AGAIN HAS 0 ROWS AFTER THE RECOVERY – WE CAN IMPORT THE DUMP WE TOOK AFTER THE FLASHBACK
 SQL> select count(*) from test.myobj;

  COUNT(*)
----------
         0
 
CONFIRM THAT OTHER COMMITTED CHANGES IN THE DATABASE HAVE BEEN RECOVERED 
SQL> select count(*) from test.myobj2;

  COUNT(*)
----------
  713748

RELATED DOCUMENTS
-----------------------------------
Oracle Server Backup and Recovery Guide

文章来源地址https://www.toymoban.com/news/detail-683302.html

到了这里,关于flashback 后 恢复现场的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库实验7---数据库的备份与恢复

    使用mysqldump命令备份数据库studentsdb的所有表,存于D:下,文件名为all_tables.sql。 在MySQL服务器上创建数据库student1,使用mysql命令将备份文件all_tables.sql恢复到数据库student1中。 使用mysqldump命令备份数据库studentsdb的所有表,存于D:下,文件名为s_c.sql。 在MySQL服务器上创建数据

    2024年02月09日
    浏览(58)
  • 数据库第十章(数据库恢复技术)十一章(并发控制)

    目录 1.事务 2.并发控制 1.事务 事务的特点:ACID 原子性   atom 一致性   consistent 隔离性   isolation 持久性   durable 故障的种类 1.事务内部故障         措施:采取redo重做和undo撤销技术 2.系统故障DBMS         措施:重启 3.介质故障         硬件损坏 4.计算机病毒   数据恢

    2024年02月09日
    浏览(59)
  • Oracle 数据库恢复删除的数据

    需求描述: 同事让删除脏数据,结果删错了,需要恢复数据 思路: 利用闪回恢复数据只能恢复15分钟之内的,后面undo空间会被重写,就恢复不了,所以删除数据后,要谨慎再三确认,若发现不对,则利用闪回恢复 先查询删除时的时间节点的快照 查到时间戳之后 闪回恢复数

    2024年01月24日
    浏览(68)
  • 【数据库数据恢复】SQL Server数据表结构损坏的数据恢复案例

    数据库故障分析: SQL server数据库数据无法读取。 经过初检,发现SQL server数据库文件无法被读取的原因是因为底层File Record被截断为0,无法找到文件开头,数据表结构损坏。镜像文件的前面几十M空间和中间一部分空间被覆盖掉,系统表损坏,无法读取。考虑用自动备份文件

    2024年02月11日
    浏览(56)
  • 数据库运维——备份恢复

    数据库备份,数据库为school,素材如下 1.创建student和score表 CREATE  TABLE  student ( id  INT(10)  NOT NULL  UNIQUE  PRIMARY KEY  , name  VARCHAR(20)  NOT NULL , sex  VARCHAR(4)  , birth  YEAR, department  VARCHAR(20) , address  VARCHAR(50)  ); 创建score表。SQL代码如下: CREATE  TABLE  score ( id  INT(10)  NOT NU

    2024年02月16日
    浏览(63)
  • 数据库误删恢复

           经常听说删库跑路这真的不只是一句玩笑话,若不小心删除了数据库,事情很严重。你一个不小心可能会给公司删没。建议研发不要直连生成环境,一般的话都会分配账号权限,生产环境的账号尽量是只读,以防你一个不经意给库或表删除。一定要备份,这很重要,

    2024年02月07日
    浏览(50)
  • 如何备份与恢复MySQL数据库数据

    目录 一、MySQL备份 备份方式 完全备份 差异备份 增量备份 二、常见的备份方法 物理冷备 专用备份工具 mysqldump 或 mysqlhotcopy 启用二进制日志进行增量备份 第三方工具备份 三、MySQL完全备份 四、数据库完全备份分类 物理冷备份与恢复 mysqldump备份与恢复 五、物理冷备份与恢复

    2024年02月16日
    浏览(64)
  • mysal数据库的日志恢复

    目录 一 物理冷备份  二 mysqldump 备份与恢复(温备份) 三 mgsql中的增量备份需要借助mysql日志的二进制来恢复  小结 一 物理冷备份 systemctl stop mysqld yum -y install xz 压缩备份 tar Jcvf /opt/mysql_all_$(date +%F).tar.xz /usr/local/mysql/data/  验证删数据库或者登陆mysql删除库文件  二 mysql

    2024年02月16日
    浏览(29)
  • mysql数据库备份和恢复

    数据备份可以分为三种, 热备份。 数据库处于运行状态,此时依赖数据库的日志文件进行备份 温备份。 进行数据备份时数据库服务正常进行,但是数据智能度不能写。 冷备份。数据库处于关闭状态,能够够好的保证数据库的完整性。 逻辑备份。使用软件从数据库中提取数

    2024年02月12日
    浏览(59)
  • MySQL数据库备份与恢复

    在项目的开发过程中数据库的备份是非常重要的,为了防止数据库受到破坏,造成不可估量的损失,所以一定要进行数据库的备份,并且需要掌握数据库恢复方法,在发生数据库损坏的时候,能快速进行数据库恢复。 本文主要介绍MySQL数据表备份与恢复主要的三种方法,包括

    2024年02月12日
    浏览(138)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包