概述:
1. 回滚段已过时(undo_management = maual),今后都以撤销段为概念(undo_management = auto).
2. 撤销段只能存在于专门针对撤销目的创建的某个表空间内,而回滚段则可以被创建在任何表空间内.
3. 回滚段呆在数据库创建阶段,除了数据字典之外,ORACLE还会在SYSTEM表空间内创建一个过时的回滚段,这个回滚段在数据库创建期间使用,但是决不会在正常运行期间使用.
4. 撤销段的类型命名为TYPE2 UNDO,而回滚段为ROLLBACK,即为TYPE1 UNDO.
5. 一个数据库中可以存在多个撤销表空间,但是在任意给定时刻都只能使用一个撤销表空间.
6. 撤销表空间必须被创建为持久的/本地管理的表空间.
7. 任何一个事务都只能受一个撤销段保护,一个事务生成的撤销数据无法被分配到多个撤销段中,因此撤销段大小可变.如果某个事务填满了自己使用的撤销段,那么ORACLE会自动为该撤销段添加另一个区间,从而使这个事务能继续进行.
--常规查询
select s.BEGIN_TIME,
s.END_TIME,
s.UNDOBLKS, -- 撤销数据量
s.MAXQUERYLEN, -- 最长查询的耗时(sec)
s.SSOLDERRCNT -- 是否存在快照过旧
from v$undostat s
-- 预计所需的UNDO空间大小
select
(
(select max(s.UNDOBLKS)/600*max(s.MAXQUERYLEN) from v$undostat s)
-- 该视图记录是每十分钟一条记录
*
(select value from v$parameter t where t.name='db_block_size')
)/1024/1024/1024 as "预计UNDO空间(GB)"
from dual;
-- 查看事务回滚段的使用情况
select s.SID,
s.SERIAL#,
s.MACHINE,
s.PROGRAM,
t.START_TIME,
t.USED_UBLK,
r.STATUS,
s.USERNAME,
r.segment_name
from v$transaction t, v$session s, dba_rollback_segs r
where t.SES_ADDR = s.SADDR
and t.XIDUSN = r.segment_id
-- 针对某表空间启动撤销保留保证
alter tablespace <tablespace_name> retention guarantee;
-- UNDO自动管理时初始参数中的设置
undo_management=AUTO
undo_tablespace=UNDOTBS1
undo_retention=秒数
注:如果未指定undo_tablespace,则ORACLE会利用SYSTEM表空间来存储回复记录,应避免这种情况发生,否则数据库内容易产生磁盘碎片问题。
-- 建立回复表空间
CREATE UNDO TABLESPACE "UNDOTBS1" DATAFILE '/oradata/undotbs01.dbf' SIZE 5303M REUSE
-- 切换回复表空间
alter system set undo_tablespace='<新的回复表空间名称>'
-- 删除回复表空间
drop tablespace <表空间名>
注:如果表空间内含有其他数据,则无法删除它,需使用:drop tablespace <表空间名> including contents [and datafiles]
-- 回复表空间离线
alter tablespace undotbs1 offline immediate;
分享到:
相关推荐
一般情况下,Oracle 会分配 10 个普通段和一个 system 系统回滚段,system 回滚段主要用于数据字典相关事物提供服务。10 个普通段和其他的表段、索引段一般,都可以从 dba_segments、dba_extents 中查找到。系统创建...
Undo表空间是Oracle数据库中用于存储undo记录(即回滚段)的特定类型表空间。这些记录在事务进行过程中被创建,记录了数据修改前的状态,以便在事务回滚或在读一致性查询中提供历史数据视图。当一个事务提交后,其...
- **Undo Block**: 存储与SCOTT相关的Undo信息。 - **Undo Header Block**: 记录了Undo Block的一些元数据信息。 **查看回滚段块头信息:** - DBA (Database Address): 0x008007ee00000000 - State: 10 (表示这是...
尽管 Undo 信息存储在 Undo 表空间或 Undo 段中,但也会受到 Redo 的保护。换句话说,会把 Undo 数据当成是表数据或索引数据一样,对 Undo 的修改会生成一些 Redo,这些 Redo 将计入日志。 COMMIT 操作 COMMIT ...
- Manual Undo Management:手动管理模式下,数据库管理员需要手动创建并管理Undo表空间,分配和回收Undo段。 - Automatic Undo Management:自动管理模式下,Oracle自动管理Undo表空间,更加方便,但需要开启Undo表...
随着数据库重启和一段时间的监控,发现UNDO表空间的增长停止,并在SMON完成死事务恢复后,空间缩小到正常水平。 此故障的解决过程表明,对于Oracle数据库的故障排查,应从日志分析开始,深入到系统视图和进程分析,...
在创建临时表空间时,可以设置默认的临时表空间,并通过视图查询相关信息。 三、CDB表空间大小查询 在Oracle 12c中,支持多租户架构,CDB(容器数据库)能够包含多个PDB(可插拔数据库)。可以对CDB中的表空间进行...
- `innodb_undo_logs`参数一般保持默认值即可,它控制了系统使用的回滚段数量,但物理上的回滚段数量不会减少。 3. **大事务测试** - 当执行大量插入操作的大事务时,Undo日志会随着事务的增长而增长。例如,在...
在Oracle数据库中,我们可以使用V$ROLLBACK段或V$UNDOSTAT视图来获取undo log的相关信息。在MySQL中,InnoDB存储引擎提供了类似的功能,用户可以通过查询INFORMATION_SCHEMA.INNODB_TRX或INFORMATION_SCHEMA.INNODB_...
在Oracle 9i版本中引入了一项重要的功能——自动撤销管理(Automatic Undo Management,简称AUM),该特性简化了撤销段的管理,并为用户提供了更灵活的数据恢复机制。此外,还引入了闪回查询(Flashback Query)这一...
设置为"AUTO"表示使用自动管理的undo表空间,Oracle会自动分配和管理undo段。如果设置为"MANUAL",则需要手动管理undo表空间。 4. AUTOEXTEND选项:当使用自动管理的undo表空间时,AUTOEXTEND选项允许undo表空间...
- **撤销顾问**: 提供有关撤销数据使用情况的信息,帮助管理员了解撤销表空间的性能,并根据这些信息调整撤销表空间的大小或撤销保留策略。 总之,“Less09_Undo_TB3.pdf”这一章节深入探讨了Oracle 10g中撤销数据...
撤销日志同样可以通过ALTER DATABASE命令进行管理,例如调整撤销表空间大小或创建新的撤销段。 除了撤销和重做日志,Oracle还提供了其他监控和优化工具,如V$MYSTAT和V$STATNAME视图,用于获取SQL*Plus下的性能统计...
当某个表空间处于离线状态时,如果存在正在进行的事务涉及该表空间中的数据,那么相关的回滚信息会被暂时保存在系统回滚段中。这种机制被称为DEFERED回滚段。一旦表空间重新上线,Oracle会从系统回滚段中提取相应的...
1. **V$UNDOSTAT**:通过查询`V$UNDOSTAT`视图可以获取有关回滚段的信息,如当前使用的回滚段大小、可用空间等。 2. **性能指标**:通过监控事务回退率等指标可以评估系统的健康状况。如SQL查询: ```sql SELECT ...
在实时监控Undo的过程中,Python可以通过执行SQL查询来获取Undo相关信息,如UNDO_TRANSACTIONS视图,它可以展示当前会话的Undo信息,包括事务ID、回滚段、开始时间等。 Oracle的Undo机制是基于回滚段(Rollback ...