之前因为工作需要将 dmp 文件导入进 Oracle ,记下步骤
一、第一部分
1、在 cmd 下进入 oracle:
输入:sqlplus 账号/密码
出现错误则:请输入用户名:账号 as sysdba
输入口令:密码
2、首先可以先建立自己的一个用户表空间,创建表空间:
create tablespace test //test为表空间的名字
datafile 'G:\oracle11gr2\product\11.2.0\dbhome_1\test.dbf' //这边可以写成oracle的某个路径下
size 2g //初始大小
autoextend on; //自动扩展
3、接下来创建一个自己的用户:
CREATE USER utest //用户名为utest
IDENTIFIED BY 123456 //密码为123456
DEFAULT TABLESPACE test //test为上面创建的表空间
TEMPORARY TABLESPACE temp; //临时表空间就写temp即可
4、然后需要给自己创建的用户赋予权限:
GRANT CONNECT TO utest;
GRANT RESOURCE TO utest;
GRANT dba TO utest; //dba为最高级权限,可以创建数据库,表等
5、创建一个存放 dmp 文件的目录:
create directory dpdata1 as ‘D:\OracleDMP’; //创建了目录dpdata1
二、第二部分
首先需要知道文件dmp是用什么数据泵导出的:exp导出来的用imp导入;expbd导出来的用impbd导入;
若dmp用expbd导出的,用imp导入就会出现下面这个错误:
只能通过试错得出原 dmp 是什么数据泵导出的
1、下面新打开进入一个 cmd,输入:
imp utest/123456 file=D:\hz.dmp full=y ignore=y
若发生上面那个“IMP-00038:无法转换为环境字符集句柄”错误,则说明这个原先的dmp文件是用expdb导出的,需要用impbd语句导出。(本次就发生了这样的错误)
2、还是 cmd 目录下,输入:
impdp onlinecolzs/onlinecozs dumpfile=XXX.dmp directory=dpdata1 remap_schema=onlinecol:onlinecolzs remap_tablespace=ts_onlinecol_prod:zaixianzs_data
参数说明:
onlinecolzs:用户名;
onlinecozs:密码;
XXX.dmp:需要导入的dmp文件;
dpdata1:在第一部分的第5点创建的存放dmp文件的目录;
remap_schema:该选项用于将源方案的所有对象装载到目标方案中;onlinecol是原先dmp文件的对象方案(导出这个文件的用户),如果不知道原先的对象方案名称是什么,先随便写个,到时候导入的时候会提示对象方案不存在,把提示不存在的对象方案名称写上去就可以;onlinecolzs是现在的目标方案对象,一般填用户名utest就行;
remap_tablespace:将源表空间的所有对象导入到目标表空间中;ts_onlinecol_prod:原先dmp文件的表空间名称,如果不知道原先的表空间名称是什么,先随便写个,到时候导入的时候会提示表空间不存在,把提示不存在的表空间名称写上去就可以。zaixianzs_data:需要导入的表空间,在第一部分的第2点创建的表空间(test),
其中有些参数我们不知道,可以通过试错来找出:
试错一:用户不存在,则可以将 onlineecol 改为此名称
试错二:表空间不存在,则可以将 ts_onlinecol_prod 改为此名称
最终执行语句为:
impdp utest/123456 dumpfile=hz.dmp directory=dpdata1 remap_schema=HZSJHL:utest remap_tablespace=SJHL_DATA:test
至此,导入成功!