就是本文讲述的:基于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.
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博客 ” ,链接:http://blog.itpub.net/31392094/viewspace-2125841/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31392094/viewspace-2125841/