数据库管理复习之oracle 10 G 闪回操作

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 ('时间点')

你可能感兴趣的:(oracle,sql,Flash)