oracle中闪回和回滚,oracle闪回操作详解

Oracle的闪回

oracle中为什么会有闪回呢!它的作用是什么呢?我们来学习一下闪回吧!闪回和回滚异曲同工之妙。

一闪回的介绍

(1)在Oracle的操作工程中,会不可避免地出现操作失误或者用户失误,例如不小心删除了一个表等,这些失误和错误可能会造成重要数据的丢失,最终导致Oracle数据库停止允许。

(2)在传统意义上,当发生数据丢失、数据错误问题时,解决的主要办法是数据的导入导出、备份恢复技术,这些方法都需要在发生错误前,有一个正确的备份才能进行恢复。

(3)为了减少这方面的损失,Oracle提供了闪回技术。有了闪回技术,就可以实现数据的快速恢复,而且不需要数据备份。

有了闪回,那他的优点是什么呢?

(1)恢复中,闪回技术是革命性的进步

(2)传统的恢复技术缓慢:

它是整个数据库或者一个文件恢复,不只恢复损坏的数据

在数据库日志中每个修改都必须被检查

(3)闪回速度快:

通过行和事务把改变编入索引

仅仅改变了的数据会被恢复

(4)闪回命令很容易:

没有复杂棘手的多步程序

闪回的类型:

闪回表(flashback table)、闪回删除(flashback drop)、闪回版本查询(flashback version query)、闪回事务查询(flashback transaction query)

闪回的益处

(1)恢复中,闪回技术是革命性的进步

(2)传统的恢复技术缓慢:

•它是整个数据库或者一个文件恢复,不只恢复损坏的数据

•在数据库日志中每个修改都必须被检查

(3)闪回速度快:

•通过行和事务把改变编入索引

•仅仅改变了的数据会被恢复

(4)闪回命令很容易:

•没有复杂棘手的多步程序

二闪回表的使用

1.闪回表

闪回表,实际上是将表中的数据快速恢复到过去的一个是焦点或者系统改变号SCN上。实现表的闪回,需要使用到与撤销表空间相关的undo信息,通过show parameter undo命令可以了解这些信息。

用户对表数据的修改操作,都记录在撤销表空间中,这为表的闪回提供了数据恢复的基础。例如,某个修改操作在提交后被记录在撤销表空间中,保留时间为900秒,用户可以在这900秒的时间内对表进行闪回操作,从而将表中的数据恢复到修改之前的状态。

执行表的闪回,需要有flashback any table的权限

2.举例

(1)查询闪回信息

SQL> show parameter undo;

NAMETYPEVALUE

------------------------------------ ----------- ------------------------------

undo_managementstringAUTO

undo_retentioninteger900

undo_tablespacestringUNDOTBS1

(2)修改闪回信息

在修改时首先要切换用户,为conn system/orcl,然后再修改为:

SQL> alter system set undo_retention=1200 scope=both;

System altered

(3)在修改密码的时候要先打开比表的行移动开关

打开行移动开关

SQL> alter table flashbacktable enable row movement;

Table altered

(4)闪回的应用

通过temestamp闪回

首先要先创建表来存储数据:

SQL> create table flashbacktable(id number,ename varchar2(20));

Table created

然后向其中插入数据

SQL> insert into flashbacktable values(5,'sdf');

1 row inserted

commit;

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YYYY-MM-DDHH2

------------------------------

2012-03-23 15:24:53

SQL> flashback table flashbacktable to timestamp to_date('2012-03-23 15:24:53','yyyy-mm-dd hh24:mi:ss');

Done

在查询数据的时候刚才插入的数据没有了,注意是在提交之后执行的闪回

通过scn号闪回

首先查询出当前日期的scn号

SQL> select timestamp_to_scn(sysdate) from dual;

TIMESTAMP_TO_SCN(SYSDATE)

-------------------------

1335034

然后向表中插入数据

SQL> insert into flashbacktable values(12,'dfds');

1 row inserted

SQL> insert into flashbacktable values(13,'dfds');

1 row inserted

SQL> select timestamp_to_scn(sysdate) from dual;

TIMESTAMP_TO_SCN(SYSDATE)

-------------------------

1335053

SQL> update flashbacktable set ename='aaaaaaaaaa' where id=12;

1 row updated

SQL> select timestamp_to_scn(sysdate) from dual;

TIMESTAMP_TO_SCN(SYSDATE)

-------------------------

1335088

因为有三个阶段的scn,所以可以指定那个scn来闪回

执行的语句为:

SQL> flashback table flashbacktable to scn(1335053);

Done

三闪回删除

闪回删除,实际上从系统的回收站中将已删除的对象,恢复到删除之前的状态。

系统的回收站只对普通用户有作用

1.闪回表删除的介绍

