查詢行遷移及消除行遷移(chained rows)

tolywang發表於2008-04-03
analyze table 之後:

select table_name,num_rows,CHAIN_CNT from user_tables ;
or
select table_name,num_rows,CHAIN_CNT from dba_tables where owner='XXXXXXX' ;
[@more@]

Row Migration,是Oracle裡面的一個重要的基本概念。
  一般傳統意義上,我們需要消除行遷移。 因為這樣,會造成額外的IO消耗。傳統的辦法一般是匯入倒出整個表。
  但是這樣的風險比較大,而且Downtime會比較長。
  當有外來鍵約束之類的時候,也非常的麻煩。
  也有人選擇用刪除migration的行,然後重新Insert ,但是和EXP/Imp一樣,當遭碰到FK/PK限制的時候,也會很頭疼。
  我們可以用下面的辦法來最方便的進行重組,消除row migration:
  SQL> alter table t add t1 date default sysdate;
   
  Table altered.
   
  SQL> c/t1/t2
    1* alter table t add t2 date default sysdate
  SQL> /
   
  Table altered.
   
  SQL> c/t2/t3
    1* alter table t add t3 date default sysdate
  SQL> /
   
  Table altered.
   
  SQL> analyze table t compute statistics;
   
  Table analyzed.
   
  SQL> select table_name,num_rows,CHAIN_CNT from user_tables where table_name='T';
   
  TABLE_NAME            NUM_ROWS CHAIN_CNT
  ------------------------------ ---------- ----------
  T                  41616    3908
   
  SQL> alter table t move ;
   
  Table altered.
   
  SQL> analyze table t compute statistics;
   
  Table analyzed.
   
  SQL> select table_name,num_rows,CHAIN_CNT from user_tables where table_name='T';
   
  TABLE_NAME            NUM_ROWS CHAIN_CNT
  ------------------------------ ---------- ----------
  T                  41616     0

Index 需要rebuild 或者刪除重建 。

--------------------------------------------------------------------------------------------------------

如何消除表中的chained rows?(測試表中存在較多的連結行)
建立chained rows需要的表:
sql> @/home/oracle/product/9.2.0/rdbms/admin/utlchain.sql
將表中的chained row移動到chained_rows表
sql> analyze table test_table_name list chained rows;
sql> select table_name,head_rowid from chained_rows
where table_name = ‘TEST_TABLE_NAME’;
sql> select * from agent_account where rowid in
(select head_rowid from chained_rows where table_name = ‘TEST_TABLE_NAME’)

---------------------------------------------------------------------------------------------------

或者exp/imp也能解決 。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-1001816/,如需轉載,請註明出處,否則將追究法律責任。

相關文章