今天要導一個遠程伺服器的資料庫到另外一台伺服器上,同事早就在原始伺服器加了定期匯出功能,用的是expdp匯出的dmp檔案,另外帶了匯出日誌.log檔案。所以要匯入到目標伺服器上,必須要用impdp方式匯入。
首先,目標伺服器上必須已經建好了資料庫和資料庫執行個體,我這裡分別是ORCL、BFB2C/DHHZDHHZ。
其次,在cmd中發命令匯入dmp檔案
從原始伺服器上得到.log檔案,開啟裡面最上面有段代碼如下:
system/******** DIRECTORY=EXPDPDIR DUMPFILE=TEMP.DMP REUSE_DUMPFILES=Y SCHEMAS=(BFB2C,TRANS_USER,bfcrm,bfstatuser) LOGFILE=2014-10-10.LOG
後面的工作很簡單,把它們稍微做些替換就可以了。
system/******** ------->BFB2C/DHHZDHHZ@ORCL。此處為一個可用的使用者名稱和密碼
DIRECTORY=EXPDPDIR:其中EXPDPDIR指的是資料庫的一個目錄變數,在qlsql發下語句查一下,select * from all_directories; 替換成一個現有的變數,然後把dmp檔案放到directory_path下。
DUMPFILE=TEMP.DMP:TEMP.DMP就是要匯入的資料泵檔案啦。
REUSE_DUMPFILES=Y:這個參數匯入時去掉。
SCHEMAS=(BFB2C,TRANS_USER,bfcrm,bfstatuser):要匯入的資料庫執行個體,現在我只要匯入第一個,所以
SCHEMAS=(BFB2C)就可以了。
如果匯出和匯入的不是同一個資料庫的話,要用remap_schema=A:B參數,當你從A使用者匯出的資料,想要匯入到B使用者中去,就使用這個:remap_schema=A:B。
LOGFILE=2014-10-10.LOG:自己命名下記錄檔,用來記錄匯入的日誌,方便查看錯誤。
還有個參數要說明下,table_exists_action=replace ,如果要替換掉資料庫執行個體中原來的表結構,就加上這個參數就可以了。
最後的成品為:
impdp BFB2C/DHHZDHHZ@ORCL DIRECTORY=EXPDPDIR DUMPFILE=NMMZ20101010.DMP TABLE_EXISTS_ACTION=REPLACE SCHEMAS=(BFB2C) LOGFILE=20141010.LOG
我試過了,是可以的