oracle数据库中数据回滚的概念

oracle数据库中数据回滚的概念,第1张

朋友:

oracle中有两样东西是用来记录历史的

一、重做日志 REDO(作用就是当你8点做了很多事情,到10点由于数据8点到10点 *** 作的某个文件坏了,那么8点到10点的的东西全都不见了,但是REDO还在。你就可以用REDO来做重做你8点到10点所做的事,REDO就是记录了这样的事!)

二、回滚段 UNDO (作用就是当你后悔做了某些事之后就可以回到以前,但是在人间可是没有后悔要卖的哦。如你无意删除一个表,你就可以用rollback命令来回滚,它利用的就是oracle 的撤消表空间记录的内容。当然这个表空间满了的时候也就不能回滚到它没记录的内容了。)

1 UNDO表空间用于存放UNDO数据。当执行DML *** 作时,Oracle会将这些 *** 作的旧数据写入UNDO段。管理UNDO数据不仅可以使用回滚段,还可以使用UNDO表空间。

2 UNDO数据的作用:当用户执行DML *** 作修改数据时,UNDO数据被存放在UNDO段,而新数据则被存放到数据段中,如果事务 *** 作存在问题,就需要回退事务,以取消事物变化。

例如:执行完UPDATE emp SET sal=1000 WHERE empno=7788后,发现应该修改雇员7963的工资,而不是7788此时应该执行ROLLBACK语句。

3读一致性

用户检索数据时,ORACLE总是使用户只能看到被提交过的数据,这是由Oracle自动提供的。当用户修改数据,但是没有提交时,另外一个用户使用select语句查找该值时,该值就是从undo表空间中取得的。

4事务恢复

事务恢复是例程恢复的一部分,它是由Oracle Server自动完成的。如果在数据库运行过程中出线历程失败,那么当启动Oracle Server时,后台进程SMON会自动执行例程恢复。执行例程恢复时,Oracle会重做所有未应用的记录。然后打开数据库,回退未提交事务。

5倒叙查询

倒叙查询用于取得某一特定时间点的数据库数据。

6UNDO_MANAGEMENT

使用初始化参数用于指定UNDO数据的管理方式。如果使用自动管理模式,必须设置该参数为AUTO,此时采用UNDO表空间管理UNDO数据;如果使用手工管理模式,必须设置该值为MANUAl,此时采用回滚段管理UNDO数据。

7UNDO_TABLESPACE

用于指定例程所要使用的UNDO表空间。使用自动UNDO管理模式时,通过配置该参数可以指定例程所要使用的UNDO表空间。

使用RAC结构时,必须为每个例程配置一个独立的UNDO表空间。

8UNDO_RETENTION

该参数用于控制UNDO数据的最大保留时间,其默认值为900秒,该值时倒叙查询可以查看到的最早时间点。

9UNDO表空间上不能建立任何数据对象。

1-开启归档功能,使数据库处于归档模式下

先关闭数据库:shutdown immediate

启动到mount状态:startup mount

开启归档功能:alter database archivelog;

打开数据库:alter database open;

2-开启闪回flashback功能(归档下才可开启数据库闪回)

查看flashback是否开启:select name,flashback_on from v$database;

查看闪回恢复区及大小是否设置:show parameter db_recovery;

先设置闪回恢复区的大小:alter system set db_recovery_file_dest_size='2G';

再设置闪回恢复区路径:alter system set db_recovery_file_dest='E:\oracle\product\1020\db_recovery_file_dest';

设置数据库回退的时间,默认1440分钟为一天时间:alter system set db_flashback_retention_target = 1440;

启动到mount状态:startup mount;

开启flashback功能:alter database flashback on;

关闭flashback功能:alter database flashback off;

打开数据库:alter database open;

这篇文章主要介绍了Oracle数据库的启动与关闭方法 需要的朋友可以参考下  

一 启动数据 $sqlplus "sys/pass as sysdba" sql>startup

