oracle闪回数据库flashback database的用法

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

        在传统的数据库恢复中,如果为了应对用户错误,通常需要进行基于时间点的不完全恢复,恢复的过程需要恢复数据文件,归档日志、再通过日志应用恢复到指定的时间点,这种恢复可能需要更长的时间,而flashback database可以避免文件恢复过程,从而缩短恢复时间。

       flashback database的原理:要使用flashback database,必须先启用此功能 。当启用flashback database后,数据库会定期将发生变化的数据块的前镜像写入闪回日志的日志文件中,在数据库闪回时,这些数据块可以直接被复制过来以满足数据库的恢复需求,同时redo log可以被应用以辅助恢复到理精确的时间点,从而极有的缩小恢复时间。不过使用flashback database有一些限制:

1)、flashback database 不能解决media failue,对于这种错误只能是rman恢复;

2)如果删除了数据文件或者利用shrink技术缩小数据文件大小,这时是不能用flashback database技术回退到改变之前的状态,这时间就必须利用RMAN把删除之前或者缩小之前的文件备份restore出来,然后利用flashback  database执行剩下的恢复;

3)如果控制文件是从备份中恢复出来的,或者是重建的控制文件,也不能使用flashback database;

4)使用flashback database 所能恢复到的最早的scn,取决于flashback log中的记录的最早的scn.


下面通过scott用户下的表作为测试:

步骤1:查看rvwr进程:

flashback database 的日志文件不是由传统的lgwr进程写入,而是由recovery  writer (RVWR)的进程写入(这是由oracle 10g新增的一个进程):

[oracle@localhost ~]$ ps -ef|grep rvwr

步骤2:启用flashback  database的功能

SQL> startup mount;
ORACLE instance started.
Total System Global Area 2405122048 bytes
Fixed Size    2255592 bytes
Variable Size  603981080 bytes
Database Buffers 1778384896 bytes
Redo Buffers   20500480 bytes
Database mounted.


SQL> alter database flashback on;
Database altered.
SQL> alter database open;
Database altered.
SQL> select dbid,name,flashback_on,current_scn from v$database;
      DBID             NAME       FLASHBACK_ON   CURRENT_SCN
    ----------            ---------      ------------------           -----------
1821627089    WUTONG    YES           1133591

SQL> show parameter db_flashback
NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target     integer 1440

步骤3:在scott用户下查询有哪些表,并且分别查询emp和test_emp中的数据量

SQL> conn scott/tiger
Connected.
SQL> select * from tab;
TNAME       TABTYPECLUSTERID
------------------------------ ------- ----------
BONUS       TABLE
DEPT       TABLE
EMP       TABLE
SALGRADE       TABLE
TEST_EMP       TABLE

SQL> select count(*) from scott.emp;

COUNT(*)
----------
14

SQL> select count(*) from scott.emp;

COUNT(*)
----------
14

步骤4:设置会话时间格式,分别用truncate清除test_emp和emp表

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
SQL> select sysdate from dual;
SYSDATE
-------------------
2016-09-12 03:37:30

SQL> truncate table test_emp;
Table truncated.
SQL> select sysdate from dual;
SYSDATE
-------------------
2016-09-12 03:38:39
SQL> truncate table emp;
Table truncated.

步骤5:把数据库启动到mount下,以timestamp/scn/sequence方式闪回,并且以只读方式打开数据库

SQL> select sysdate from dual;
SYSDATE
-------------------
2016-09-12 03:39:05
SQL> conn / as sysdba
Connected.
SQL> startup mount;
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 2405122048 bytes
Fixed Size    2255592 bytes
Variable Size  603981080 bytes
Database Buffers 1778384896 bytes
Redo Buffers   20500480 bytes
Database mounted.



SQL> flashback database to timestamp to_timestamp('2016-09-12 03:37:30','yyyy-mm-dd hh24:mi:ss');
Flashback complete.

SQL> alter database open read only;
Database altered.
SQL> select count(*) from scott.emp;
  COUNT(*)
----------
14
SQL> select count(*) from scott.test_emp;
  COUNT(*)
----------
14

最后以resetlogs方式打开数据库,但是一旦以resetlogs方式打开数据库就不能再flashback 至resetlogs之前的时间点了

此时可以看到数据已经恢复,如果数据恢复的不够理想,则关闭数据库后重新进行上述恢复。

Oracle DB执行闪回数据库 • 配置闪回数据库 • 执行闪回数据库操作 • 监视闪回数据库     闪回数据库 闪回数据库操作: • 作用类似于数据库的倒带按钮 • 可以在用户造成了逻辑数据损坏的情况下使用   闪回数据库 使用闪回数据库,通过还原自先前某个时间点以来发生的所有更改,可快速将数据库恢复到那个时间的状态。因为不需要还原备份,所以此操作速度很快。可以使用此功能还原导致逻辑数据 阅读详情

相关推荐

Oracle闪回数据库Oracle闪回技术】(二)

Oracle默认是不开启闪回数据库的。如果开启闪回数据库的前提条件是,开启Oracle归档模式并启用闪回恢复区。 因为闪回日志文件存放在闪回恢复区中,如果在RAC环境下,必须将闪回恢复区存储在集群文件或者ASM文件中。

