一、创建表空间
在导入 dmp 文件之前,你要在数据库里面给它分配一片存储它的地方(表空间)。
如果我们知道需要导入的数据库的表空间直接创建就可以,如果不不知道,也没有关系,我们可以用 txt 打开 dmp 文件,使用快捷键 Ctrl+F,查找 tablespace,就可以找到这个 dmp 文件所对应数据库的表空间,然后创建我们找到的表空间就可以。
create tablespace "表空间名"
datafile 'D:\app\*****\oradata\orcl\表空间名.dbf' size 50M
default storage (initial 500K
Next 500K
minextents 1
maxextents unlimited
pctincrease 0);
注意:datafile 路径为 oracle 数据库安装对应的目录,为方便查看将表空间的文件设置为表空间的名字。
二、创建用户
使用数据库 dba 用户创建用户并赋予相应的导入导出等权限。
第一步:选择New。
第二步:选择User。
第三步:点选General标签。选择第一步创建的表空间,并填写用户名密码。
第四步:点选Role Privileges标签。Role选择connect,勾选“Default”。
第五步:点选System Privileges标签。选择“create any table”、“create any type”、“create any sequence”,右侧不勾选。
第六步:点选Quotas标签。tablespace中选择“users”表空间,勾选“Unlimited”(无限权限)。
第七步:“Apply” 之后,即可用此用户以普通用户(Normal)的身份登录了。
三、导入dmp
建议使用命令行进行导入,避免使用PLSQL,会产生各种灵异问题。比如:1)导入的时候一闪而过,显示导入成功,但数据库里找不到任何数据。2)选择From User、To User时显示“Not logged on”问题。所以,在最后附上命令行的导入方式。可以跳过使用PLSQL导入,直接看命令行导入方式
第一步:使用创建的用户登录
可以看到新创建的用户有表空间 CDP
第三步:选择tools(工具)菜单下的import tables..(导入表);
第四步:在oracle import选项卡界面勾选相应的选项;
第五步:选择buffer size(缓冲池大小);
第六步:填写from user导出dmp文件的用户;
第七步:填写to user导入dmp文件的用户,即当前登录的用户;
第八步:import executable选择默认;
第九步:选择dmp文件;
第十步:import(导入)。
附:命令行导入方式
注意:1、导入前同样需要创建表空间。2、设置表空间的自动增长(否则导入数据大于表空间的存储量会导入失败)。
1、设置表空间自动增长(其中路径为表空间的路径)
ALTER DATABASE DATAFILE 'D:\app\1234\oradata\orcl\CDP.DBF' AUTOEXTEND ON;//打开自动增长
ALTER DATABASE DATAFILE 'D:\app\1234\oradata\orcl\CDP.DBF' AUTOEXTEND ON NEXT 200M ;//每次自动增长200m
ALTER DATABASE DATAFILE 'D:\app\1234\oradata\orcl\CDP.DBF' AUTOEXTEND ON NEXT 200M MAXSIZE 1024M;//每次自动增长200m,数据表最大不超过1G
2、导入dmp文件
注意:此语句要使用Windows自带的命令行,不要使用oracle的SQL Plus
imp root/root@orcl file=E:\CDP\cdpnew_20160706\backup\oracle11g_dmp\cdp\cdpnew_20160706.dmp full=y