zoukankan      html  css  js  c++  java
  • 事务在回滚的时候,drop掉相关的表。事务会停止回滚,相关的undo段会自动offline

    最近发现测试环境中oracle的undo segment,大量的自动offline。排查了一下

    结论:
    在回滚的时候,如果将表做了drop table <> purge;操作。回滚会自动结束。涉及的undo segments会自动offline(不会立即offline);
    测试过程中,offline中的undo回滚中的区,可以被online的undo segments使用。

    测试。
    1.将undo表空间使用完
    SQL> insert into emp select * from emp;

    14 rows created.

    SQL> /

    ………………

    SQL> /
    insert into emp select * from emp
    *
    ERROR at line 1:
    ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS1'

    SQL>
    2.kill会话,自动回滚
    3.另起一个会话,产生大量的事务,消耗undo。发现offline中的extent被使用

    SQL> select SEGMENT_NAME,EXTENT_ID,BYTES from dba_extents where segment_name in (select SEGMENT_NAME from dba_rollback_segs where STATUS='OFFLINE')

    SEGMENT_NAME EXTENT_ID BYTES
    --------------------------------------------------------------------------------- ---------- ----------
    _SYSSMU12_3580111010$ 0 65536
    _SYSSMU12_3580111010$ 1 65536
    _SYSSMU12_3580111010$ 2 65536
    _SYSSMU13_3093638253$ 0 65536
    _SYSSMU13_3093638253$ 1 65536
    _SYSSMU13_3093638253$ 2 65536
    _SYSSMU13_3093638253$ 3 65536
    _SYSSMU13_3093638253$ 4 65536
    _SYSSMU13_3093638253$ 5 65536
    _SYSSMU13_3093638253$ 6 65536
    _SYSSMU13_3093638253$ 7 65536

    SEGMENT_NAME EXTENT_ID BYTES
    --------------------------------------------------------------------------------- ---------- ----------
    _SYSSMU14_3308680137$ 0 65536
    _SYSSMU14_3308680137$ 1 65536
    _SYSSMU14_3308680137$ 2 65536
    _SYSSMU15_4173493555$ 0 65536
    _SYSSMU15_4173493555$ 1 65536
    _SYSSMU16_3198972214$ 0 65536
    _SYSSMU16_3198972214$ 1 65536
    _SYSSMU17_3974766379$ 0 65536
    _SYSSMU17_3974766379$ 1 65536
    _SYSSMU17_3974766379$ 2 65536
    _SYSSMU17_3974766379$ 3 65536

    SEGMENT_NAME EXTENT_ID BYTES
    --------------------------------------------------------------------------------- ---------- ----------
    _SYSSMU17_3974766379$ 4 65536
    _SYSSMU17_3974766379$ 5 65536
    _SYSSMU18_289737016$ 0 65536
    _SYSSMU18_289737016$ 1 65536

    26 rows selected.

    SQL> /

    SEGMENT_NAME EXTENT_ID BYTES
    --------------------------------------------------------------------------------- ---------- ----------
    _SYSSMU12_3580111010$ 0 65536
    _SYSSMU12_3580111010$ 1 65536
    _SYSSMU13_3093638253$ 0 65536
    _SYSSMU13_3093638253$ 1 65536
    _SYSSMU14_3308680137$ 0 65536
    _SYSSMU14_3308680137$ 1 65536
    _SYSSMU15_4173493555$ 0 65536
    _SYSSMU15_4173493555$ 1 65536
    _SYSSMU16_3198972214$ 0 65536
    _SYSSMU16_3198972214$ 1 65536
    _SYSSMU17_3974766379$ 0 65536

    SEGMENT_NAME EXTENT_ID BYTES
    --------------------------------------------------------------------------------- ---------- ----------
    _SYSSMU17_3974766379$ 1 65536
    _SYSSMU18_289737016$ 0 65536
    _SYSSMU18_289737016$ 1 65536

    14 rows selected.

    SQL>

    处理方法:

    1.执行下列语句,生成undo segment online语句。

    select 'alter rollback segment "'||segment_name||'" online;' from dba_rollback_segs where owner<>'SYS'  and instance_num=2 and status<>'ONLINE';

    2.设置"_smu_debug_mode"=4 。然后将段online

    SQL> ALTER SYSTEM SET "_smu_debug_mode"=4  sid='*' SCOPE=MEMORY;

    System altered.

    SQL> alter rollback segment "_SYSSMU136_3870040108$" online;

    3.执行完成后,设置"_smu_debug_mode"=0;

    SQL> ALTER SYSTEM SET "_smu_debug_mode"=0  sid='*' SCOPE=MEMORY;

  • 相关阅读:
    [HNOI2006]最短母串问题 AC自动机
    【BZOJ】【2946】【POI2000】公共串
    【BZOJ】【1717】【USACO 2006 Dec】Milk Patterns产奶的模式
    【BZOJ】【2084】【POI2010】Antisymmetry
    【BZOJ】【3790】神奇项链
    【BZOJ】【2565】最长双回文串
    【HDOJ】【3068】最长回文
    【BZOJ】【1031】【JSOI2007】字符加密Cipher
    【BZOJ】【3172】【TJOI2013】单词
    【BZOJ】【2938】【POI2000】病毒
  • 原文地址:https://www.cnblogs.com/erwadba/p/9167003.html
Copyright © 2011-2022 走看看