【闪回】基于时间闪回数据库

在已启动闪回数据库功能的基础上进行的测试 http://space.itpub.net/685769/viewspace-749364

一、在scott用户下创建一张表、并记录系统时间(如果记录了系统时间,那么可以准确的闪回到指定时间点)
SCOTT@ORA11GR2>create table fbdb_time as select sysdate as dd from dual;

Table created.

SCOTT@ORA11GR2>select sysdate from dual;

SYSDATE
-------------------
2012-11-17 21:52:26

SCOTT@ORA11GR2>

二、删除scott用户,并将数据库启动到mount状态下
SCOTT@ORA11GR2>
conn / as sysdba
Connected.
SYS@ORA11GR2>drop user scott cascade;

User dropped.

SYS@ORA11GR2>startup mount force;
ORACLE instance started.

Total System Global Area  849530880 bytes
Fixed Size                  1339824 bytes
Variable Size             641732176 bytes
Database Buffers          201326592 bytes
Redo Buffers                5132288 bytes
Database mounted.
SYS@ORA11GR2>

三、第一次闪回,我们不用刚刚记录的时间,我们闪回到三分钟之前,看看是什么情况
SYS@ORA11GR2>
flashback database to timestamp  sysdate - 3/1440;

Flashback complete.

SYS@ORA11GR2>

四、此时,数据库可以启动到read only状态,查看是否闪回到我想要的时间点(即:scott用户已创建fbdb_time表以后)
SYS@ORA11GR2>
alter database open read only;

Database altered.

SYS@ORA11GR2>

五、经验证,
scott.fbdb_time表不存在,说明,我们闪回闪过了。
SYS@ORA11GR2>
select * from scott.fbdb_time;
select * from scott.fbdb_time
              *
ERROR at line 1:
ORA-00942: table or view does not exist


SYS@ORA11GR2>

六、重新到mount状态下,再次闪回(如果我们不知道具体的时间点的话,我们只能一次一次以read only打开数据库试验,直到我们满意为止)
SYS@ORA11GR2>
startup mount force;
ORACLE instance started.

Total System Global Area  849530880 bytes
Fixed Size                  1339824 bytes
Variable Size             641732176 bytes
Database Buffers          201326592 bytes
Redo Buffers                5132288 bytes
Database mounted.
SYS@ORA11GR2>

七、由于我们记录了当时的时间,所以,我们直接闪回到那个时间点即可
SYS@ORA11GR2>
flashback database to timestamp to_date('2012-11-17 21:52:26','yyyy-mm-dd hh24:mi:ss');

Flashback complete.

SYS@ORA11GR2>

八、再次以read only打开数据库,验证,正如我们所想的一样,回到了删除scott用户之前的状态
SYS@ORA11GR2>
alter database open read only;

Database altered.

SYS@ORA11GR2>conn scott/tiger
Connected.
SCOTT@ORA11GR2>conn / as sysdba
Connected.
SYS@ORA11GR2>select * from scott.fbdb_time;

DD
-------------------
2012-11-17 21:52:09

SYS@ORA11GR2>

九、重启数据库,以
resetlogs方式打开数据库,闪回数据库完成
SYS@ORA11GR2>
shutdown abort;
ORACLE instance shut down.
SYS@ORA11GR2>
SYS@ORA11GR2>startup mount;
ORACLE instance started.

Total System Global Area  849530880 bytes
Fixed Size                  1339824 bytes
Variable Size             641732176 bytes
Database Buffers          201326592 bytes
Redo Buffers                5132288 bytes
Database mounted.
SYS@ORA11GR2>alter database open resetlogs;

Database altered.

SYS@ORA11GR2>

十、小结
如果使用了闪回数据库,往往都是在不知道具体时间的情况下,为了损失更小,我们只能一次又一次的read only打开数据库来验证结果;
一般情况下,开启闪回数据库的生产库很少,毕竟还是比较耗资源的(特别是DML操作比较频繁的数据库);
还有就是,如果我们使用了闪回功能,那么归档日志都重新开始了,我们之前的备份就失效了,在使用了闪回数据库后,记得做一次数据库的全备。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/685769/viewspace-749413/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/685769/viewspace-749413/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
闪回是Oracle数据库提供的一种功能,用于恢复数据库到某个特定的时间点或者特定的事务发生之前的状态。通过使用闪回功能,可以快速而精确地还原数据库中的数据和结构,避免了传统的备份恢复方式所需要消耗的时间和资源。 使用闪回功能可以完成以下操作: 1. 闪回查询:可以查询到历史数据,回溯数据库在过去某个时间点的状态。 2. 闪回版本查询:可以查询历史版本的数据,对比不同时间点之间的数据变化。 3. 闪回事务:可以撤销一系列事务的操作,将数据库恢复到事务发生之前的状态。 4. 闪回表:可以将表恢复到过去某个时间点的状态,包括表结构和数据。 要使用闪回功能,首先需要满足以下条件: 1. 数据库必须处于归档模式(ARCHIVELOG mode)。 2. 闪回区域(flashback area)必须已经配置。 3. 对象必须处于有效状态,未被删除或截断。 使用具体的闪回命令,可以根据具体的需求使用不同的语法和参数。例如,可以使用FLASHBACK TABLE语句来闪回表。在执行闪回操作之前,还可以使用FLASHBACK DATABASE语句来预览即将恢复的数据。 需要注意的是,闪回操作在执行之前会进行一些检查,包括检查是否满足闪回条件、是否有足够的空间等。因此,在使用闪回功能之前,建议先进行相关检查和准备工作,以确保操作的顺利进行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值