快速轉移資料的方法

xsdan發表於2006-04-18
如果你要把ORACLE裡的大量資料(80M以上)轉移到另外的使用者,另外的表空間裡。可以用下面介紹的快速轉移
資料的方法。[@more@]一、建新表的方式

create table target_tablename tablespace target_tablespace_name nologging
pctfree 10 pctused 60
storage(initial 5M next 5M minextents 1 maxextents unlimited pctincrease 0)
as select * from username.source_tablename where 條件;

注意事項: 新建的表沒有原來表的索引和預設值,
只有非空(not null)的約束素條件可以繼承過來,
其它的約束條件或索引需要重新建立.

二、直接插入的方法

INSERT /*+ APPEND */ INTO target_tablename
SELECT * FROM username.source_tablename where 條件;
COMMIT;

注意事項:
用INSERT /*+ APPEND */ 的方法會對target_tablename產生級別為6的獨佔鎖,
如果執行此命令時還有對target_tablename的DML操作會排隊在它後面,
對OLTP系統在用的表操作是不合適的。

說明:這兩種方法轉移資料時沒有用SGA裡資料緩衝區和事物處理的回滾段, 也不寫聯機事物日誌,
就象資料庫裝載工具SQLLOAD一樣直接把資料寫到物理檔案,速度是很快的。

在ORACLE8I以後的版本都可以使用.

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

相關文章