oracle 闪回功能
来源:互联网 发布:小区业主号码采集软件 编辑:程序博客网 时间:2024/04/30 05:50
time:2008/04/15
author: skate
oracle 闪回功能
闪回查询功能完全依赖于自动回滚段管理(AUM),进行闪回查询必须设置自动回滚段管理,在init.ora设置
参数UNDO_MANAGEMENT=AUTO,参数UNDO_RETENTION=n,决定了能往前闪回的最大时间,值越大就需要越
多Undo空间。
Oracle中Delete和Commit操作的流程分析
(1)删除(Delete)流程
·Oracle读Block(数据块)到Buffer Cache(缓冲区)(如果该Block在Buffer中不存在);
·在Redo Log Buffer(重做日志缓冲区)中记录Delete操作的细节;
·在相应回滚段段头的事物表中创建一个Undo(回滚)条目;
·把将要删除的记录创建前镜像,存放到Undo Block(回滚块)中;
·在Buffer Cache中的相应数据块上删除记录,并且标记相应的数据块为Dirty(脏)。
(2)提交(Commit)流程
·Oracle产生一个SCN;
·在回滚段事物表中标记该事物状态为Commited;
·LGWR(日志读写进程) Flush Log Buffer到日志文件;
·如果此时数据块仍然在Buffer Cache中,那么SCN将被记录到Block Header上,这被称为快速提交;
·如果Dirty Block已经被写回到磁盘,那么下一个访问这个Block的进程将会自回滚段中获取该事物的状态,确认该事物被提交。然后这个进程获得提交SCN并写回到Block Header上,这被称为延迟块清除。
例子:
SQL> alter session set nls_date_format='yyyy/mm/dd hh24:mi:ss';
会话已更改。
SQL> select sysdate from dual;
SYSDATE
-------------------
2008/04/15 21:30:37
1.查存闪回
SQL> select * from bb;
ID NAME
---------- ------------------------------
2 12
2 343
SQL> select * from bb as of timestamp to_timestamp('2008-04-15 20:39:00','yyyy-m
m-dd hh24:mi:ss');
ID NAME
---------- ------------------------------
2 12
SQL>
表的删除与恢复
SQL> create table aa as select * from bb;
表已创建。
SQL> commit;
提交完成。
SQL> delete from bb;
已删除2行。
SQL> commit;
提交完成。
SQL> select * from bb;
未选定行
SQL> select * from bb as of timestamp to_timestamp('2008/04/15 20:40:00','yyyy/m
m/dd hh24:mi:ss');
ID NAME
---------- ------------------------------
2 12
SQL>
2.表的闪回
我的操作用户是dba的权限,表的闪回要求用户具有flashback any table的权限
SQL> flashback table bb to timestamp to_timestamp('2008/04/15 20:40:00','yyyy/mm
/dd hh24:mi:ss');
flashback table bb to timestamp to_timestamp('2008/04/15 20:40:00','yyyy/mm/dd h
h24:mi:ss')
*
第 1 行出现错误:
ORA-08189: 因为未启用行移动功能, 不能闪回表
SQL> alter table bb enable row movement;
表已更改。
SQL> flashback table bb to timestamp to_timestamp('2008/04/15 20:40:00','yyyy/mm
/dd hh24:mi:ss');
闪回完成。
SQL> select * from bb;
ID NAME
---------- ------------------------------
2 12
SQL>
3.删除闪回
SQL> select object_name,original_name,type,droptime from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME
------------------------------ --------------------------------
TYPE DROPTIME
------------------------- -------------------
BIN$7SlxSP9OQWmOj9V5CG7LSg==$0 BB
TABLE 2008-04-15:21:43:48
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
BB BIN$7SlxSP9OQWmOj9V5CG7LSg==$0 TABLE 2008-04-15:21:43:48
SQL> flashback table bb to before drop;
闪回完成。
SQL> select table_name from usr_tables;
select table_name from usr_tables
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
BB
AA
SYS_TEMP_FBT
SQL> commit;
提交完成。
SQL> show recyclebin
SQL>
SQL> create table bb as select * from aa;
表已创建。
SQL> commit;
提交完成。
SQL> drop table bb;
表已删除。
SQL> show recycclebin;
SP2-0735: 未知的 SHOW 选项开头 "recycclebi..."
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
BB BIN$sf07cXG6T3+7x1pjBUKT3g==$0 TABLE 2008-04-15:22:14:56
SQL> purge table bb;
表已清除。
SQL> show recyclebin;
SQL> purge dba_recyclebin
2 ;
purge dba_recyclebin
*
第 1 行出现错误:
ORA-01031: 权限不足
SQL> purge user_recyclebin
2 ;
回收站已清空。
SQL>
----end----
- oracle 闪回功能
- oracle闪回功能
- oracle闪回功能详解(oracle独有的flashback功能)
- Oracle 闪回功能简述
- Oracle db 闪回功能
- oracle 闪回功能详解
- oracle 闪回功能详解
- oracle 闪回功能详解
- oracle 利用闪回功能恢复数据
- oracle特性中的闪回查询功能
- Oracle 10G 启用闪回功能
- 开启oracle的flashback闪回功能
- 如何开启 oracle 闪回功能
- Oracle Flashback 闪回查询功能
- 开启oracle的flashback闪回功能
- 开启oracle的flashback闪回功能
- oracle数据库开启闪回功能步骤
- 使用oracle 的闪回功能
- 那一丝美好
- C#如何连接MYSQL
- 转:把电视当显示器使用 通过S端子连接电脑技巧
- 朋友要结婚拉!
- SEO 服务前辈们纷纷改行
- oracle 闪回功能
- Hibernate入门
- 长文章javascript分页(多浏览器兼容修正版)
- 转:两台联网电脑,其中一台打不开另一台中的共享文件,如何解决?
- 技术是一种加速器 但重要的不是技术
- 关键词 排名 与 SEO
- Scroll Page 表单提交后页面重新滚回原来滚动条所在位置
- Spring的核心机制依赖注入简介
- Microsoft.XMLHttp的属性和方法的简介及使用