sql>select falshback_on from v$database // 查看数据库是否开启闪回功能
sql>shutdown immediate //关闭数据库
sql>startup mount //以mount方式启动数据库
sql>alter databae archive // 使数据库在归档模式下运行
sql>alter database flashback on //打卡数据库闪回功能
sql>alter database open //运行数据库
查看flashback的一些参数
show parameter file_dest
show parameter flashback
---------------------
举例:(闪回数据库 使用 是 闪回日志)
sql>create restore point b4 guarantee flashback database // 创建一个可靠还原点
sql>select * from tab; (tab 视图显示当前用户所有的table ,view等一些objects的名称)。
tname tabtype clusterid
dept table
emp table
bonus table
sql>drop table emp purge;
sql>conn /as sysdba
sql>shutdown immediate
sql>startup mount
sql>select tochar(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; //查询当前时间
2011-10-06 13:56:52
sql> flash database to timestamp to_timestamp('2011-10-06 13:55:00','yyyy-mm-dd hh24:mi:ss'); //闪回数据库到删除表之间的时间
sql>alter table read only (已只读方式打开数据库,这样是为了不影响 redo日志)
sql>select count(*) from emp; //此时在查询的时候,就可以发现刚才被删掉的emp,下面可以exp命令将emp数据导出
sql>exit
[oracle$linux~]$ exp scott/tiger tables=emp files=emp.dmp //导出之后,重新进入数据库
[oracle$linux~]$ sqlplus / as sysdba
sql>shutdown immediate
sql>flash database to timestamp to_timestamp('2011-10-06 13:56:52','yyyy-mm-dd hh24:mi:ss');
sql>alter database open resetlogs;
sql>desc scott.emp;
此时查看,还没有emp表,用 imp导入
[oracle$linux~]$ imp scott/tiger file=emp.dmp table=emp
sql>desc scott.emp; --》此时就可以查看到恢复的数据表emp了。
上面是通过时间闪回,也可以通过SCN点来闪回,利用上面建立的b4
sql>flashback database to restore point b4;
----------------
sql>desc v$restor_point; //查看系统中建立的所有还原点
sql>select * for v$restore_point;
闪回数据库,因为需要关闭数据库实例,所以在 7*24小时运行的数据库中,并不实用。
------------------------------------------------------