undo段相关

概述:
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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值