二 启动监听器 数据库启动后 如果未启动监听进程 则客户端无法与数据库连接 监听进程的启动方法为 $lsnrctl start 在widnows中 可以从服务列表中启动监听器 监听里程配置文件为listener ora 位于目录/home/app/oracle/product/ /db /neork/admin/ 此配置文件分为两部分 一部分为监听程序本身的配置 包括协议 地址 端口号等 另一部分为监听程序所连接的数据库的实例信息 包括 实例名 全局数据库名 oracle主目录等 监听器可以利用oracle net config 向导来配置 要显示监听器的运行状态 $lsnrctl status; 要停止监听器 $lsnrctl stop

三 数据库的启动过程 分为三个阶段 启动实例 包括以下 *** 作 ) 读取参数文件 ) 分配SGA ) 启动后台进程 2.装载数据库 装载数据库是将数据库与已启动的实例相联系 数据库装载后 数据库保持关闭状态 3.打开数据库 此步骤使用数据库可以进行正常的 *** 作的处理 主要是打开控制文件 数据库文件和日志文件

四 数据库启动参数 NOMOUNT:只启动实例 不装载数据库 sql>startup nomount MOUNT:启动实例 并装载数据 但不打开数据库 sql>startup mount READ ONLY:将数据库置为只读 sql>startup mount sql>alter database open read only READ WRITE:以可读写方式打开数据 这是默认方式 sql>startup mount sql>alter database open read write OPEN:打开数据库 这是默认方式 sql>startup mount sql>alter database open; RESTRICT:以受限方式打开 只有具有RESTRICTED SESSION权限的用户才可以连接数据库 sql>startup restrict PFILE:启时指定参数文件 sql>startup pfile=/u /user/mypfile ora FORCE:以强制方式启动数据库 sql>startup pfile=/u /user/mypfile ora open restrict force

五 数据库的关闭 与启动过程相对应 关闭包括三个过程 1).关闭数据库 2).卸载数据库 3).关闭数据库实例

1.NORMAL关闭方式 NORMAL关闭方式是正常关闭方式 是默认关闭方式 在这种关机方式下 数据库服务器必须等待所有客户端从Oracle中正常退出时 才可以关闭数据库 SQL>SHUTDOWN NORMAL 2.IMMEDIATE关闭方式 使用这种方式关闭数据库时 系统将连接到数据库的所有用户尚未提交的事务全部回退 中断连接 然后关闭数据库 SQL>SHUTDOWN IMMEDIATE 3.ABORT关闭方式 ABORT关闭方式为异常方式 使用这种方式关闭数据库时 系统立即将数据库实例关闭 对事务膛数据完整性不作检查 是最快的关机方式 sql>shutdown abort; 4.TRANSACTIONAL关闭方式 在这种关机方式中 数据库必须等待所有的客户运行的事务结束 提交或回退 sql>shutdown transactional

sql> startup force 强制启动

lishixinzhi/Article/program/Oracle/201311/19075

//举例子,比如你在写一个级联删除的方法的时候,为了保证数据完整性,删除的时候一定要确定该删的都删了才行,否则就要回滚,下面是删除方法的例子:public boolean delete(int sID) {//成功删除会返回true;

 dbc = new DataBaseConnection();//根据你自己的方式创建数据库的连接

 Connection con = dbcgetConnection();//得到Connection

 try {

consetAutoCommit(false);// 更改JDBC事务的默认提交方式,默认是true,是自动提交;

dbcexecuteUpdate("delete from xiao where ID=" + sID);//删除

dbcexecuteUpdate("delete from xiao_content where ID=" + sID);//删除

dbcexecuteUpdate("delete from xiao_affix where bylawid=" + sID);//删除

concommit();//提交JDBC事务,如果没问题,这时才真正的删除了;

consetAutoCommit(true);// 恢复JDBC事务的默认提交方式,这是个好习惯;

dbcclose();//关闭连接

return true;//删除成功

 }

 catch (Exception exc) {

conrollBack();//回滚JDBC事务,出现异常,为保证数据完整性,此次 *** 作回滚,不删除;

excprintStackTrace();//输出异常信息;

dbcclose();//关闭连接

return false;//删除失败

 }

}//顺便说一下,java中JDBC的事务管理,跟你用的是什么数据库没关系,用什么数据库都是这样;

