管理撤销数据(三)

Undo段

1. Undo段的概念

Undo段是Oracle数据库中用于存储事务修改前数据的结构。它们的主要作用是支持事务的回滚、实现读一致性以及支持数据库恢复。

2. Undo段的类型

2.1 SYSTEM Undo Segment
  • 定义:在数据库创建时自动生成,位于SYSTEM表空间中。
  • 用途:用于管理对SYSTEM表空间中对象的更改。
  • 特性:无论在手动模式还是自动模式下,SYSTEM Undo段的行为一致。
2.2 Non-SYSTEM Undo Segments
  • 定义:用于管理非SYSTEM表空间中的事务。
  • 模式
    • 自动模式(Auto mode)
      • 需要至少一个UNDO表空间,Oracle会自动管理Undo段。
    • 手动模式(Manual mode)
      • 需要数据库管理员手动创建Undo段。
      • 私有Undo段(Private)
        • 由单个实例使用,通常在参数文件中指定。
        • 可以通过 ALTER ROLLBACK SEGMENT 命令显式上线。
      • 公共Undo段(Public)
        • 形成一个Undo段池,供多个实例共享,通常用于Oracle RAC环境。
        • 允许多个实例访问同一Undo段,提高了资源的利用率。
2.3 Deferred Undo Segments
  • 定义:在表空间被下线时创建的Undo段。
  • 用途:用于在表空间重新上线时回滚未提交的事务。
  • 特性:当不再需要时,Oracle会自动删除这些Undo段。

3. Undo段的功能

3.1 事务回滚
  • 当事务执行过程中发生错误或用户决定撤销更改时,Undo段中的旧数据会被用来恢复原始状态。
3.2 读一致性
  • 在一个事务执行时,其他事务不能看到未提交的更改。Undo段提供了旧数据的视图,确保在查询时能够看到一致的数据状态。
3.3 数据库恢复
  • 在实例故障或崩溃后,Oracle会使用Undo段中的信息来撤销未提交的事务,确保数据库在重新启动时处于一致状态。

4. Undo段的管理

  • 自动管理:在自动模式下,Oracle会自动创建和管理Undo段,用户只需指定UNDO表空间。
  • 手动管理:在手动模式下,数据库管理员需要创建和管理Undo段,确保它们的可用性和性能。

5. 性能考虑

  • Undo表空间的大小:需要根据系统的事务量和并发性来合理配置Undo表空间的大小,以避免Undo段不足导致的性能问题。
  • Undo段的使用:监控Undo段的使用情况,确保它们不会过度增长,影响数据库性能。

6. 相关视图

  • DBA_ROLLBACK_SEGS:查看所有Rollback段的信息。
  • V$UNDOSTAT:提供Undo段的使用统计信息。
  • V$ROLLSTAT:显示Undo段的状态和性能指标。

通过理解这些细节,您可以更好地管理和优化Oracle数据库中的Undo段,以确保事务的完整性和数据库的性能。

### 自动Undo管理的概念

1. Undo表空间
  • 定义:自动Undo管理使用一个专门的UNDO表空间来存储Undo数据。
  • 配置:每个实例分配一个UNDO表空间,大小应根据实例的工作负载进行合理配置,以确保有足够的空间来存储Undo数据。
2. Undo数据的自动维护
  • 自动管理:Oracle服务器会自动创建、维护和管理UNDO表空间中的Undo段,用户无需手动干预。
  • 优点:这种自动管理减少了数据库管理员的工作负担,提高了系统的可靠性和性能。
3. Undo段的命名约定
  • 命名规则:自动创建的Undo段遵循特定的命名约定,通常以“_SYSSMUn$”开头。
    • 示例
      • _SYSSMU1$
      • _SYSSMU2$
  • 说明:这些命名规则帮助用户识别和管理自动生成的Undo段。

4. 自动Undo管理的工作流程

  • 当事务对数据进行修改时,Oracle会在UNDO表空间中创建Undo段以保存修改前的数据。
  • 当事务提交或回滚时,Oracle会自动更新Undo段,确保数据的一致性和完整性。
  • 在实例崩溃或故障恢复时,Oracle会使用UNDO表空间中的数据来撤销未提交的事务,确保数据库恢复到一致状态。

5. 配置和监控

  • 配置UNDO表空间:可以通过SQL命令创建和配置UNDO表空间,例如:
    CREATE TABLESPACE undotbs1 DATAFILE 'undotbs01.dbf' SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
    ALTER SYSTEM SET UNDO_TABLESPACE=undotbs1;
    
  • 监控Undo使用情况:可以使用视图如V$UNDOSTATV$ROLLSTAT来监控Undo段的使用情况和性能指标。

其他参数

