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

  • 相关阅读:
    urql 高度可自定义&&多功能的react graphql client
    使用vault pki 为nginx 生成tls 证书文件
    使用vault pki engine 方便的管理证书
    使用terraform 生成自签名证书
    Kapitan 通用terraform&& kubernetes 配置管理工具
    sqler 集成 terraform v0.12 生成资源部署文件
    检查cgroup v2 是否安装
    centos 较新版本kernel安装方法
    tbls ci 友好的数据库文档化工具
    graphql-query-rewriter 无缝处理graphql 变更
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330594.html
Copyright © 2011-2022 走看看