oracle 03-08 undo

Managing Undo Data

Objectives
After completing this lesson, you should be able to:
• Explain DML and undo data generation
• Monitor and administer undo data
• Describe the difference between undo data and redo data
• Configure undo retention
• Guarantee undo retention
• Enable temporary undo
• Use the Undo Advisor

目标

完成本课程后,您应该能够:

解释DML和撤消数据生成

监视和管理撤消数据

描述撤消数据和就绪数据之间的区别

配置和保留

保证和保留

启用临时撤消

使用撤消顾问

 

Undo Data: Overview
Undo data is:
• A record of the action of a transaction
• Captured for every transaction that changes data
• Retained at least until the transaction is ended
• Used to support:
– Rollback operations
– Read-consistent queries
– Oracle Flashback Query, Oracle Flashback Transaction, and Oracle Flashback Table
– Recovery from failed transactions

撤消日期:概述

撤消日期为:

交易行为的记录

为每个更改数据的事务捕获

至少在交易结束前保留

用于支持:

回滚操作

读取一致性查询

Oracle Flashback闪回查询、Oracle Flashback事务和Oracle Flashback表

从失败的事务中恢复

 

SQL> update departments set DEPARTMENT_NAME='HR' where DEPARTMENT_ID=270;

SQL> select * from departments;

 

 

 

 

 

Transactions and Undo Data
• Each transaction is assigned to only one undo segment.
• An undo segment can service more than one transaction at a time.

事务处理和撤消数据

每个事务只分配给一个撤消段。

撤消段一次可以服务多个事务。

 

DML是以select、insert、update、delete开头的所有SQL语句。

DML发生时,可通过rollback语句回撤

undo与redo

undo:撤销,也就是取消之前的操作。

redo:重做,重新执行一遍之前的操作。

 

什么是REDO
  REDO记录transaction logs,分为online和archived。以恢复为目的。
  比如,机器停电,那么在重起之后需要online redo logs去恢复系统到失败点。
  比如,磁盘坏了,需要用archived redo logs和online redo logs去恢复数据。
  比如,truncate一个表或其他的操作,想恢复到之前的状态,同样也需要。
什么是UNDO
  REDO 是为了重新实现你的操作,而UNDO相反,是为了撤销你做的操作,比如你得一个TRANSACTION执行失败了或你自己后悔了,则需要用 ROLLBACK命令回退到操作之前。回滚是在逻辑层面实现而不是物理层面,因为在一个多用户系统中,数据结构,blocks等都在时时变化,比如我们 INSERT一个数据,表的空间不够,扩展了一个新的EXTENT,我们的数据保存在这新的EXTENT里,其它用户随后也在这EXTENT里插入了数据,而此时我想ROLLBACK,那么显然物理上讲这EXTENT撤销是不可能的,因为这么做会影响其他用户的操作。所以,ROLLBACK是逻辑上回滚,比如对INSERT来说,那么ROLLBACK就是DELETE了。

 

Storing Undo Information
• Undo information is stored in undo segments, which are stored in an undo tablespace.
• Undo tablespaces:
– Are used only for undo segments
– Have special recovery considerations
– May be associated with only a single instance
– Require that only one of them be the current writable undo tablespace for a given instance at any given time

存储撤消信息

撤销信息存储在撤销段中,撤销段存储在撤销表空间中。

撤消表空间:

仅用于撤消段

有特殊的恢复注意事项

可能只与一个实例关联

要求在任何给定时间,只有其中一个是给定实例的当前可写撤消表空间

一个数据库仅能对应一个活跃的undo表空间,但可以在不同的undo表空间中进行切换

 

 

Comparing Undo Data and Redo Data
Redo log
files
Undo
segment
Undo Redo
Record of How to undo a change How to reproduce a
change
Used for Rollback, read consistency,
flashback
Rolling forward
database changes
Stored in Undo segments Redo log files

比较撤消数据和重做数据

就绪日志

文件夹

撤销。

段

撤消就绪

如何撤消更改的记录如何复制

改变

用于回滚、读取一致性,

倒叙

向前滚动

数据库更改

存储在撤消段就绪日志文件中

 

 

Managing Undo
Automatic undo management:
• Fully automated management of undo data and space in a dedicated undo tablespace
• For all sessions
• Self-tuning in AUTOEXTEND tablespaces to satisfy long-running queries
• Self-tuning in fixed-size tablespaces for best retention
DBA tasks in support of Flashback operations:
• Configuring undo retention
• Changing undo tablespace to a fixed size
• Avoiding space and “snapshot too old” errors

撤消管理

自动撤消管理:

在专用的撤消表空间中对撤消数据和空间进行全自动管理

对于所有会话

自动扩展表空间中的自调整以满足长时间运行的查询

