oracle 10 G 闪回操作
1 什么是闪回
闪回是oracle9i开始才有的功能,10g进行了完善
闪回操作包括了 查询闪回
表闪回
删除闪回
数据库闪回
2 闪回操作在数据库恢复中的应用
查询闪回:可用于查看和重建因为意外被删除或更改而丢失的数据。
select sysdate from dual;
select * from emp;
delete from emp;
commit;
select * from emp as of timestamp
to_timestamp ('时间点');
闪回
insert into emp
(select * from emp to timestamp
to_timestamp('时间点');
表闪回: 利用表闪回可以恢复表 ,取消对表的进行的修改
表闪回要求用户具有FLASHBACK ANY TABLE 权限
ALTER TABLE 表名 ENABLE ROW MOVEMENT;
FLASHBACK TABLE EMP TO TIMESTAMP
TO_TIMESTAMP('时间点');
删除闪回
这个是一个新的安全机制,当一个表删除的时候,ORACLE 10G
会将这个表放到回收站里面RECYCLEBIN中,这个数据会一直保存
知道用户决定永久删除它们或者出现表空间的空间不足的时候才会
被删除。回收站RECYCLEBIN 是一个虚拟容器,用于存储所有被删除
的对象。
查询回收站信息
SHOW RECYCLEBIN
或通过查询数据字段USER_RECYCLEBIN
SELECT OBJECT_NAME,ORIGINAL_NAME,TYPE,DROPTIME FROM USER_RECYCLEBIN'
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
DEPT BIN$VjrBIcrVgk7gQBSUBSgFyg==$0 TABLE 2008-09-06:22:10:55
查询到表以后,是可以通过删除闪回进行恢复的,引用以下命令
SQL> flashback table dept to before drop;
Flashback complete.
或者 通过 回收站里面的文件回复就可以了 在不知道表名的前提下
SQL> flashback table "BIN$VjrBIcrdgk7gQBSUBSgFyg==$0" to before drop;
Flashback complete.
如果要真正删除一个表 而不进入回收站 可以用PURGE;
DROP TABLE DEPT PURGE;
SHOW RECYCLEBIN;没有数据返回
也可以用PURGE RECYCLEBIN 区域来永久删除表;
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
TEST BIN$VjrBIcrjgk7gQBSUBSgFyg==$0 TABLE 2008-09-06:22:23:05
PURGE TABLE TEST;
SQL> PURGE TABLE TEST;
Table purged.
删除当前用户的回收站
purge recyclebin;
用SYS用户删除所有用的数据
purge dba_recyclebin;
数据库闪回
将数据库回到过去某一状态
--select name,dbid,checkpoint_change# SCN from v$database; (查查当前的SCN号)
--select * from v$log (查查日志的SCN号)
FLASH DATABASE TO SCN 4474843028;
FLASH DATABASE TO TIMESTAMP
TO_TIMESTAMP ('时间点')