ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 基于时间闪回数据库(九)

基于时间闪回数据库(九)

原创 Linux操作系统 作者:dzq0371 时间:2013-04-09 11:33:53 0 删除 编辑

在已启动闪回数据库功能的基础上进行的测试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/23009281/viewspace-758024/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-07-14

  • 博文量
    52
  • 访问量
    182465