EXPDP要注意的是,匯出的檔案是在伺服器端的 DATA_PUMP_DIR目錄裡
11g備份,匯入10g的時候會拋錯,直接阻止匯入。
但是有時候還必須得把11g的資料庫匯入到10g,我今天就遇到了這種情況。
一開始只是把11g中的表全部備份,成功匯入10g。但是缺少視圖、預存程序等。一個個sql建立累死人,方法太笨。請教了一下資深DBA,重新備份,重新匯入,成功。
現在把我匯入操作的全過程記錄下來,希望可以方便更多的人!
一、在11g伺服器上,使用expdp命令備份資料
EXPDP USERID='SYS/cuc2009@cuc as sysdba' schemas=sybj directory=DATA_PUMP_DIR dumpfile=aa.dmp logfile=aa.log version=10.2.0.1.0
其中,紅色文字部分是根據需要改寫的地方。例如我的sys密碼是cuc2009,資料庫sid是cuc,要到出的使用者名稱是sybj,要匯入到10.2.0.1.0版本的Oracle資料庫中去。aa.dmp和aa.log將會在11g的dpdump目錄中產生,例如我的11g裝在了E盤下面,於是aa.dmp將會在E:/app/Administrator/admin/cuc/dpdump目錄下被產生。
二、在10g伺服器上,使用impdp命令恢複資料
準備工作:1.建庫2.建資料表空間3.建使用者並授權4.將aa.dmp拷貝到10g的dpdump目錄下
1-3點可以去參考博主的上一篇部落格“Oracle資料庫移植全步驟”,介紹的很詳細,這裡不再多說。關於第4點,我的10g裝在了e:/tools目錄下,於是我將aa.dmp檔案拷貝到了E:/tools/admin/cucf/dpdump目錄下。
IMPDP USERID='SYS/cuc2009@cucf as sysdba' schemas=sybj directory=DATA_PUMP_DIR dumpfile=aa.dmp logfile=aa.log version=10.2.0.1.0
其中紅色部分是根據需要改寫的地方。例如我的sys密碼是cuc2009,資料庫sid是cucf,要匯入使用者名為sybj,要匯入到10.2.0.1.0版本的Oracle資料庫中去。aa.log將會在10g的dpdump目錄中產生。
---------------------------------------------------------
select * from dba_directories;
// 查詢檔案存放目錄
grant read,write on directory DATA_PUMP_DIR to maximo;
// 許可權
impdp maximo/maximo@gcmaximo DIRECTORY=DATA_PUMP_DIR DUMPFILE=maximo10_2_0_2_20g15_20110825.dmp FULL=y;
// 匯入命令