Oracle Database 10g以后引入了最新的數據泵(Data Dump)技術,使DBA或開發人員可以將數據庫元數據(對象定義)和數據快速移動到另一個oracle數據庫中。
數據泵導出導入(EXPDP和IMPDP)的作用
1、實現邏輯備份和邏輯恢復。
2、在數據庫用戶之間移動對象。
3、在數據庫之間移動對象
4、實現表空間搬移。
數據泵導出導入與傳統導出導入的區別:
在10g之前,傳統的導出和導入分別使用EXP工具和IMP工具,從10g開始,不僅保留了原有的EXP和IMP工具,還提供了數據泵導出導入工具EXPDP和IMPDP.使用EXPDP和IMPDP時應該注意的事項;
EXP和IMP是客戶段工具程序,它們既可以在客戶端使用,也可以在服務器段使用。
EXPDP和IMPDP是服務端的工具程序,他們只能在ORACLE服務端使用,不能在客戶端使用
IMP只適用於EXP導出文件,不適用於EXPDP導出文件;IMPDP只適用於EXPDP導出文件,而不適用於EXP導出文件。
今天我在導入同事給我的數據文件時,總是報IMP-00038錯誤,提示,無法轉換為環境字符集句柄,造成這種錯誤的原因一般是數據庫版本不匹配,但是我們使用的都是oracle11g,就排除了這種可能。最后發現原因是他是使用數據泵導出的數據文件,而我使用傳統imp命令導入是不可以的,后續改為使用impdp數據泵導入成功。
下面是我使用數據泵導入數據文件的完整過程:
1、使用system用戶登錄數據庫,創建新用戶usertest(新建用戶時用戶名最好和數據文件導出時的用戶名相同),表空間可以使用系統默認的也可以自己新建一個表空間。sql代碼如下:
新建用戶使用oracle默認表空間:
create user usertest identified by usertest;
新建表空間:
create tablespace user_all
datafile 'D:/dev/oracle/tablespace/user_all.dbf'
size 300M
autoextend on
next 50M
maxsize unlimited
新建用戶(設置默認表空間):
create user usertest identified by usertest default tablespace user_all;
2、對新建的用戶賦權限,dba、connect、resource。sql代碼如下:
grant connect, resource,dba to usertest;
3、為數據庫導入導出,新建目錄文件 如dumpdir
create directory 目錄名稱 as '數據庫服務器上的一個目錄',如:
create directory dumpdir as 'd:\服務器目錄名';
將導入或導出的文件放在這個目錄下
4、為此用戶的導入導出目錄賦讀寫權限
grant read,write on directory dumpdir to usertest;
5、導出及導入
以SID=orcl,導出dmp的賬號為usertest,導入dmp的賬號為usertest為例。
若將數據從sfz中導出:
expdp usertest/usertest@orcl directory=dumpdir dumpfile=導出文件名
導入到usertest中:
impdp usertest/usertest@orcl directory=dumpdir dumpfile=導出文件名.dmp
導入導出用戶名最好相同,用戶名不同時,還需要做個映射
remap_schema=test:usertest
注意在使用本地數據庫時,要啟動以下oracle服務:
OracleOraDb11g_home1TNSListener
OracleServiceORCL
如果只是連接遠程服務器上的數據庫,僅使用PL/SQL工具,那么可以把服務全停,這樣能省點內存。