Oracle 插入大量資料

lygle發表於2013-03-31

1. 採用高速的儲存裝置,提高讀寫能力,如:EMC 和NetApp,

2. 假如tab1表中的沒有資料的話
DROP TABLE TAB1;
CREATE TABLE TAB1 AS SELECT * FROM TAB2;
然後在建立索引

3. 用Hint 提示減少操作時間

INSERT /*+Append*/ INTO tab1
SELECT * FROM tab2;

4. 採用不寫日誌及使用Hint提示減少資料操作的時間。

建議方案是先修改表為不寫日誌:
sql> alter table table_name NOLOGGING;

插入資料:

INSERT /*+Append*/ INTO tab1
SELECT * FROM tab2;

插入完資料後,再修改表寫日誌:
sql> alter table table_name LOGGING;

這裡的區別就在於如果插入資料的同時又寫日誌,尤其是大資料量的insert操作,需要耗費較長的時間。

5. 用EXP/IMP 處理大量資料

(1)給當前的兩個表分別改名
alter table tab1 rename to tab11;
alter table tab2 rename to tab1;
(2)匯出改名前的tab2
exp user/pwd@... file=... log=... tables=(tab1)
(3)把名字改回來
alter table tab1 rename to tab2;
alter table tab11 rename to tab1;
(4)匯入資料
imp user/pwd@... file=... log=... fromuser=user touser=user tables=(tab1)

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

相關文章