(1)回收站是所有被删除对象及其相依对象的逻辑存储容器,例如当一个表被删除(drop)时,该表及其相依对象并不会马上被数据库彻底删除,而是被保存到回收站中。

(2)回收站将用户执行的drop操作记录在一个系统表中,也就是将被删除的对象写到一个数据字典中。如果确定不再需要该对象,可以使用purge命令对回收站进行清空。

(3)被删除的对象的名字可能是相同的,例如用户创建了一个test表,使用drop命令删除该表后,又创建了一个test表,这时,如果再次删除该表就会导致向回收站中添加了个相同的表

(4)为了确保添加到回收站中的对象的名称都是唯一的,系统会对这些保存到回收站中的对象进行重命名

2.程序讲解

通过show recyclebin命令可以查询oracle回收站的删除的信息

如果要闪回,则执行命令:

flashback table backtable to before drop;

注,如果两个命名相同,不能够闪回,可以起别名:为:

flashback table backtable to before drop rename to a;

四闪回版本查询

闪回版本查询,提供了一个审计行改变的查询功能,通过它可以查找到所有已经提交了的行记录

1.首先来创建一个表

create table version_table(id number,content varchar2(20));

2.向表中插入数据和更新数据

insert into version_table values(1,'Tom');

insert into version_table values(2,'Tom');

向表中更新数据

update version_table set ename='tom11' where id=2;

3.通过闪回版本的查询获取该历史的记录

select id,ename,versions_operation,versions_starttime,versions_endtime from version_table versionsbetween timestamp minvalue and maxvalue;

4.通过时间段来闪回

select empno,ename,versions_operation,versions_starttime,versions_endtime from version_table versions between timestamp to_date('2012-03-22 14:42:19','yyyy-mm-dd hh24:mi:ss')

and to_date('2012-03-22 14:43:28','yyyy-mm-dd hh24:mi:ss');

五闪回事务查询

1.查询事务的信息

desc flashback_transaction_query;

2.创建表

create table transaction_table (id number,ename varchar(20));

3.向表中插入数据

insert into transaction_table values(1,'tom');

insert into transaction_table values(2,'tom');

update transaction_table set ename='Tom123' where id=1;

4.先通过闪回版本查询获取事务相关信息

SQL> select id,ename,versions_operation,versions_xid from transaction_table versions between timestamp minvalue and maxvalue;

ID ENAMEVERSIONS_OPERATION VERSIONS_XID

---------- -------------------- ------------------ ----------------

2 sdfdU04001400EE010000

1 Tom123I020022002F020000

2 tomI020022002F020000

5.执行闪回事务查询select xid,operation,table_name,undo_sql from flashback_transaction_query where xid='04001400EE010000';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java NIO系列教程(十) Java NIO DatagramChannel

转载自 Java NIO系列教程(十) Java NIO DatagramChannel 译文链接 作者:Jakob Jenkov 译者:郑玉婷 校对:丁一 Java NIO中的DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议&#xff0c…

在Windows Server 2012 R2 Standard 部署 ASP.NET Core程序

前言: 随着ASP.NET Core 1.0的发布,论坛里相关的文章也越来越多,正好有时间在测试环境上搭建 ASP.NET Core的发布环境,把过程中遇到的问题写给大家,以便有用到的朋友需要。 环境: Windows Server 2012 R2 S…

Github Pages + Jekyll 独立博客一小时快速搭建上线指南

只要一小时?! 人生道路上布满了坑,于是有了人生导师。 美丽的地球上布满了坑,于是有了Google Earth。 使用Github Pages搭建独立博客的过程中布满了坑,所以有了这篇指南。 我在自己查找资料搭建的过程中发现了许多大…

Java NIO系列教程(九) ServerSocketChannel

转载自 Java NIO系列教程(九) ServerSocketChannel 译文链接 作者:Jakob Jenkov 译者:郑玉婷 校对:丁一 Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的Server…

ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First

ASP.NET Core 开发-Entity Framework Core 1.0 Database First,ASP.NET Core 1.0 EF Core操作数据库。 Entity Framework Core 1.0 也已经发布了,可以适用于 .NET Core 1.0 及ASP.NET Core 1.0 。 EF Core RC2 时,使用的Code First: http://w…

Oracle 分页语句解释,oracle 分页语句

private static final String QUERYPERPAGESQL "select * from (select m.*, rownum rn from (select * from music order by id) m where rownum < ?) where rn > ?";//该sql语句为每页显示的个数public List queryPerPage(int page) {//page为当前处于第几…

Java NIO系列教程(八) SocketChannel

转载自 Java NIO系列教程&#xff08;八&#xff09; SocketChannel 译文链接 作者&#xff1a;Jakob Jenkov 译者&#xff1a;郑玉婷 校对&#xff1a;丁一 Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel&a…

php 正则获取html标签,php正则取嵌套html标签

