背景
今天進行UAT數據還原到SIT時,兩個環境Oracle數據庫用戶和表空間不一致,剛開始沒在乎,通過一翻反覆導入導出發現最終導入的只有表結構,數據始終沒法導入。sql
導入的表結構 .sql文件和表數據 .dmp文件均無問題。數據庫
因爲數據庫表結構裏存在BLOB字段,PLSQL沒法導出.sql結果的數據文件,只能經過dmp文件方式導出。通過網上無數PLSQL教程的指導和嘗試,發現沒法解決此問題。直接敲命令的方式太麻煩沒有進行嘗試。不得不說還有人轉文章更坑,連導出數據的步驟都是錯的。下面進入正題。spa
版本
PL/SQL: Version 10.0.5.1710 01.706090blog
DB :Oracle Database 11g Enterprise Edition Release 11.2.0.3.0教程
執行步驟
a、導出原數據庫表結構:PL/SQL –> Tools –> Export User Objectsget
1:這個是所屬用戶,這個須要修改成默認用戶,把原來所屬用戶去掉it
2:這個選項要去掉io
b、導出原數據庫表數據:PL/SQL –> Tools –> Export Tables權限
Grants : 受權,若是兩邊用戶不一樣,這個選項千萬不要選,導出的數據重點就在這,只有這個選項會讓數據和用戶體系有關聯。im
這樣咱們須要的表結構和數據均可以導出完成了。因爲咱們表數據量大,跑一次就得半小時,就這個玩意兒坑了我兩個小時。
c、導入表結構到新數據庫:PL/SQL –> Tools –> Import Tables –> SQL Insert
這個沒什麼難度,找對地方、找對文件直接幹就能成功了。
d、導入表數據到新數據庫:PL/SQL –> Tools –> Import Tables –> Oracle Import
一樣的問題在這個:
Grants: 這個不要選,若是導出的數據裏Grants存在,在這導入時不選擇是否能成功?因爲我這操做麻煩就沒有再次嘗試了。
Show:這個聽說選擇了的話,數據就沒法導入進去了,沒驗證,反正也沒啥用,就不選了。
總結
小問題也能帶來大麻煩,表面看來只是一個選項選擇的問題,裏面其實涉及含義不少。
一、若是是數據庫遷移或者還原,那麼Grants這種權限類,表空間類的選項確定是要選擇的。
二、對於不一樣用戶、表數據導入就只關注數據自己,原數據庫表的權限之類的屬性就會和新表引發衝突致使導入失敗。