1、正常关闭

正常关闭数据库所用的选项是normal,数据库在关闭前将检查所有的连接,并且发出命令后不允许再有新的用户连接,在等待所有连接都断开后再关闭数据库,再次启动数据库不需要任何恢复过程。

联入sys用户

sql>shutdown normal;

2、紧急关闭

该方式用在某些紧急的情况下,比如通知马上停电,此时需要紧急关闭数据库以应付这些情况。这种方式用的选项是immediate,在这种方式下并不等待所有的用户断开连接再关闭,而是由系统断开连接,然后关闭数据库。

sql>shutdown immediate;

一旦执行了这条命令,则将当前正在处理的sql语句马上停止,然后将所有未提交的事务回退,并且不等待当前联入数据库的用户断开连接,而是由系统强行将各个联接断开。在下次启动数据库时要执行恢复动作,不过是由系统自动执行的,用户不必去了解它。

3、异常关闭

异常关闭选项是abort,此种方式下系统并不做任何检查和断开用户 *** 作以及回退 *** 作,而是直接将数据库现场撤销,这样现场中的数据库数据当然就无效了,数据库自然也就被关掉了。

sql>shutdown abort;

以abort方式关闭数据库时只有一行关闭信息表示关闭了数据库现场。以abort方式关闭的数据库再次启动时必须要进行恢复动作,这些恢复 *** 作同样是系统自动来完成的,需要的时间较长。

