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.endtimedelusion.com】 |