flashbacek闪回技术

flashback技术适用于:

事物闪回

行级闪回

表级闪回

数据库级闪回

事物:数据库进行的一个操作单元。

查看oracle数据库版本:v$version

linux下启动数据库步骤:

1)lsnrctl start

2)sqlplus "/as sysdba"

3)startup

SQL>select * from v$version;

clip_image002

查看用户是否拥有flashback权限:session_privs

SQL>conn wcwen/tiger

SQL>select * from session_privs where privilege like '%FLASHBACK%';

clip_image004

如果用户没有flashback权限,可以授予用户flashback权限。

SQL>conn "/as sysdba"

SQL>show user

SQL>grant flashback any table to wcwen;

恢复刚删除的一条数据:flashback_transaction_query --->视图

select t.start_timestamp,t.commit_timestamp,t.logon_user,t.operation,t.table_name,t.table_owner,t.undo_sql

from flashback_transaction_query t

where table_name='EMP';

其中undo_sql下的语句即使执行恢复的语句,只要执行该语句即可恢复刚才的操作。

注意:查询视图flashback_transcation_query其中indo_sql值为空原因及解决办法?

原因:oracle11g禁用了supplemental logging

解决方法:开启supplemental logging即可,方法如下

SQL>alter database add supplemental log data;

恢复刚删除的100万条记录:

不能一条一条的恢复了,工作量太大,太麻烦。我们试图恢复到删除表之前的时间点即可。

查询当前系统时间:

SQL>selelct sysdate from dual;

查询10分钟前的emp表数据:

SQL> select * from emp as of timestamp to_timestamp('2014-09-17 9:27:00','yyyy-mm-dd hh24:mi:ss');

更改emp表的行号,不执行此步将出现ora-01089错误:

SQL> alter table emp enable row movement;

flashback技术恢复数据到10分钟前:

flashback table emp to timestamp to_timestamp('2014-09-17 9:27:00','yyyy-mm-dd hh24:mi:ss');

flashbacke技术是以undo segment中的内容为基础,因此受限于undo segment的参数,要使用flashback技术,必须启用自动撤销管理表空间。

查看undo_retention参数:该参数用来指定undo记录保存的最长时间,以秒为单位,默认900秒。undo数据在不被覆盖的情况下会持续有效,所以,如果数据库操作频繁,需要加大undo_retention的值。

SQL>show parameter undo_retention

恢复刚刚删除的表:

语法:SQL>flashback table 要闪回的表名称 to before drop;

oracle数据库的回收站:(recyclebin 或user_recyclebin),回收站中存在的表才可以进行闪回技术的恢复,不存在的表不能用闪回技术恢复。

小应用:在windows系统中备份linux系统下的oracle11g数据库的数据.

创建7份.bat文件,用windows自带的任务计划进行自动执行操作即可。

恢复一周前的数据.

创建一个临时用户:create user test identified by test;

grant connect,serourse to rest;

imp test/test@orcl tables=('emp') file='*.dmp';

delete from wcwen.emp;

insert into wcwen.emp

select * from test.emp;

你可能感兴趣的:(Flash)