日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

flashback table肯定会造成rowid跟着修改

發布時間:2024/4/11 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 flashback table肯定会造成rowid跟着修改 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

flashback table肯定會造成rowid跟著修改,為什么要開啟行移動,就是這個原因


下面我馬上做個實驗來驗證一下:
SQL> drop tablespace tp2 including contents and datafiles;
Tablespace dropped.
SQL> create tablespace tp2 datafile '/u01/app/oracle/oradata/tp2.dbf' size 512K;
Tablespace created.
SQL> create table t1 (id int,name char(10)) tablespace tp2;
Table created.
SQL> begin?
??2? ?for i in 1 .. 1000 loop
??3? ? insert into t1 values(i,'gyj'||i);
??4? ?end loop;
??5? ?commit;
??6??end;
??7??/
PL/SQL procedure successfully completed.

查rowid
SQL> select rowid,id from t1 where id>=1 and id<=5;
ROWID? ?? ?? ?? ?? ?? ?? ? ID
------------------ ----------
AAASvnAAIAAAAAOAAA? ?? ?? ? 1
AAASvnAAIAAAAAOAAB? ?? ?? ? 2
AAASvnAAIAAAAAOAAC? ?? ?? ? 3
AAASvnAAIAAAAAOAAD? ?? ?? ? 4
AAASvnAAIAAAAAOAAE? ?? ?? ? 5
SQL> alter table t1 enable row movement;
Table altered.
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
? ? 6177172

查文件號,塊號,行號
SQL> select id,dbms_rowid.rowid_relative_fno(rowid) file#,dbms_rowid.rowid_block_number(rowid) block#,dbms_rowid.rowid_row_number(rowid) row# from t1 where id>=1 and id<=5;
? ?? ???ID? ?? ?FILE#? ???BLOCK#? ?? ? ROW#
---------- ---------- ---------- ----------
? ?? ?? ?1? ?? ?? ? 8? ?? ?? ?14? ?? ?? ? 0
? ?? ?? ?2? ?? ?? ? 8? ?? ?? ?14? ?? ?? ? 1
? ?? ?? ?3? ?? ?? ? 8? ?? ?? ?14? ?? ?? ? 2
? ?? ?? ?4? ?? ?? ? 8? ?? ?? ?14? ?? ?? ? 3
? ?? ?? ?5? ?? ?? ? 8? ?? ?? ?14? ?? ?? ? 4
SQL> delete from t1;
1000 rows deleted.
SQL> commit;
Commit complete.

插入大量記錄,讓空間用完為止
SQL> begin?
??2? ?for i in 1001 .. 100000 loop
??3? ? insert into t1 values(i,'gyj'||i);
??4? ?commit;
??5? ?end loop;
??6? ?end;
??7??/
begin
*
ERROR at line 1:
ORA-01653: unable to extend table GYJ.T1 by 8 in tablespace TP2
ORA-06512: at line 3

SQL> flashback table t1 to scn 6177172;
Flashback complete.

查原來1000行記錄的前5行的rowid,與原來的rowid不一樣了
SQL> select rowid,id from t1 where id>=1 and id<=5;
ROWID? ?? ?? ?? ?? ?? ?? ? ID
------------------ ----------
AAASvnAAIAAAAAcAFr? ?? ?? ? 1
AAASvnAAIAAAAAcAFs? ?? ?? ? 2
AAASvnAAIAAAAAcAFt? ?? ?? ? 3
AAASvnAAIAAAAAcAFu? ?? ?? ? 4
AAASvnAAIAAAAAcAFv? ?? ?? ? 5


查原來1000行記錄前5行所在的文件號,塊號,行號,與原來的塊號行號不一樣了

SQL> select id,dbms_rowid.rowid_relative_fno(rowid) file#,dbms_rowid.rowid_block_number(rowid) block#,dbms_rowid.rowid_row_number(rowid) row# from t1 where id>=1 and id<=5;
? ?? ???ID? ?? ?FILE#? ???BLOCK#? ?? ? ROW#
---------- ---------- ---------- ----------
? ?? ?? ?1? ?? ?? ? 8? ?? ?? ?28? ?? ???363
? ?? ?? ?2? ?? ?? ? 8? ?? ?? ?28? ?? ???364
? ?? ?? ?3? ?? ?? ? 8? ?? ?? ?28? ?? ???365
? ?? ?? ?4? ?? ?? ? 8? ?? ?? ?28? ?? ???366
? ?? ?? ?5? ?? ?? ? 8? ?? ?? ?28? ?? ???367


我做這個實驗是把表空間搞小一點這樣更方便觀察,在t1表先添加1000條記錄,然后delete,最后再向里面插一些記錄直到期把空間占完,這樣最后新插入的記錄會占用原來1000條記錄的空間。。。

完畢!



**********本博客所有內容均為原創,如有轉載請注明作者和出處!!!**********
Name: ? ?guoyJoe

QQ: ? ? ? ?252803295

Email: ? ?oracledba_cn@hotmail.com

Blog: ? ? ?http://blog.csdn.net/guoyJoe

ITPUB: ??http://www.itpub.net/space-uid-28460966.html

OCM: ? ??http://education.oracle.com/education/otn/YGuo.HTM
?_____________________________________________________________
加群驗證問題:哪些SGA結構是必需的,哪些是可選的?否則拒絕申請!!!

答案在:http://blog.csdn.net/guoyjoe/article/details/8624392

Oracle@Paradise  總群:127149411

Oracle@Paradise No.1群:177089463(已滿)

Oracle@Paradise No.2群:121341761

Oracle@Paradise No.3群:140856036


轉載于:https://blog.51cto.com/guoyjoe/1429053

總結

以上是生活随笔為你收集整理的flashback table肯定会造成rowid跟着修改的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。