oracle----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表空间的物理文件

相关推荐
szccyw017 小时前
PHP源码能否用二手服务器部署_老旧服务器性价比分析【方法】
jvm·数据库·python
m0_613856291 天前
mysql如何利用事务隔离级别解决特定业务冲突_mysql隔离方案选型
jvm·数据库·python
Adios7941 天前
VPR:Pitts50K和Norland数据集下载
数据库
东风破1371 天前
DM用户权限、表、约束等对象的基本操作,SQL日志的开启介绍
数据库·sql·dm达梦数据库
收获不止数据库1 天前
达梦9发布会归来:AI 时代,我们需要一款什么样的数据库?
数据库·人工智能·ai·语言模型·数据分析
小宇的天下1 天前
Virtuoso GUI 界面中的关键模块定义
数据库
bqq198610261 天前
MySQL 5.7 与 MySQL 8.0 的主要区别
数据库·mysql
Elastic 中国社区官方博客1 天前
Elastic-caveman : 在不损失 Elastic 最佳效果的情况下,将 AI 响应 tokens 减少64%
大数据·运维·数据库·人工智能·elasticsearch·搜索引擎·全文检索
互联网推荐官1 天前
上海软件定制开发全流程拆解:需求分析、技术选型与交付管理的工程实践
大数据·数据库·需求分析
专注API从业者1 天前
Open Claw 京东商品监控选品实战:一键抓取、实时监控、高效选品
java·服务器·数据库