Oracle 10g中 system 回滚段的作用 | 
    
| 发布时间: 2012/8/24 17:19:27 | 
|  
  在Oracle10g中依然存在一个回滚段,名叫system,它是有Oracle在创建数据库的时候创建的,并且这个回滚段存在于SYSTEM表空间中。它存在的目的就是为了回滚系统事物,也就是说数据字典修改之后的镜像就存在于system回滚段。 
 
 SEGMENT_NAME OWNER TABLESPACE_NAME SEGMENT_ID FILE_ID --------------- ------ --------------- ---------- ---------- SYSTEM SYS SYSTEM 0 1 
 为了探究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回滚段是用了记录Oracle内部操作的,也就是数据字典更改。 看见某本书上面写system回滚段在Oracle创建之后,就永远不会被使用,恩其实是错误的. 本文出自:亿恩科技【www.enkj.com】  | 
    
       
       
       京公网安备41019702002023号