如何验证Oracle数据库回滚操作是否成功?我可以使用活动日志中的行数和事件日志中的行数吗?
答案 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 有关数据库审计的信息。)
享受。