验证Oracle数据库回滚操作是否成功

时间:2014-07-05 05:48:24

标签: oracle oracle11g

如何验证Oracle数据库回滚操作是否成功?我可以使用活动日志中的行数和事件日志中的行数吗?

2 个答案:

答案 0 :(得分:1)

V$TRANSACTION不包含历史信息,但它包含有关所有活动事务的信息。在实践中,这通常足以快速,轻松地监控回滚并估计它们何时完成。

具体而言,USED_UBLK和USED_UREC列包含剩余的UNDO块和记录的数量。 USED​​_UREC并不总是与行数相同;有时数字较高,因为它包含索引条目,有时数字较低,因为它将插入组合在一起。

在长时间回滚期间,这些数字将减少,直到达到0.表中的任何行都不表示事务已成功提交或回滚。下面是一个简单的例子。

create table table1(a number);
create index table1_idx on table1(a);
insert into table1 values(1);
insert into table1 values(1);
insert into table1 values(1);

select used_ublk, used_urec, ses_addr from v$transaction;

USED_UBLK   USED_UREC   SES_ADDR
---------   ---------   --------
1           6           000007FF1C5A8EA0

答案 1 :(得分:0)

Oracle LogMiner是Oracle数据库的一部分,使您可以通过SQL界面查询在线和归档的redo log files。重做日志文件包含有关数据库活动历史记录的信息。

  

LogMiner的好处

     

对用户数据或数据库字典所做的所有更改都是   记录在Oracle重做日志文件中,以便数据库恢复   可以进行操作。

     

因为LogMiner提供了一个定义明确,易于使用的和   可以使用重做日志文件的综合关系接口   作为一个强大的数据审计工具,以及一个复杂的工具   数据分析。以下列表描述了一些关键功能   LogMiner的:

     
      
  • 精确定位数据库的逻辑损坏,例如错误   在应用程序级别,可能已经开始。这些可能包括   错误,例如由于错误删除了错误的行   WHERE子句中的值不正确,行更新不正确   值,错误的索引被删除,等等。例如,用户   应用程序可能会错误地更新数据库以提供给所有员工   100%的工资增长而不是10%的增加,或者a   数据库管理员(DBA)可能会意外删除关键系统   表。重要的是要确切地知道何时发生错误   您知道何时启动基于时间或基于更改的恢复。这个   使您可以将数据库还原到之前的状态   腐败。请参阅基于列值查询V$LOGMNR_CONTENTS   有关如何使用LogMiner来完成此任务的详细信息。

  •   
  • 确定您必须执行的操作   事务级别的细粒度恢复。如果你完全   理解并考虑现有的依赖关系,它可能是   可以执行特定于表的撤消操作以返回   表到其原始状态。这是通过申请来实现的   LogMiner提供的特定于表的重构SQL语句   它们最初发出的相反顺序。看到   Scenario 1: Using LogMiner to Track Changes Made by a Specific User举个例子。

         

    通常你必须将表恢复到以前的状态,   然后应用归档的重做日志文件将其向前滚动。

  •   
  • 通过趋势分析进行性能调整和容量规划。您   可以确定哪些表获得最多的更新和插入。那   信息提供了磁盘访问的历史视角   统计信息,可用于调整目的。有关,请参阅Scenario 2: Using LogMiner to Calculate Table Access Statistics   示例

  •   
  • 执行postauditing。 LogMiner可用于跟踪任何数据   操纵语言(DML)和数据定义语言(DDL)   在数据库上执行的语句,它们的顺序   执行,执行谁。 (但是,要将LogMiner用于此类   目的,你需要知道事件发生的时间,以便你   可以指定适当的日志进行分析;否则你可能会   必须挖掘大量的重做日志文件,这可能需要很长时间   时间。考虑使用LogMiner作为审计的补充活动   数据库使用。请参阅Oracle Database Administrator's Guide   有关数据库审计的信息。)

  •   

享受。