進入博客園已經兩年多了,每次想寫點什麼,都是給自己個各種借口,不了了之~今天就從Oracle數據庫最長用的導入開始吧!
1、低版本的exp/imp可以連接到高版本(或同版本)的數據庫服務器,比如:10G server備份的文件ExtDat.dmp,可以隨意的通過11G client 導入;
2、高版本的exp/imp不能連接到低版本的數據庫服務器,比如:11G server 備份的ExtData.dmp不能在10G以下導入;
a、高版本的Oracle到低版本的導入,可以通過低版本客戶端連接數據庫到高版本數據庫備份導入,比如10G client連接11G server備份ExtData.dmp,然後10G client連接10G server 導入ExtData.dmp.
b、當只有11G server備份的ExtData.dmp文件時,可以通過UEEdite工具找到備份server Oracle版本號修改為當前低版本Oracle Server 版本號。
IMP和EXP命令方式冷備份和恢復數據,我認為使用數據泵方式比較安全,具體格式如下:
expdp 登錄用戶名/密碼@本地服務名(如果是在oracle服務所在機器上操作可省略) directory=oracle目錄對象名(Oracle中定義的,一般用Oracle預定義的“data_pump_dir”即可,其對應的服務器文件系統文件夾為 安裝目錄\admin\orcl\dpdump) dumpfile=備份文件的名稱(此文件會存到“oracle目錄對象名”對應的文件夾中) schemas=需要導出的架構(指定為需要導出的用戶的用戶名即可)
impdp 登錄用戶名/密碼@本地服務名(如果是在oracle服務所在機器上操作可省略) directory=oracle目錄對象名(Oracle中定義的,一般用Oracle預定義的“data_pump_dir”即可,其對應的服務器文件系統文件夾為 安裝目錄\admin\orcl\dpdump) dumpfile=備份文件的名稱(此文件需在“oracle目錄對象名”對應的文件夾中) schemas=需要導入的架構(備份文件中存在的用戶名) remap_schema=源架構(schemas指定的"需要導入的架構"):目的架構(目的用戶名,該用戶會自動創建) remap_tablespace=源表空間(備份文件中存在的表空間):目的表空間(oracle實例中已存在的某個表空間,可以先創建一個)
例如: impdp system/123@orac directory=data_pump_dir dumpfile=ExtData.DMP schemas=sourceName remap_schema=sourceName:target remap_tablespace=sourceTablespace:targetTablespace;其中源庫的用戶名為sourceName ,表空間為sourceTablespace,新建庫的用戶名為target,表空間為targetTablespace。新庫上的target用戶會自動創建,用戶口令為target。在執行命令前要先手工創建好targetTablespace表空間。
當不知道當前DMP文件schema的時候,直接把ExtData.DMP文件放入~\Administrator\admin\orcl\dpdump(使用impdp導入文件時的默認目錄),然後在終端裡面運行impdp命令,輸入數據庫的用戶名和密碼即可實現導入,然後在把導入的表整理歸類,授權之類。基本上就不會出現如下錯誤,當然在導入到處文件中出現異常,基本可以用如上方法解決。最常報錯如下: