ITPub博客

首页 > 数据库 > Oracle > 基于SCN闪回数据库

基于SCN闪回数据库

原创 Oracle 作者:skyin_1603 时间:2016-10-03 22:12:43 0 删除 编辑
由我的上一篇博客《闪回数据看的事情》写到一些闪回数据库的步骤与方法,4种方法中,其中以一种
就是本文讲述的:基于SCN(数据库系统改变号)闪回数据库,SCN由dbms_flashback.get_system_change_number
查得,语句为: select dbms_flashback.get_system_change_number as scn  from dual;

在实例数据库中的Scott用户下:

1、创建实验表:

SQL> create  table  fbdb_scn  as  select  1  as

  2  id,dbms_flashback.get_system_change_number as scn,sysdate as dd from dual;

Table created.

SQL> select * from fbdb_scn;

        ID        SCN       DD

----------      ----------      -------------------

         1     776652    2016-10-01 10:24:50
此时,查看当时的系统改变号

SQL> select dbms_flashback.get_system_change_number as scn from  dual;

       SCN

    ----------

    776717
2、接着,再次向表fbdb_scn插入第二条数据,并查看:

SQL> insert  into  fbdb_scn  select  2  as

  2  id,dbms_flashback.get_system_change_number as scn,sysdate as dd from dual;

1 row created.

SQL> commit;

Commit complete.

SQL> select * from fbdb_scn;

        ID        SCN      DD

----------     ----------    -------------------

         1     776652   2016-10-01 10:24:50

         2     776729   2016-10-01 10:28:02

3、模拟删除Scott用户:

SQL> drop user scott cascade;

User dropped.


删除Scott用户之后,关闭数据库,模拟闪回数据库,恢复到刚才查询到的系统改变号为  776717时的状态。

4、关闭数据库,重启数据库并恢复:

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.


SQL> flashback database to scn 776717;

Flashback complete.

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

 (此处报的错误,是要求我们以RESETLOGS方式打开数据库)

SQL> alter database open RESETLOGS;

Database altered.
在sys用户下查看,再关闭数据库前已经删除的Scott用户是否被恢复回来(以下看到已经闪回回来)

SQL> select username from dba_users where username='SCOTT';

USERNAME

------------------------------

SCOTT
登录Scott用户,查看闪回数据库到改变号为776717的状态,查看是否达到预期的效果。

conn scott/tiger0520

SQL> select * from fbdb_scn;

        ID        SCN DD

---------- ---------- ---------

         1     776652 01-OCT-16      ------------(该处的时间跟上面显得有些不一样,是因为会话设置的时间显示格式不一致,此处我们参考SCN号)

对上下两次查询的数据可以知道,删除了的用户通过闪回数据库技术,把用户Scott及其表都被恢复回来,并验证没有丢失数据,达到恢复效果。
也就是说,当我们知道某个时间点对应的系统改变号,可以通过闪回数据库的方式,快速地恢复解决一些数据库损坏的情况。



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

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

注册时间:2016-09-06

  • 博文量
    231
  • 访问量
    215099