$s <<nested tag testhtml;$pattern "/("."]*?)\s*>|"."\s]))?)*\s*\/?>|"."|"."".")/";preg_match_all($pattern, $s, $aMatches, PREG_OFFSET_CAPTURE);function getMatchTags($s, $arr) {$sM…

拥抱.NET Core,跨平台的轻量级RPC:Rabbit.Rpc

不久前发布了一篇博文“.NET轻量级RPC框架&#xff1a;Rabbit.Rpc”&#xff0c;当初只实现了非常简单的功能&#xff0c;也罗列了之后的计划&#xff0c;经过几天的不断努力又为Rabbit.Rpc增加了一大波新特性&#xff0c;今天主要介绍下项目近况。 特性一览 Apache License 2.…

oracle应用程序SQL提交方式,Oracle Submit Request - 请求的调用方法: FND_REQUEST.SUBMIT_REQUEST...

FND_REQUEST.SUBMIT_REQUEST 函数是用来提交一个请求的,它返回一个NUMBER值.具体调用如下:result : fnd_request.submit_request(application CHAR, --模快program CHAR, --应用程式description CHAR, --请求说明(可选)start_time CHAR, --RUN 时间(可选)sub_request…

Java NIO系列教程(六) Selector

转载自 Java NIO系列教程&#xff08;六&#xff09; Selector 译文链接 作者&#xff1a;Jakob Jenkov 译者&#xff1a;浪迹v 校对&#xff1a;丁一 Selector&#xff08;选择器&#xff09;是Java NIO中能够检测一到多个NIO通道&#xff0c;并能够知晓通道是否为诸如读写事…

.NET 框架兼容性简介

前言 从.NET框架4.0开始&#xff0c;所有主版本号为4&#xff08;称为“4.x”版本&#xff09;的.NET框架&#xff0c;都会进行就地更新。这就意味着在一段时间内&#xff0c;电脑上安装的只有一个.NET 4.x框架。安装.NET 4.5框架将替换.NET 4.0框架&#xff0c;.NET 4.5.1框架…

php滚动公告源码,好用的滚动公告HTML代码

JsCSS间断和不间断文本滚动代码.noticebox{width:150px;height:25px;line-height:25px;border:#bbb 1px solid;overflow:hidden;}.noticebox ul{margin:0;padding:0}.noticebox li{height:25px;line-height:25px;font-size:12px;text-align:center;list-style-type:none;}第一行…

当当网首页——CSS代码

charset "utf-8"; /* CSS Document *//*首页样式*/ /*右侧随鼠标滚动的广告图片*/ .right{top:50px;right:30px;position:absolute;z-index:3; } .dd_close{width:35px;height:18px;text-align:center;border:solid 1px #999;background-color:#E0E0E0;top:0px;right…

Java NIO系列教程(七) FileChannel

转载自 Java NIO系列教程&#xff08;七&#xff09; FileChannel 译文链接 作者&#xff1a;Jakob Jenkov 译者&#xff1a;周泰 校对&#xff1a;丁一 Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞…

js+php在线截图 jquery fileupload.js,另一种图片上传 jquery.fileupload.js

今天遇到另外一种上传图片方法用jquery.fileupload.js一个文件类型的元素$("#fileupload").fileupload({datatype:"json",url: "/File/UploadFiles",done: function (e, data) { //上传结束的操作if (data.result[0].result ! "OK") /…

当当网首页——JS代码

$(function($){//打开一个广告窗口window.open(open.html,,top0,left200,width500,height327,scrollbars0,resizable0);//随滚动条滚动的可关闭广告窗口$(window).scroll(function(){var st $(this).scrollTop()50;$("#right").css("top",st);});$("…

Java NIO系列教程(一) Java NIO 概述

转载自 Java NIO系列教程&#xff08;一&#xff09; Java NIO 概述 译文链接 作者&#xff1a;Jakob Jenkov 译者&#xff1a;airu 校对&#xff1a;丁一 Java NIO 由以下几个核心部分组成&#xff1a; ChannelsBuffersSelectors 虽然Java NIO 中除此之外还有很多…

linux原有的文件系统扩展,原来linux不用LVM也能扩展文件系统

以前总以为UNIX/LINUX使用了lvm才能扩展或缩小卷和文件系统&#xff0c;今天才发现我错了&#xff1a;即使没有lvm&#xff0c;linux也能扩展卷和及其相应的文件系统而不会丢失原有数据。以下是测试步骤&#xff0c;记录备查。1、系统是redhat linux 6[rootlocalhost ku]# unam…

当当网上书店购物车——源码

关于当当网的所有图片资源都已上传&#xff0c;下载地址&#xff1a;当当网资料&#xff0c;点击下载即可&#xff0c;下面上html代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml…