首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux数据库>oracle>正文

"Oracle"闪回功能恢复偶然丢失的数据

http://www.oklinux.cn  2008-02-27  来源: 赛迪网 Alizze  会员收藏  游客收藏  【 】 

Oracle 9i的闪回查询简介

 

1、Oracle 9i的闪回查询功能

 

在Oracle 9i之前,如果用户错误操作数据后,除了不完全恢复外,没有好的解决办法。Oracle 9i中提供闪回查询,由一个新的包DBMS_FLASH来实现。用户使用闪回查询可以及时取得误操作DML(Delete、Update、Insert)前某一时间点数据库的映像视图,用户可以利用系统时间或系统改变号(SCN:System Change Number)来指定这个只读视图,并可以针对错误进行相应的恢复措施。闪回查询功能完全依赖于自动回滚段管理(AUM),对于Drop等误操作不能恢复。闪回特性可应用在以下方面:

 

(1)自我维护过程中的修复:当一些重要的记录被意外删除,用户可以向后移动到一个时间点,查看丢失的行并把它们重新插入现在的表内恢复。

 

(2)恢复Email和声音Email:当用户意外删除了Email或者声音信息时,可以通过移回到固定时间点来恢复删除。

 

(3)账号平衡状况:可以查看以前的历史数据。如银行外币管理中用于记录特定时间的汇率。在以前,汇率变更被记录在一个历史表中,现在就可以通过闪回功能进行查询。

 

(4)用于趋势分析的决策支持系统:决策支持系统和联机分析应用必须执行一个长时间的事务。使用闪回查询,这些应用可以对历史数据执行分析和建模。例如,特定产品如矿泉水随季节变化需求情况的变化。

 

2、回滚段概述

 

回滚段用于存放数据修改之前的位置和值,回滚段的头部包含正在使用的该回滚段事务的信息。回滚段的作用如下:

 

(1)事务回滚:当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段中,当用户回滚事务时,Oracle将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值。

 

(2)事务恢复:当事务正在处理的时候,例程失败,回滚段的信息保存在重做日志文件中,Oracle将在下次打开数据库时利用回滚来恢复未提交的数据。

 

(3)读一致性:当一个会话正在修改数据时,其它的会话将看不到该会话未提交的修改。而且,当一个语句正在执行时,该语句将看不到从该语句开始执行后的未提交的修改(语句级读一致性)。

 

3、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上,这被称为延迟块清除。

 

4、Oracle 9i中闪回查询操作实例

 

进行闪回查询必须设置自动回滚段管理,在init.ora设置参数UNDO_MANAGEMENT=AUTO,参数UNDO_RETENTION=n,决定了能往前闪回的最大时间,值越大就需要越多Undo空间。

 

例:Oracle 9i的Flashback Query操作。

 

(1)创建闪回查询用户

 

SQL> create user flashtest identified by flashtest; 
SQL> grant connect, resource to flashtest; 
SQL> grant execute on dbms_flashback to flashtest; 
SQL> connect flashtest/flashtest;

(2)创建测试表,插入测试记录

共6页: 上一页 1 [2] [3] [4] [5] [6] 下一页

上一篇:实例讲解清除Oracle10g RAC CRS的方法   下一篇:同时使用数据库链和序列时的注意事项


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·同时使用数据库链和序列时的注意事项
·实例讲解清除Oracle10g RAC CRS的方法
·如何查看"Control File"中保存的内容
·进行LOGMNR操作时发现空列名的具体原因
·监控数据库性能的"SQL"语句都有哪些?
·RAC环境中查询不到其他实例执行的SQL
·建库的过程中DBCA报错,错误号为ORA-12547
·使用TYPE方式,解决IN列表过长的问题
·Oracle所进行的回滚仅针对用户发出的事务
·PFILE创建SPFILE后数据库无法启动的问题
·如何利用Oracle的全文索引实现切词功能
·在线日志文件都是active或current的现象
·如何检测Oracle的可用性和表空间容量
·决定用户对全部对象名引用的三种数据库链
·如何对存储过程返回的结果进行条件查询
·版本在9.2.0.3以下时autotrace的设置方法
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·讲解Oracle移动数据文件到新分区的过程
·如何使用Ruby脚本调用Oracle存储过程
·哪些因素可以影响Oracle数据库的性能
·带你深入了解Oracle数据库的进制转换
·讲解V$Datafile_Header相关字段的使用
·探讨基于不绑定变量与绑定变量的柱状图
·pl/sql developer中TIMESTAMP的显示格
·教你快速掌握如何使用"Opatch"打补丁
·如何调整"Oracle"数据库服务器的性能
·视图上含有row_number分析函数没法走索
·Linux自动备份MySQL数据库的实用方法
·如何更改rac的vip地址和集群互联地址
  阅读排行
·如何修改遗失的MySQL的ROOT用户密码
·详解远程SHELL下安装配置RedHat ES 5的
·教你如何将MySQL数据库的密码恢复
·教你在MySQL从口令恢复设置的密码
·在 Oracle Enterprise Linux 上升级到
·oracle9i installation on fedora core
·Oracle Instant client介绍
·Oracle高级复制(同步复制)配置步骤详细
·用Oracle归档日志进行恢复的方法
·Linux下的Oracle数据库编程详解
·Linux下Oracle9i RMAN备份及恢复步骤介
·带你轻松接触一些比较常用的sql*plus命
·Oracle的快照复制
·Oracle HA 在Unix上双机环境的安装指南
·Oracle 数据库存储结构简介
网摘收藏: