文章目录
- undo表空间概念和作用
- undo表空间主要用于解决:
-
- [1.1 读一致性](#1.1 读一致性)
- [1.2 回滚事务](#1.2 回滚事务)
- [1.3 实例恢复](#1.3 实例恢复)
- undo表空间操作
-
- 查看UNDO表空间
- [查看UNDO 参数](#查看UNDO 参数)
- 查看undo表空间文件位置
undo表空间概念和作用
对于DML语句,只要修改了数据块,数据库就会把修改前的数据保存下来,保存在undo segment中
,而undo segment保存在undo表空间;
数据库中可同时存在多个undo表空间,但一个时间节点上,数据库只能使用一个undo表空间;
若将undo_tablespace 参数设置为另一个undo表空间,被称为undo表空间的切换;
undo表空间主要用于解决:
1.1 读一致性
当进行DML操作时,undo段会记录数据变更前的状态,也就是undo会存储变更前的所有数据
(通过构造原数据的一致性数据块)。如果用户还没有进行commit操作,其他人查询此条数据会看到数据变更前的状态。因为其他用户读到的数据是undo segment中原数据块中的数据,保证没有commit的数据读取的一致性。
若undo块中存放的被修改的数据被其他事务覆盖,则无法找到被修改前的数据,就会抛出ORA-1555 snapshot too old 错误
1.2 回滚事务
用户进行DML操作后没有进行commit
,恢复到数据修改前的状态。只要该操作在undo段保护的时间内,此时执行rollback操作 rollback to savepoint 或上一次commit操作后的状态。
1.3 实例恢复
实例恢复是在SMON进程完成前滚并打开数据库后发生。SMON进程会去查看 undo segment头部(头部即 undo segment的第一个数据块)记录的事务表(每个事务在使用undo块时,首先要在undo块所在的undo segment的头部记录一个条目,该条目里记录了该事务相关的信息,包括是否提交等),将其中既没有提交也没有回滚,而是在实例崩溃时被异常终止的事务全部回滚
undo表空间操作
查看UNDO表空间
clike
select * from dba_tablespaces where CONTENTS='UNDO';
css
SQL> select * from dba_tablespaces where CONTENTS='UNDO';
TABLESPACE_NAME BLOCK_SIZE INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS
------------------------------ ---------- -------------- ----------- -----------
MAX_EXTENTS MAX_SIZE PCT_INCREASE MIN_EXTLEN STATUS CONTENTS LOGGING FOR
----------- ---------- ------------ ---------- --------- --------- --------- ---
EXTENT_MAN ALLOCATIO PLU SEGMEN DEF_TAB_ RETENTION BIG PREDICA ENC
---------- --------- --- ------ -------- ----------- --- ------- ---
COMPRESS_FOR
------------------------
UNDOTBS1 8192 65536 1
2147483645 2147483645 65536 ONLINE UNDO LOGGING NO
LOCAL SYSTEM NO MANUAL DISABLED NOGUARANTEE NO HOST NO
查看UNDO 参数
dart
SQL> show parameter undo;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
undo_management 表示 自动管理
undo_retention表示事务提交或回滚后等待900秒才能被其他事务覆盖
undo_tablespace系统的默认的UNDO表空间
查看undo表空间文件位置
select * from dba_data_files
undot2为undo表空间的物理文件