zoukankan      html  css  js  c++  java
  • Oracle10g中 system 回滚段的作用

    在Oracle10g中依然存在一个回滚段,名叫system,它是有Oracle在创建数据库的时候创建的,并且这个回滚段存在于SYSTEM表空间中。它存在的目的就是为了回滚系统事物,也就是说数据字典修改之后的镜像就存在于system回滚段。

    SQL> select segment_name,owner,tablespace_name,segment_id,file_id from dba_rollback_segs where segment_id=0;

    SEGMENT_NAME    OWNER  TABLESPACE_NAME SEGMENT_ID    FILE_ID

    --------------- ------ --------------- ---------- ----------

    SYSTEM          SYS    SYSTEM                   0          1

    我们查询dba_rollback_segs这个视图就可以得到系统中回滚段/撤销段信息

    为了探究system回滚段的作用,我做如下实验:

    首先在一个session中创建一个测试表,然后运行一个过程,批量插入1百万条数据

    SQL> create table test(data varchar2(100));

    表已创建。

    SQL> begin

      2    for v_loop in 1 ..1000000 loop

      3        insert into test values('test!');

      4        commit;

      5    end loop;

      6  end;

      7  /

    PL/SQL 过程已成功完成。

    同时在另外一个session中运行下面的脚本

    SQL> declare

      2    v_cnt int :=0;

      3  begin

      4    for v_loop in 1 ..1000000 loop

      5        select count(*) into v_cnt from v$transaction where xidusn=0;---xidusn表示rollback segment_id

      6        if v_cnt>0 then

      7           dbms_output.put_line('Find it');

      8        end if;

      9    end loop;

     10  end;

     11  /

    Find it

    Find it

    Find it

    Find it

    ....省略之...................

    由此实验得出system回滚段依然会被系统利用,同时得出v$transaction视图也记录后台进程的事物

    system回滚段是用了记录Oracle内部操作的,也就是数据字典更改。

    看见某本书上面写system回滚段在Oracle创建之后,就永远不会被使用,恩其实是错误的.

  • 相关阅读:
    Java实现 LeetCode 691 贴纸拼词(DFS+map记录)
    Java实现 LeetCode 691 贴纸拼词(DFS+map记录)
    PHP is_resource() 函数
    PHP is_float()、 is_double()、is_real()函数
    PHP is_object() 函数
    PHP is_numeric() 函数
    PHP is_null() 函数
    目标检测算法进展大盘点
    斯坦福大学李飞飞团队图像分类课程笔记
    激光雷达与应用
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330594.html
Copyright © 2011-2022 走看看