• 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创建之后,就永远不会被使用,恩其实是错误的.

  • 相关阅读:
    系统调用与库函数
    在树莓派上 搭建sqlite数据库
    (转)inux Read系统调用
    查看当前日期是这一年的第几天
    求解某个范围内的全部完数
    求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
    输入三个整数x,y,z,请把这三个数据由大到小输出。
    模仿ArrayList底层实现
    可视化日历
    Oracle之约束条件1:主键约束
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330594.html
Copyright © 2020-2023  润新知