1.1 UNDO_SUPPRESS_ERRORS参数
  • 作用:UNDO_SUPPRESS_ERRORS参数设置为TRUE时,可以在自动Undo管理模式下执行手动操作时抑制错误。这对于在应用程序和脚本转换为自动Undo管理模式之前使用Undo表空间功能非常有用。
  • 示例:通过设置ALTER SESSION SET UNDO_SUPPRESS_ERRORS = true,可以抑制ORA-30019错误,使得在自动Undo管理模式下执行手动操作时不会触发错误。
1.2 UNDO_RETENTION参数
  • 作用:UNDO_RETENTION参数控制保留Undo数据的时间,以提供一致性读取。通过设置UNDO_RETENTION参数,可以确保数据库保留足够长的Undo数据,以支持长时间查询和一致性读取。
  • 设置:UNDO_RETENTION参数以秒为单位定义,可以在初始化文件中设置或使用ALTER SYSTEM命令动态修改。例如,ALTER SYSTEM SET UNDO_RETENTION=900;表示保留Undo数据15分钟。

2. UNDO表空间大小调整

  • 计算UNDO表空间大小:调整UNDO表空间大小需要考虑多个因素,包括UNDO_RETENTION参数设置、每秒生成的Undo数据块数量以及数据库块大小。
  • 计算公式:通过查询V$UNDOSTAT视图获取每秒生成的Undo块数量,然后根据公式计算所需的字节数,并将其转换为MB。这有助于确定UNDO表空间的合适大小,以满足数据库的Undo数据存储需求。

3. Undo配额

  • 功能:通过资源计划,可以对用户进行分组,并为每个组分配最大Undo空间限制。这有助于控制长事务和错误编写的事务消耗的资源。
  • UNDO_POOL:UNDO_POOL是一个资源管理器指令,用于定义资源组允许的Undo空间量。当一个组超出其限制时,将无法执行新事务,直到当前事务完成或中止。

4. 获取Undo段信息

  • 视图查询:通过查询DBA_ROLLBACK_SEGS、V$ROLLNAME、V$ROLLSTAT、V$UNDOSTAT、V$SESSION和V$TRANSACTION等视图,可以获取有关Undo段的详细信息,包括Undo段的状态、统计信息以及当前活动事务使用的Undo段情况。
  • 用途:这些信息有助于监控Undo段的使用情况,优化Undo管理策略,并确保数据库的Undo数据得到有效管理和利用。

一些视图或表格

以下是关于DBA_ROLLBACK_SEGSV$ROLLNAMEV$ROLLSTATV$UNDOSTATV$SESSIONV$TRANSACTION视图的详细字段说明:

1. DBA_ROLLBACK_SEGS

此视图提供有关所有回滚段的信息。

字段名含义
SEGMENT_NAME回滚段的名称
OWNER回滚段的所有者(通常是SYS或PUBLIC)
TABLESPACE_NAME回滚段所在的表空间名称
STATUS回滚段的状态(ONLINE/OFFLINE)
EXTENTS回滚段的区块数
INITIAL_EXTENT初始区块大小
NEXT_EXTENT下一个区块的大小
MIN_EXTENTS最小区块数
MAX_EXTENTS最大区块数
PCT_INCREASE区块增长百分比

2. V$ROLLNAME

此视图提供当前实例中所有回滚段的名称。

字段名含义
USN回滚段的唯一标识符
NAME回滚段的名称
STATUS回滚段的状态(ONLINE/OFFLINE)

3. V$ROLLSTAT

此视图提供有关回滚段使用情况的统计信息。

字段名含义
USN回滚段的唯一标识符
EXTENTS回滚段的区块数
RSSIZE回滚段的大小(字节)
HWMSIZE回滚段的高水位大小(字节)
XACTS当前活动的事务数
STATUS回滚段的状态(ONLINE/OFFLINE)

4. V$UNDOSTAT

此视图提供Undo段的统计信息,通常用于监控Undo使用情况。

字段名含义
BEGIN_TIME统计开始时间
END_TIME统计结束时间
UNDO_BLKS在该时间段内生成的Undo块数
TXN_COUNT在该时间段内的事务数
MAXQUERY在该时间段内的最大查询时间(秒)
MAXRETENTION在该时间段内的最大保留时间(秒)

5. V$SESSION

此视图提供有关当前会话的信息。

字段名含义
SID会话标识符
SERIAL#会话序列号
USERNAME当前会话的用户名
STATUS会话状态(ACTIVE/INACTIVE)
OSUSER操作系统用户
MACHINE客户端机器名称
PROGRAM客户端程序名称
LOGON_TIME登录时间

6. V$TRANSACTION

此视图提供有关当前活动事务的信息。

字段名含义
XIDUSN事务的回滚段唯一标识符
UBAFILUndo块文件号
UBABLKUndo块号
USED_UBLK已使用的Undo块数
STATUS事务状态(ACTIVE/COMMITTED/ROLLBACK)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远歌已逝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值