Oracle 資料匯入的一點心得

來源:互聯網
上載者:User

Oracle資料匯入

imp user/passwd file=abc.dmp tables=abc indexes=n

Oracle資料匯入時(dmp檔案)

有一回導資料,資料量比較大,壓縮的dmp檔案有15G,需要將資料往公司的測試資料庫上導。

本以為很簡單,傳好dmp檔案,imp匯入即可。結果貌似簡單的過程,卻耗費了我不少的時間。

匯入前,建立資料表空間(dvbboss: 80G),建立使用者並指定該資料表空間。然後匯入,在導了半個小時左右後發現報錯,意思是指定的資料表空間已滿,不能匯入了。我鬱悶了,80G的資料表空間還不夠?於是查了一下,令人驚訝的是根據使用者指定的資料表空間佔用率還是0,而已經滿了的資料表空間只有兩個:

INDX(索引資料表空間)和dvbcetus,都已經到了99%。將imp停止,並將該使用者刪除,發現一個情況是,對應的這兩個資料表空間又恢複到原來的狀態了,幾乎是沒有使用。

按照原本的設想,我不匯入索引的話,應該對INDX資料表空間沒有影響的,但是為何還是匯入了這麼多的資料呢。查了不少資料,發現還有個強制限制式的索引。如果光指定indexes=n,則只是將一般的索引排出掉不匯入,對於這個也需要進行限制,即:constraints=n,這樣限定後產看INDX資料表空間發現沒有增長。

約束往往和一個唯一索引/主鍵相關聯,所以僅僅利用indexes=n 選項是不夠的,必須添加CONSTRAINTS=n,才能真正避免匯入時的檢查。

另外一個資料表空間的增長,後來發現是這個原因所導致的:

如果資料庫已經存在dmp檔案中建表所需要的資料表空間,則預設會往該資料表空間中增加表及資料如果沒有不存在該資料表空間,則會按照建立使用者:user的時候所指定的資料表空間裡建表與資料。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.