美文网首页
Undo 表空间管理

Undo 表空间管理

作者: 个人精进成长营 | 来源:发表于2021-06-28 08:18 被阅读0次

What is Undo

    当发布一条回滚语句时,撤销记录用于撤销未提交事务读数据库所做的修改。

    在数据库恢复期间,撤销记录用于撤销从重做日志作用到数据文件的任何未提交的修改。

    当另一用户正在修改数据时,撤销记录为正在访问数据的用户提供修改钱的映像。

1、Undo表空间及管理方式

  管理Undo TableSpace的方法有两种:一是使用回滚段来管理,该方式被认为是手动撤销管理;二是使用撤销表空间的方法,是以自动撤销管理方式。

show parameter undo_tablespace

Undo段

select * from v$rollname;

    select owner, segment_name, tablespace_name from dba_rollback_segs;

select SEGMENT_NAME,BLOCKS,EXTENTS from dba_segments where SEGMENT_NAME='_SYSSMU1_2175781447$';

select SEGMENT_NAME,TABLESPACE_NAME,EXTENT_ID,FILE_ID,BLOCK_ID,BLOCKS from dba_extents where SEGMENT_NAME='_SYSSMU1_2175781447$'

show parameter undo

select name from v$parameter where name like '%undo%';

undo_management

UNDO表空间占用空间情况以及数据文件存放位置

select file_name,bytes/1024/1024 from dba_data_files

where tablespace_name like '%UNDOTBS%';

undo的三个作用

读一致性,构造CR块

回滚

实例恢复

  undo_retention 强制保护时间

alter tablespace undotbs1 retention guarantee

undo_retention 非强制保护时间(数据库默认)

alter tablespace undotbs1 retention noguarantee

查询undo_retention状态

select tablespace_name,retention from dba_tablespaces;

2: 切换UNDO表空间

    2.1 创建UNDO表空间

        create undo tablespace undotbs_xing datafile '/opt/oracle/oradata/ORCL/undo02.dbf' size 50M;

    2.2 切换UNDO表空间

        2.2.1 更改参数文件

              alter system set undo_tablespace=UNDOTBS_XING scope=both;

        2.2.2 查看UNDO段状态

              select tablespace_name,segment_name,status from dba_rollback_segs;

        2.2.3 将原来的undo表空间,置为脱机

              alter tablespace UNDOTBS_XING offline;

              alter system set undo_tablespace=UNDOTBS1 scope=both;

3:Undo段中区的状态

expired  :  unexpired 的 undo_retention 时间后,会变成expired

unexpired:  已经提交,尽量不覆盖, undo_retention

                    表空间压力大,也可能被覆盖

active  :  未提交,不能覆盖

  select status from dba_undo_extents group by status;

显示UNDO区信息

SELECT extent_id, bytes, status FROM dba_undo_extents

  --UNDO 表空间各种状态的大小

SELECT  tablespace_name, status, SUM (bytes) / 1024 / 1024 "Bytes(M)"

  FROM  dba_undo_extents

  GROUP BY  tablespace_name, status;

4、一个事务的操作流程

Undo段的组成:段头、回滚块

事务ID

select xid,xidusn,xidslot,xidsqn,ubablk,ubafil from v$transaction;

事务表

undo段的第一个数据块

回滚段的段头块

select spid from v$process where addr in (select paddr from v$session where

  sid=(select sid from v$mystat where rownum=1));

select * from v$rollname;

select header_block,header_file from dba_segments where segment_name='_SYSSMU2_2232571081$';

alter system dump undo header '_SYSSMU2_2232571081$';//转储回滚段头

alter system dump datafile 3 block 148;//转储回滚段数据块

事务槽:xid、uba

事物ID组成:回滚段的段头块,块中的那一行,覆盖次数,通过事物ID可以找到事物表

      1:一个事物开始,找到UNDO段,在段块头的事物表写上事物ID,同时分配UBA

      2:修改具体的数据块:首先在块头的事物槽,写上事物ID,

      1:UNDO表空间---undo段--undo段块头--事物表:事物ID、UBA(最新的回滚块)

      2:数据块--数据块头-事物槽:事物ID、UBA

  大事物,Oracle提交undo块标志,而不提交数据块头事物槽上的提交标志,下次访问的时候再提交

  提交彻底:

  1:undo段块头标志提交

  2:数据块事物槽标志提交

  3:数据行头事物槽ID提交(行级锁)

    SELECT UBAFIL 回滚段文件号,UBABLK 数据块号,UBASQN 回滚序列号,UBAREC 回滚记录号 FROM v$transaction 

    select ini_trans,max_trans from dba_tables where table_name='T';

--查看事物的开始时间、UNDO BLOCK、UNDO 记录数   

