维护UNDO数据

Undo回滚
修改某信息时,把某信息原来的值先放在undo segment中,当修改失败时,用于回滚。

意义:
事务回滚
事物恢复
读一致性(当一用户查询时,查询期间某一用户进行修改操作,在某一个用户commit之前,另一用户查询到的信息为原来的值:即判断SCN(system change number,递增)是否为查询时发配的原值,不是就读取undo segment与scn相等的记录值)

undo segment包含多个transaction
undo block只能一个transaction

redo & undo
undo时也会产生redo信息
commit后先写redo log files
在checkpoint后信息才写磁盘

undo segment类型
SYSTEM(用于存储SYSTEM表空间修改前信息)
Non-SYSTEM(其他表空间):自动管理:要创建undo表空间;手动管理
Deferred:当表空间临时突然offline时,用于恢复

自动管理:
指定初始化参数
undo_management=auto
undo_tablespace=xxxx
/*
undo_suppress_errors(设置true,在自动管理模式下手工修改参数时不输出错误)
undo_retention(undo数据在undo表空间保留的时间,单位秒)
*/

创建undo表空间
在create database可以创建undo tablespace,不指定时自动创建(当undo_management=auto时)
或者
create undo tablespace undo1
datafile 'xxxxx' size 200M;

更改undo表空间
alter tablespace undo1
add datafile 'xxxx' size 300M autoextend on;
....

切换undo tablespace
alter system set undo_tablespace=undo2;

删除undo tablespace
drop tablespace undo2;

v$transaction
select addr,used_ublk from v$transaction(查看transaction所使用的undo block)

v$undostat(每十分钟采集undo表空间需要的undo块)
select begin_time,end_time,undoblks from v$undostat;

undo quota(undo配额,限制大事务使用)
通过设置undo_pool,这个是oracle提供的的一个PL/SQL包会设置


查询视图
dba_rollback_segs
select segment_name,tablespace_name from dba_rollback_segs;

v$rollname(所以在线的回滚段)
select * from v$rollname;

v$rollstat(undo segment状态信息)
select usn,status from v$rollstat;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值