《2 Day DBA》管理undo date
作者:互联网
从 Oracle 数据库 11 g开始,对于默认安装,Oracle 数据库会自动管理撤消数据。通常不需要数据库管理员 (DBA) 干预。但是,如果您的安装使用 Oracle 闪回操作,那么您可能必须执行一些撤消管理任务以确保这些操作的成功。
关于undodate
当事务修改数据时,Oracle 数据库会在修改之前复制原始数据。修改数据的原始副本称为撤消数据。出于以下原因,需要保存此信息:
-
如果需要回滚,则撤消对数据库所做的任何未提交的更改。可能需要回滚,因为用户想要撤消被误导或无意的事务的更改,或者它可能是恢复操作的一部分。
-
提供读取一致性,这意味着每个用户都可以获得一致的数据视图,即使数据可能正在发生其他更改。通过读取一致性,用户会话不会看到其他用户会话中未提交的更改(有时称为脏读)。例如,如果用户在上午 10:00 发出查询,并且查询持续了 15 分钟,那么查询结果反映了上午 10:00 数据的整个状态,从查询开始处开始,而不管之后其他用户执行的更新或插入操。
-
启用某些 Oracle 闪回功能,例如 Oracle 闪回查询和 Oracle 闪回表,使您能够查看或将数据恢复到以前的时间点。
撤消表空间
通过自动撤消管理,撤消数据存储在一个撤消表空间。撤消表空间具有永久表空间之外的其他属性。可以有多个撤消表空间,但对于一个 Oracle 实例,只能有一个处于活动状态。
当您使用数据库配置助手 (DBCA) 创建数据库时,它会创建一个名为UNDOTBS1 的自动扩展撤消表空间,最大扩展大小为 32,767 MB。
Undo Retention撤消保留
Oracle 数据库自动确保活动事务正在使用的撤消数据在该事务提交之前永远不会被覆盖。事务提交后,撤消数据占用的空间可以重新使用或覆盖。在这种情况下,如果撤消表空间中的空间变得稀缺,则可能会覆盖撤消数据。
即使在事务提交之后,保留(而不是覆盖)其撤消数据也很有用,以确保 Oracle 闪回功能的成功以及长时间运行查询的读取一致性。为此,数据库维护并自动调整撤消保留期。提交的撤消数据(其期限小于撤消保留期)将保留以供查询或Oracle闪回操作使用。
关于管理撤消数据
尽管默认情况下 Oracle 数据库自动管理撤消数据和撤消表空间,但如果您的安装使用 Oracle 闪回特性,那么您可能必须执行一些撤消管理任务以确保这些操作的成功。
导致snapshot
too
old
错误的 Oracle 闪回操作表明您必须进行干预以确保保留足够的撤消数据以支持这些操作。
以下方法更好地支持 Oracle 闪回操作:
- 将自动扩展表空间的最小撤消保留期设置为与预期的最长 Oracle 闪回操作一样长。您可以通过设置
UNDO_RETENTION
初始化参数来实现此目标。 - 将撤消表空间更改为固定大小。
对于自动扩展的撤消表空间,Oracle 数据库始终自动将撤消保留期调整为比运行时间最长的活动查询稍长。但是,此自动调整的保留期可能不足以适应 Oracle 闪回操作。如果撤消表空间禁用了自动扩展,或者具有固定大小,则 Oracle 数据库使用不同的方法来调整撤消保留期,以更好地适应 Oracle 闪回操作。
要将撤消表空间更改为固定大小,您必须选择足够大的表空间大小。如果您选择的撤消表空间大小太小,则可能会出现以下错误:
- DML 可能会失败,因为没有足够的空间来容纳新事务的撤消数据。
- 长时间运行的查询可能会因
snapshot
too
old
错误而失败,这意味着没有足够的撤消数据来实现读取一致性。
Oracle Enterprise Manager Database Express (EM Express) 包括一个撤消顾问,可帮助您确定撤消表空间的固定大小的最小大小。
查看撤消信息
您可以使用 Oracle Enterprise Manager Database Express (EM Express) 中的撤消管理详细信息页面来查看有关撤消配置的信息。例如,您可以查看以下撤消配置信息:
-
撤消表空间的名称和当前大小
-
自动可扩展表空间设置(是或否)
-
当前撤消保留期
笔记:
在多租户容器数据库 (CDB) 中,EM Express 撤消管理功能仅在根中可用,在可插拔数据库 (PDB) 中不可用。
标签:闪回,撤消,DBA,数据库,空间,Oracle,date,数据,Day 来源: https://www.cnblogs.com/wonchaofan/p/16676362.html