select START_TIME,START_SCNB,USED_UBLK,USED_UREC,LOG_IO,PHY_IO from v$transaction;   

start_time --> start_time :)

start_scnb --> 开始的scn

used_ublk --> 占用的undo block

used_urec --> undo 记录的行数

log_io    --> 逻辑io 注意不是Consistent gets

phy_io    --> 物理io

查看回滚段的使用情况,哪个用户正在使用回滚段的资源

select s.username, u.name from v$transaction t,v$rollstat r,

v$rollname u,v$session s where s.taddr=t.addr and

t.xidusn=r.usn and r.usn=u.usn order by s.username;

检查UNDO Segment状态

select usn,xacts,rssize/1024/1024/1024,hwmsize/1024/1024/1024,shrinks

from v$rollstat order by rssize;

确定当前例程正在使用的UNDO表空间

Show parameter undo_tablespace

显示数据库的所有UNDO表空间

SELECT tablespace_name FROM dba_tablespaces WHERE contents='UNDO';

显示UNDO表空间统计信息

SELECT TO_CHAR(BEGIN_TIME,'HH24:MI:SS') BEGIN_TIME,

TO_CHAR(END_TIME,'HH24:MI:SS') END_TIME,UNDOBLKS

FROM V$UNDOSTAT;

显示UNDO段统计信息

SELECT a.name, b.xacts, b.writes, b.extents

FROM v$rollname a, v$rollstat b

WHERE a.usn=b.usn;

显示活动事务信息

Col username format a10

Col name format a10

SELECT a.username, b.name, c.used_ublk

FROM v$session a, v$rollname b, v$transaction c

WHERE a.saddr=c.ses_addr AND b.usn=c.xidusn

AND a.username='WEISI';

5、读一致性

ORA-01555错误

      1:select 语句执行时间太长

              2:undo表空间压力大,覆盖旧数据

6、事务槽ITL

默认是1

最大255(从Oracle10g开始不能更改)

select INI_TRANS,MAX_TRANS from dba_tables where table_name='NORMAL_T'

事务槽争用

create table t10(id number(5),name char(2000));

insert into t10 values(1,'aa');

insert into t10 values(2,'bb');

insert into t10 values(3,'bb');

insert into t10 values(4,'cc');

insert into t10 values(5,'dd');

commit;

select dbms_rowid.rowid_relative_fno(rowid),dbms_rowid.rowid_block_number(rowid),id from t10;

update t10 set name='abcd' where id=1;

select ubafil,ubablk,xidusn,xidslot,xidsqn,start_scnb from v$transaction;

select * from v$rollname ;

--dump undo header block

alter system dump undo header '_SYSSMU1_3474229887$';

select header_block,header_file from dba_segments where segment_name='_SYSSMU1_3474229887$';

alter system dump datafile 3 block 405; // 回滚块,数据块

查看当前会话的进程编号

select spid from v$process where addr in (select paddr from v$session where

sid=(select sid from v$mystat where rownum=1));

相关文章

  • Undo 表空间管理

    What is Undo 当发布一条回滚语句时,撤销记录用于撤销未提交事务读数据库所做的修改。 在数据...

  • oracle删除undo临时文件

    1-查询undo对应的表空间 2-创建新的表空间 3-设置undo的表空间为新的表空间 4- 删除旧的表空间 5-...

  • 表空间

    系统表空间独立表空间临时表空间 #5.7+undo tablespace #5.6+Genera...

  • MySQL:8.0.21版本特性

    一、新特性 Mysql和Innodb增强: 1、undo可以新增表空间mysql> CREATE UNDO TAB...

  • oracle管理(十六)性能调优

    插入速度(imp、impdp): 临时表空间调大undo表空间调大redo日志文件的个数、大小 临时表空间:TEM...

  • undo表空间损坏的处理方式

    UNDO 表空间损坏的恢复方法 一般Undo 表空间损坏的情况下,数据库都已不能正常打开了。启动时都会报类似如下的...

  • 在ubuntu下将dmp数据导入Oracle的常用命令

    0.导入文件很大时需要加一个undo表空间(如果不大,可跳过) 1.这一句是创建一个临时表空间,表空间的名称就是b...

  • oracle undo表空间的切换

    环境 centos7,oracle11 1、新建 用oracle用户登陆sqlplus / as sysdba ...

  • InnoDB多版本并发控制MVCC

    前言 InnoDB维护旧版本数据来支持事务并发和回滚。旧版本信息会存储在系统表空间或者undo表空间里,以回滚段(...

  • Oracle 本地表空间管理与字典表空间管理

    本地管理表空间 一、概述 1、理解本地管理表空间的由来 2、理解什么是字典管理表空间及工作原理 3、理解本地管理表...

网友评论

      本文标题:Undo 表空间管理

      本文链接:https://www.haomeiwen.com/subject/cpafultx.html