多项研究表明,40% 的应用程序故障都是由 *** 作员或用户的错误造成的。人非圣贤,孰能无过?但是,这些错误很难避免,而且在没有事先规划和使用正确技术的情况下尤其难以恢复。这样的错误会导致“逻辑”数据损坏,或者导致 IT 基础架构的一个或多个组件停止运行。纠正个别组件的错误相对来说简单,而检测并纠正逻辑数据的损坏,例如意外删除了有价值的数据时,所耗费的 *** 作将导致业务产出的巨大损失。典型的用户错误可能包括意外删除了有价值的数据,错误删除了数据和错误删除了表。避免人为错误Oracle 数据库体系结构利用了人为错误数据库恢复领域独有的技术进展。Oracle 闪回技术提供了一组新特性,可及时查看数据并在时间上前后滚动数据。使用闪回特性,可以查询历史数据、执行更改分析,以及执行自助修复,以便在数据库联机时从逻辑损坏中恢复。利用 Oracle 闪回技术,您完全可以撤销过去的 *** 作!Oracle9i 引入了闪回查询,从而提供了可从人为错误中恢复的简单、强大和全面的非破坏性机制。它允许用户查看过去某个时间点的数据状态,而无需更改任何数据库结构。 Oracle 数据库 10g 扩展了闪回技术,提供了基于数据库、表、行和事务级别的快速、方便的恢复。闪回技术使恢复过程实现了革命性变化,您只需对更改的数据进行 *** 作。现在,错误恢复所需的时间就相当于错误发生的时间。Oracle 10g 闪回技术包括闪回数据库、闪回表、闪回删除、闪回版本查询以及闪回事务查询。 可以轻松地利用闪回技术进行非修复性 *** 作,如使用闪回查询进行历史审计、利用闪回数据库撤销测试更改。Oracle 数据库 11g 引进了一个创新的方法,使用闪回数据存档来管理和查询长期的历史数据。该版本还提供了简单的一步式事务撤销 *** 作,实现了新的闪回事务功能。 Oracle 数据库 11g 中的新特性闪回数据存档 闪回数据存档能够以高度的应用程序透明性、安全性及高效的方式自动跟踪和维护对所有 Oracle 数据的历史更改。作为 Oracle Total Recall 选件的组成部分,闪回数据存档为企业提供了快速、集中和极其高效的解决方案,以满足管理所有历史数据的需要。闪回数据存档自动跟踪对数据库中所存储数据的每个更改,同时维护一个安全、高效和易于访问的历史数据存档。捕获的历史数据可以根据业务需要保存任意长的时间,并且可以使用闪回 SQL 查询方便地进行访问。在现有表和新建表上均可立即启用历史数据跟踪,更重要的是,以一种完全应用程序透明的方式进行跟踪。 闪回数据存档提供了一个高性能的、存储优化的、具有集中管理界面的解决方案,可以满足组织对数据保留和更改控制的需求。使用闪回数据存档进行历史数据跟踪的主要好处包括: 应用程序透明: 在应用程序没有更改或更改很小的情况下,可以在一个或多个表上立即启用历史数据捕获。因此,客户可以使用该特性捕获打包应用程序以及自行开发的应用程序的历史数据。 无缝访问: 可以使用熟悉的闪回 SQL 结构轻松访问历史数据。闪回数据存档包括对闪回查询的支持。应用程序可以及时无缝地查询不同时间点的表历史数据。无需拍摄特殊快照既可利用该特性。 安全性: 历史数据一旦生成,任何用户都不能进行修改。这就实现了即取即用,而无需特殊或额外的设置。对内部历史表的访问限制为只读。不允许用户(包括管理员)进行 DML *** 作。由于通过闪回查询机制提供了无缝访问,因此应用程序无需直接查询内部历史表。 最小的性能开销: 常规用户事务几乎没有影响。闪回数据存档采用轻型机制来标记要存档的跟踪表上的 DML *** 作。通过稍后介绍的后台进程异步生成实际历史记录并进行存档。 存储优化: 在内部对历史数据进行分区和高度压缩,以减少占用的存储空间。闪回数据存档采用高效的压缩模式来压缩内部历史表。此外,它还依据范围分区模式对内部历史表进行自动分区。闪回数据存档中的压缩和分区都是自动管理的,无需特殊管理。 集中管理: 闪回数据存档提供了一个基于策略的集中管理界面,实现了大量正在进行中的管理任务自动化。使用闪回数据存档,可以方便地对表进行分组并设置常规保留策略。新表将从所在的闪回数据存档中自动继承保留参数。Oracle 将根据指定的保留策略自动清除所有跟踪表中过期的历史数据。这就可以将管理员从重复的历史数据管理中解放出来,避免了与人工维护有关的成本高昂的错误(如,错误清除了历史数据)。 闪回事务大型数据库应用程序依赖复杂的事务序列,以确保一组插入、更新或删除的原子性和一致性。如果出现一个“问题”事务,管理员必须向前追溯,了解哪些更改受该事务的影响并确定任何依赖关系(例如,“问题”事务之后修改了相同数据的事务),从而确保撤销该事务,保留原始的、好的数据状态和任何相关数据。执行这种事务分析可能很费力,尤其对非常复杂的应用程序。通过闪回事务,使用一个 PL/SQL *** 作即可实现单个事务(还可以包含它依赖的所有事务)的闪回,或者使用直观的 EM 向导来识别并闪回有问题的事务。闪回事务依赖于给定事务及其相关事务的撤销数据和存档重做日志的可用性,以便撤销更改。Oracle 数据库 10g 第 2 版中的新特性恢复点当需要进行 Oracle 数据库时间点恢复 *** 作时,DBA 必须确定数据必须回滚到的时间或 SCN。Oracle 数据库 10g 第 2 版用恢复点简化了时间点恢复。恢复点是用户定义的一个名称,与闪回数据库、闪回表和恢复管理器 (RMAN) 结合使用时可以代替 SCN 或时钟时间,可以通过企业管理器或者用 SQLPlus 或 RMAN 以命令行方式创建。使用恢复点,无需调查事务的 SCN 或时间,使用户能够收藏数据库事务事件。有保证的恢复点确保了始终维护足够的闪回日志,以便返回到恢复点。这意味着快速恢复区将不删除闪回日志,除非当前的保证恢复点不再需要这些日志。可在进行主要数据库更改(如数据库批处理作业或模式升级)之前创建这些特殊恢复点,从而可在需要撤销更改时使用这些恢复点进行闪回。通过RESETLOGS 闪回数据库通过RESETLOGS 闪回数据库使 RESETLOGS *** 作之前创建的闪回日志可用于闪回数据库 *** 作。在 Oracle 数据库 10g 第 2 版中,使用 RESETLOGS 打开数据库后即保留闪回日志。如果直到执行了 RESETLOGS 之后才发现长期存在的逻辑错误,这种情况下该特性非常有用,需要在 RESETLOGS 之前进行闪回。在 Oracle Data Guard 环境中,该功能允许物理备用数据库以读写方式打开,以便稍后闪回更改并将更改转换回物理备用数据库。如果切换 *** 作后发现逻辑错误,可以将主数据库和备用数据库闪回到切换 *** 作前的 SCN 或时间点。Oracle 数据库 10g 第 1 版中的新特性闪回数据库闪回数据库可快速地将 Oracle 数据库倒回至以前的某个时间,以便纠正由逻辑数据损坏或用户错误造成的任何问题。闪回数据库就像数据库的“倒退按钮”。它提供数据库的时间点恢复,而无需先恢复数据库备份。当您希望消除从磁带恢复数据库备份所花的时间时,数据库时间点恢复是一种快速方法。 闪回数据库功能(可使用 FLASHBACK DATABASE 命令从 RMAN 和 SQLPlus 启用)与传统的时间点恢复的效果类似。它允许您将数据库返回到其近期的状态。若要启用闪回数据库功能,用 DBA 配置闪回恢复区。快速恢复区是 Oracle 数据库 10g 的一个新特性,它为 Oracle 数据库中所有与恢复相关的文件和 *** 作提供了统一的存储位置。除了闪回数据库日志外,恢复区还包含存档重做日志和 RMAN 备份。有关快速恢复区的详细信息,请参考 Oracle 备份和恢复文档。 Oracle 在快速恢复区内自动创建和管理闪回日志。因为快速恢复区配置了空间定额,闪回日志要受制于这些磁盘空间限制。闪回日志的大小区别很大,这取决于在给定的闪回日志间隔期间数据库更改的读/写速度。旧程序块版本的副本被写入到闪回日志中。如果一天之内更新了 10% 的数据库程序块,则 24 小时闪回日志的大小约为您数据库大小的十分之一。如果将数据库恢复到过去较早时期可能要求更多的磁盘空间,则 DBA 可能会动态地更改此磁盘定额。 闪回为 Data Guard 提供了易于使用的方法来纠正用户错误。闪回数据库既可用在主数据库上又可用在备份数据库上,可快速地将数据库恢复到较早的时间点,从而避免用户错误。同时,如果管理员决定故障切换到备用数据库,但那些用户错误已被应用于备用数据库(例如,由于启用了实时应用特性),则管理员只需将备用数据库闪回到某个安全的时间点。启用闪回数据库的性能开销不到 2%。您可能不希望牺牲任何生产数据库的性能开销,而是实现一种平衡。如果能在数分钟而不是数小时内恢复数据库,则可避免公司上百万美元的收益损失,您愿意将 2% 的资源用于闪回数据库吗?启用闪回数据库功能有以下几方面好处: 免去了恢复备份的时间。当数据库因遇到灾难性故障而关闭时,公司因无法做生意而导致大量收入损失。 消除了备用数据库重做应用延迟。 闪回数据库与 Data Guard 无缝集成。备用数据库现在可以轻松快速闪回到过去的任意时间点,这样在应用重做过程中就不需要延迟。 意外错误纠正。 闪回数据库提供了 Oracle 数据库的连续快照。数据库可以回退到 SCN 或时间戳。 闪回表当发生人为错误或应用程序错误时,您可能想将一个或多个表状态恢复至故障发生以前的时间点。使用闪回表,DBA 能够将一个或一组表快速轻松地联机恢复到指定时间点。闪回表可在恢复表的同时自动保留其相关属性(如当前索引、触发器和限制),而无需 DBA 查找和恢复应用程序特有的属性。闪回表缓解了执行更为复杂的时间点恢复 *** 作的需求。以下命令将 ORDERS 和 ORDER_ITEMS 表闪回到 7 月 7 日下午 2:33。 FLASHBACK TABLE orders, order_items TO TIMESTAMP (JUL-07-2003, 02:33:00);和闪回查询一样,闪回表也依靠撤销数据来恢复表。因此撤销数据必须可用,这样闪回表才能成功。自动撤销管理特性允许您使用 UNDO_RETENTION 初始化参数指定保留撤销数据的时间。通过使用此参数并适当地规定撤销表空间大小,DBA 能够控制使用闪回表的情况下可修复表的回退时间长短。 DBA 可以使用闪回表特性快速地从人为错误中恢复,它还可以用作自助式修复工具以便从意外修改或删除中恢复。应用程序开发人员可以将闪回表功能合并到他们定制的应用程序中。凭借基于时间点对象的恢复可用性、快速恢复和易用性,该工具相比于介质恢复提供更多的好处。闪回表联机执行恢复 *** 作 将指定表中的所有数据恢复到时间戳或 SCN 描述的先前的时间点。 自动恢复所有的表属性(如索引、触发器以及应用程序所必需的内容),这些应用程序利用闪回的表才能发挥作用。 在分布式环境中维护任何远程状态。例如,所有应用程序要求的表修改都被闪回。 按照约束规定保持数据完整性。Oracle 保留了所有从属对象和参考的完整性。 即使在闪回 *** 作以后,仍然能够将其恢复到最初状态。 闪回删除回收站是一个虚拟容器,所有被删除的对象都驻留在这里。在回收站中,这些对象占据与创建它们时所占据的相同空间。如果在 USERS 表空间中创建表 EMP,那么删除的表 EMP 保留在 USERS 表空间中。并不移动删除的表和任一相关对象(如索引、约束、嵌套表和其他相关对象),仅对它们进行重命名,使其前缀为 BIN$$。可以继续访问删除表中的数据,甚至可以依据删除表使用闪回查询。在删除回收站对象前,每个用户对回收站对象都拥有相同的权利和权限。可以通过查询新回收站视图来查看删除表。回收站中的对象将保留在数据库中,直到删除对象的所有者决定使用新清除命令永久性删除这些对象。按用户的定额对回收站中的对象计数。但闪回删除是一种非破坏性特性。如果发生下面的情况,将通过空间恢复过程自动清除回收站中的对象用户创建新表或添加导致其超出定额的数据。 表空间需要扩展其文件大小,以适应创建/插入 *** 作。 错误删除了表?没问题。使用闪回删除快速撤销删除。 闪回查询闪回查询是随 Oracle9i 一起引入的,它提供了查看存在于以前的数据的能力。默认情况下,数据库上的 *** 作使用最近提交的可用数据。如果希望查询过去某个时间的数据库,那么,可以使用闪回查询特性进行此项 *** 作。此特性可以指定时间或系统更改编号 (SCN),并使用提交的数据从对应时间中进行查询。当使用自动撤销管理时,闪回查询机制最有效。 Oracle 数据库将撤销 *** 作当作第一等级的数据库对象。撤销 *** 作具有持久性,可使数据库系统继续有效,也可导致数据库系统崩溃或关闭。为获取更佳性能,它还与其他数据库对象分享数据库缓冲存储器。Oracle 数据库使用超出事务处理提交范围的撤销 *** 作,提供长期运行查询的读取一致性,并从逻辑损坏中恢复。 Oracle 数据库提供了直接指定为保留而进行的撤销数量的方法。此系统自动回收过期的撤销 *** 作,以便为新事务生成撤销提供空间。撤销保留值的选择取决于长期运行查询的长度以及逻辑损坏的恢复需求。然而,用户可以不选择指定的撤销保留,以及允许系统为指定的撤销空间提供最佳保留。此最佳保留考虑到长期运行查询以及从逻辑损坏中恢复的最佳可能范围。并不保证默认的撤销保留。如果用尽用于现行事务的过期撤销,那么,系统可以使用最早的未过期撤销 *** 作。 如果UNDO_RETENTION 设置为大于 5 天,那么,Oraclee 数据库 10g 第 1 版中的一项新功能是可以查询过去 5 天以前的数据。只要为撤销表空间数据文件分配足够的磁盘空间,那么,Oracle 将维护一段时间内的撤消 *** 作。下面描述了确保数据库可以使用依赖于撤销 *** 作的闪回查询和其他闪回特性所需要的步骤:确保数据库使用一个撤销表空间。将 UNDO_MANAGEMENT 初始化参数设置为自动指定。 将UNDO_RETENTION 初始化参数设置为一个可以使撤销 *** 作保留足够时间的值,从而可以及时成功返回您的最长查询或者从人为错误中恢复。 为了保证未过期的撤销不被覆盖,设置撤销表空间的 RETENTION GUARANTEE 子句。 闪回查询的一个独有特性是可以查看过去的数据,然后正确选择如何处理此信息。您可以进行分析,然后撤销更改,或者捕获更改的数据以供将来处理。闪回查询机制非常灵活,可以用于很多场合。可用于:查询过去存在的数据。 将当前数据与过去的数据进行比较。可以比较单独行或进行更复杂的比较,如查找交集或合并。 恢复已删除或更改的数据。 闪回版本查询闪回版本查询提供了审计表行以及检索有关更改行事务信息的方法。它检索所有提交的行版本,这些行位于或曾经位于发出查询的时间和过去某一时间点之间。它利用自动撤销管理完成此项 *** 作。 闪回版本查询是 SQL 的扩展,可用于检索指定表中不同行的版本,此表存在于特定时间段内。对于任一指定的表,每次执行 COMMIT 语句时,都会创建一个新行版本。闪回版本查询返回存在于指定时间段内的每个行版本的行。使用 SELECT 语句的 VERSIONS BETWEEN 子句调用闪回版本查询功能。 闪回版本查询提供了新的附加列,这些列提供了有关行数据事务的详细信息,此行数据允许 DBA 查明 Oracle 数据库中数据更改的时间和方式。 VERSIONS_XID — 创建此行版本的事务 id VERSIONS_OPERATION — 创建此行版本的 *** 作(如删除、插入和更新) VERSIONS_STARTSCN — 此行版本首次中出现时的 SCN VERSIONS_ENDSCN — 此行版本首次进行更改时的 SCN。 闪回版本查询是 DBA 运行分析和回答“这是怎么发生的?”问题的强大工具。DBA 不仅可以运行手动分析,而且闪回版本查询还是应用程序开发人员的强大工具。可以构建用于审计目的的自定义应用程序。并不是每个人都能够真正解释他/她的 *** 作。 闪回事务查询您可能会发现表中的数据不知何故被不正确地更改了。为了研究该更改,可使用多个闪回查询及时查看指定点的行数据。更高效的方法是,使用闪回版本查询特性查看一定时间内对行进行的所有更改以及相关的事务 id。该特性允许将 VERSIONS BETWEEM 子句附加至 SELECT 语句,后者指定 SCN 或希望查看其间行值发生变化的时间戳范围。 一旦确定错误事务,就可使用闪回事务查询特性识别该事务进行的其他更改,并请求撤销 SQL 来冲销这些更改。您可以通过 FLASHBACK_TRANSACTION_QUERY 视图获得事务历史记录和撤消 SQL。 如果需要将错误事务的结果倒退回去,可以手动执行撤销 SQL 语句,从而可以轻松地从用户或应用程序错误中恢复。闪回事务查询可以提高对数据库中问题的联机诊断能力,并利于执行事务分析和审计。总结人为错误是导致系统故障的主要原因之一。这些错误很难避免,而且在没有事先规划和使用正确技术的情况下尤其难以恢复。“正确”技术是:Oracle 数据库 11g。为什么犯错误只需几秒,而恢复却要花费数小时或数天?不应如此并且现在也不会如此。闪回通过只在更改数据上运行引发了恢复变革。一条命令即可修复人为错误导致的损坏。闪回技术在去除了恢复的复杂性的同时,缩短了从难以预测的人为错误恢复的时间。

以上就是关于oracle数据库中数据回滚的概念全部的内容,包括:oracle数据库中数据回滚的概念、Oracle的Undo机制是什么、请教ORACLE高手等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10074964.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存