在固定大小的表空间中进行自我调整以获得最佳保留

支持闪回操作的DBA任务:

配置和保留

将撤消表空间更改为固定大小

避免空间和快照太旧的错误

 

 

Configuring Undo Retention
• UNDO_RETENTION specifies (in seconds) how long already committed undo information is to be retained.
• Set this parameter when:
– The undo tablespace has the AUTOEXTEND option enabled
– You want to set undo retention for LOBs
– You want to guarantee retention

撤消保留配置

撤消保留指定(以秒为单位)保留已提交的撤消信息的时间。

在以下情况下设置此参数:

undo表空间启用了AUTOEXTEND选项

要为LOB设置撤消保留

你想保证留下来

 

SQL> show parameter undo  显示undo参数

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
temp_undo_enabled boolean FALSE
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1

 

 

 

Categories of Undo
Category Description
Active: Uncommitted undo information
Supports an active transaction and is never overwritten
Unexpired: Committed undo information
Required to meet the undo retention interval
Expired: Expired undo information
Overwritten when space is required for an active transaction

撤销的类别

类别

活动:未提交和信息

支持活动事务且从不超过

未到期:承诺和信息

需要满足撤消保留间隔

过期:过期和信息

当活动事务需要空间时覆盖

 

 

 

Changing an Undo Tablespace to a Fixed Size
• Rationale:
– Supporting Flashback operations
– Limiting tablespace growth
• Steps:
1. Run regular workload.
2. Self-tuning mechanism establishes minimum required size.
3. (Optional) Use the Enterprise Manager Cloud Control Undo Advisor, which calculates required size for future growth.
4. (Optional) Change undo tablespace to a fixed size.

将撤消表空间更改为固定大小

理性的:

支持闪回操作

限制表空间增长

步骤:

一。运行常规工作负载。

2。自调整机制建立所需的最小大小。

三个。(可选)使用Enterprise Manager云控制撤消顾问,它计算未来增长所需的大小。

四个。(可选)将撤消表空间更改为固定大小

 

Temporary Undo: Overview

 

 

Temporary Undo: Benefits
• Temporary undo reduces the amount of undo stored in the undo tablespaces.
• Temporary undo reduces the size of the redo log.
• Temporary undo enables DML operations on temporary tables in a physical standby database with the Oracle Active Data Guard option.

临时撤消:好处

临时撤消减少了撤消表空间中存储的撤消量。

临时撤消会减小就绪日志的大小。

临时撤消使用Oracle Active Data Guard选项对物理备用数据库中的临时表启用DML操作。

 

Enabling Temporary Undo

• Enable temporary undo for a session:

SQL> ALTER session SET temp_undo_enabled = true;

• Enable temporary undo for the database instance:

SQL> ALTER system SET temp_undo_enabled = true;

• Temporary undo mode is selected when a session first uses a temporary object.

启用临时撤消

为会话启用临时撤消:

为数据库实例启用临时撤消:

当会话首次使用临时对象时,将选择临时撤消模式。

 

Monitoring Temporary Undo

SELECT to_char(BEGIN_TIME,'dd/mm/yy hh24:mi:ss'),
TXNCOUNT,MAXCONCURRENCY,UNDOBLKCNT,USCOUNT,NOSPACEERRCNT
FROM V$TEMPUNDOSTAT;
TO_CHAR(BEGIN_TIM TXNCOUNT MAXCONCURRENCY UNDOBLKCNT USCOUNT NOSPACEERRCNT
----------------- -------- -------------- ---------- ------- -------------
…
19/08/12 22:19:44 0 0 0 0 0
19/08/12 22:09:44 0 0 0 0 0
…
19/08/12 13:09:44 0 0 0 0 0
19/08/12 12:59:44 3 1 24 1 0
576 rows selected.
SQL>

 

查看当前undo的使用情况

 

 

Quiz
All you need to do to guarantee that all queries under 15 minutes will find the undo data needed for read consistency, is set the UNDO_RETENTION parameter to 15 minutes.

测验。

要确保15分钟内的所有查询都能找到读取一致性所需的撤消数据,只需将撤消保留参数设置为15分钟。错误

需要用下面语句确保才行

SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;

 

Summary
In this lesson, you should have learned how to:
• Explain DML and undo data generation
• Monitor and administer undo data
• Describe the difference between undo data and redo data
• Configure undo retention
• Guarantee undo retention
• Enable temporary undo
• Use the Undo Advisor

摘要

在本课中,您应该学习如何:

解释DML和撤消数据生成

监视和管理撤消数据

描述撤消数据和就绪数据之间的区别

配置和保留

保证和保留

启用临时撤消

使用撤消顾问

posted @ 2020-06-20 22:02  世界树  阅读(320)  评论(0)    收藏  举报