奋斗的阿杰的博客 1641

oracle flashback database,flashback database 使用及注意事项

适用版本:10.2+(9i+可能也适用)读者阅读前提:1. 知道flashback2. 知道oracle 的启动模式和基本系统视图v$database中的flashback_onOracle 在安装后默认状态下flashback database是关闭的,查看flashback database是否开启可通过下面语句查看:select flashback_on from v$database;得到...

weixin_28765561的博客 699

Flashback】启用Flashback Database闪回数据库功能

若想顺利的使用闪回数据库功能,需要先将数据库置于闪回数据库状态。此文记录开启闪回数据库功能的步骤,注意调整过程需要重启数据库并确保数据库处于归档模式。1.确认数据库是否开启Flashback Database功能 若未开启,则继续,若已经开启,请从此小文儿飘过~~SYS@ora11g> select flashback_on from v$database;FLASHBACK_ON -------

高秀磊 1010

闪回数据库Flashback Database

 Flashback Database闪回数据库  使用闪回数据库可以将数据库快速的闪回到过去某个时间点。在启用闪回数据时,会将修改过的块的前映像作为闪回数据库日志保存在闪回恢复区中,如出现逻辑坏块或用户错误操作需要恢复到过去的时间点,闪回数据库将还原数据库的前映像,然后使用归档日志和redo前滚到期望恢复的时间点,因为无需还原数据库的数据文件,所有此过...

weixin_34362991的博客 212

Oracle Flashback(闪回) 详解.

通常我们对数据库进行了误操作时, 需要把数据库Rollback到

nvd11的专栏 9010

Oracle 闪回特性(FLASHBACK DATABASE)

--===================================== -- Oracle 闪回特性(FLASHBACK DATABASE) --===================================== 闪回技术通常用于快速简单恢复数据库中出现的认为误操作等逻辑错误,从闪回的方式可以分为基于数据库级别闪回、表级别闪回、事务 级别闪回,根据闪...

anjichan4261的博客 363

Oracle 闪回特性 FLASHBACK DATABASE

Oracle 闪回特性 FLASHBACK DATABASE

fsfsdfsdw的博客 280

FLASHBACK介绍

在介绍flashback之前先介绍下undo_retention相关参数 undo_retention:表示undo数据的过期时间。系统默认这个时间设置为900即15分钟。但要注意,保证undo数据在这个时间内有效的前提是undo表空间有                        足够的空间存储。如果undo空间已满且又有新事务执行则会覆盖原来的undo数据而不管undo数据是否...

weixin_34375054的博客 516

oracle闪回时间戳

需要在表名后指定as of timestamp子句或as of SCN子句,其中as of timestamp用于指定早期时间点,A.flashback database 闪回数据库,简单理解就是把数据库闪回到某个以前的时间点,能恢复到的最早的SCN, 取决与Flashback Log中记录的最早SCN。C.flashback query 闪回表记录,用于数据表记录的恢复。-3. 删除 ,先记下时间点,2012-04-17 17:43:46。7.晚于区间的数据 回到了3080 ,说明时间点之后的修改丢失。

朝和 990

flashback六大技术之flashback transaction query 和flashback table

环境: 15:25:40 hr@ORCL (^ω^) select * from v$version where rownum=1; BANNER ------------------------------------------------------------------------------- Oracle Database 10g Enterprise Edition R...

数据库天地 82

Oracle 数据库使用笔记

Oracle 数据库的substr函数 格式1: substr(string string, int a, int b); 格式2:substr(string string, int a) ; 解释: 格式1: 1、string 需要截取的字符串 2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取) ...

单人影的博客 506

使用flashback实验1

简单使用基于SCN的flashback,10.2.0.1 for windows实验如下:SQL> select * from tt;NAME STATUS---------------------------------...

146

Oracle数据库闪回FLASHBACK命令总结

Oracle数据库闪回FLASHBACK命令总结 一、闪回查询: 1. 方法一 SQL> select current_scn from v$database; CURRENT_SCN -----------    43491990 适当的缩小scn的值,可以查到以往的数据 SQL> select * from mytest1 as of scn 43491990;  ID NA

雨花石 1089

oracle flashback 用法,使用oracle flashback database

1闪回的方法使用闪回方法的目的:修正用户错误。1.1FLASHBACK DATABASEflashback data1base闪回到过去的某一时刻闪回点之后的所有工作都将丢失必须使用resetlogs创建新的场景并打开数据库(一旦resetlogs之后,将不能再闪回至resetlogs之前的时间点)常用的场合:。Truncate a table。删除了一个用户。删除了一个表空间Flashback ...

weixin_42437067的博客 1102

Oracle Flashback Database闪回恢复

Oracle Flashback Database闪回恢复 author:润明 2012-2-6  QQ:226399587  http://blog.csdn.net/runming918 一、Flashback Database介绍 如果说flashback query可用来恢复指定时间点的记录,flashback table可用来恢复被删除或指定时间点的表,而flashback d

润明--oracle--unix-IT技术专栏 1348
上一篇: oracle数据库中truncate表后如何快速恢复
下一篇: 闪回查询
201609
博客等级 码龄10年 5粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值