行遷移測試實驗(轉載)
有兩種情況會導致表中某行資料過大,一個資料塊(data block)無法容納。第一種情況,當一行資料被插入時一個資料塊就無法容納。在這種情況下Oracle將這行資料儲存在段內的一個資料塊鏈(chain)中。在插入資料量大的行時常會發生行連結(row chaining),例如一個包含資料型別為 LONG 或 LONG RAW 列的資料行。此時行連結不可避免。
第二種情況,原本儲存在一個資料塊(data block)內的資料行,因為更新操作導致長度增長,而所在資料塊的可用空間也不能容納增長後的資料行。在這種情況下,Oracle將此行資料遷移(migrate)到新的資料塊中。Oracle在被遷移資料行原來所在位置儲存一個指向新資料塊的指標。被遷移資料行的 rowid 保持不變。
當資料行發生連結(chain)或遷移(migrate)時,對其訪問將會造成 I/O 效能降低,因為Oracle為獲取這些資料行的資料時,必須訪問更多的資料塊(data block)。
1、建立表t1,設定pctfree為0
SQL>create table t1(id number,name varchar2(20)) pctfree 0 tablespace tbs01;
2、插入資料
SQL>insert into t1 select rownum,'AAAAAAA' from dba_objects;
SQL>commit;
3、檢視資料的分佈情況
SQL>select dbms_rowid.ROWID_RELATIVE_FNO(rowid),dbms_rowid.ROWID_BLOCK_NUMBER(rowid),id from t1 where rownum <=10;
4、更新一行
SQL>select * from t1 where id=956;
SQL>update t1 set name='AAAAAAAAAAAAAAAAAAA' where id=956;
SQL>commit;
5、檢視該行的位置是否發生變化
select dbms_rowid.ROWID_RELATIVE_FNO(rowid),dbms_rowid.ROWID_BLOCK_NUMBER(rowid),id from t1 where id=956;
6、執行utlchain.sql,建立chained_rows表
@ ?/rdbms/admin/utlchain.sql
7、分析表t1
SQL>ANALYZE TABLE t1 LIST CHAINED ROWS INTO CHAINED_ROWS;
8、查詢分析結果
SQL> SELECT owner_name,
2 table_name,
3 count(head_rowid) row_count
4 FROM chained_rows
5 GROUP BY owner_name,table_name;
OWNER_NAME TABLE_NAME ROW_COUNT
------------------------------ ------------------------------ ----------
LYX T1 1
SQL> SELECT owner_name,
2 table_name,
3 head_rowid
4 FROM chained_rows;
OWNER_NAME TABLE_NAME HEAD_ROWID
------------------------------ ------------------------------ ------------------
LYX T1 AAACX/AAEAAAAAMAAA
SQL> select * from t1 where rowid='AAACX/AAEAAAAAMAAA';
ID NAME
---------- --------------------
956 AAAAAAAAAAAAAAAAAAA
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-752526/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 行遷移測試
- Oracle行遷移實驗Oracle
- expdp 遷移測試
- Oracle rman duplicate遷移測試Oracle
- PostMan newman測試介面遷移Postman
- 遷移式升級的測試
- Android O 遷移測試:RoomAndroidOOM
- Mongo資料遷移實驗Go
- wsl遷移儲存位置(轉載)
- 遷移式升級的測試(二)
- 遷移式升級的測試(三)
- 【轉載】行遷移和行連結(row chaining or row migration)AI
- 行遷移和行連結的檢測
- 實驗:行遷移與分析語句 row migration and analyze statements
- 簡單瞭解 oracle update 原理(測試)、 行遷移/行連結基本認識Oracle
- 實驗三--測試
- Core Data資料遷移及單元測試
- Cacti資料備份與遷移 (轉載)
- sqlprofile繫結執行計劃實驗測試SQL
- 查詢行遷移及消除行遷移(chained rows)AI
- Oracle 行遷移 & 行連結的檢測與消除Oracle
- oracle xtts資料庫遷移方法測試之一OracleTTS資料庫
- 軟體測試實驗三單元測試
- 軟體測試實驗二 | 白盒測試
- 使用 NFS 的資料遷移實驗過程NFS
- Duplicate+NFS資料遷移實驗過程NFS
- 資料庫遷移之資料泵實驗資料庫
- 行遷移檢測及解決一例
- 實驗室環境下測試千兆入侵檢測系統(轉)
- 轉資料遷移
- 實驗3:軟體測試
- 實驗三-軟體測試
- 實驗三:單元測試
- 實驗三——軟體測試
- 實驗三:軟體測試
- 實驗3——軟體測試
- 實驗三 軟體測試
- oracle遷移資料經驗Oracle