导入dmp文件分为三大步:创建表空间、创建用户、导入dmp文件
一、创建表空间:
点击new,新建一个sql window
语句为:
create tablespace "表空间名" datafile 'D:\app\*****\oradata\orcl\表空间名.dbf' size 50M default storage (initial 500K Next 500K minextents 1 maxextents unlimited pctincrease 0);
如:
create tablespace CDP datafile 'D:\app\LBD\virtual\oradata\orcl\CDP.dbf' size 2000M;
其中,CDP代表表空间名字,datafile后面的目录地址代表本地ORACLE的安装目录,为方便查看我这里将表空间的文件名设置为表空间的名字。
运行之后我们就能看到自己的表空间啦
这一步的常见报错有:
ora-01119错误 原因:该错误的主要问题是在于创建表空间的文件目录地址没有指定正确。
ORACLE-01537错误 原因:表空间'TT'或者文件名'TT.dbf'已经被使用。
二、创建用户
使用数据库 dba 用户创建用户并赋予相应的导入导出等权限。
1.选择new--user
2.点选General标签。选择第一步创建的表空间,并填写用户名密码
3.点选Role Privileges标签。Role选择connect,勾选“Default”。
4.点选System Privileges标签。选择“create any table”、“create any type”、“create any sequence”,右侧不勾选。
5.点选Quotas标签。tablespace中选择“users”表空间,勾选“Unlimited”(无限权限)。
6.点击APPLY。退出plsql重新登陆。到这里,我们就可以使用刚刚创建的用户以普通用户(Normal)的身份登录了
三、导入dmp文件
导入dmp文件有两种方式:1)使用plsql导入;2)用命令行导入。
*应尽量避免使用plsql进行导入,因为会出现很多会产生各种灵异问题。比如:1)导入的时候一闪而过,显示导入成功,但数据库里找不到任何数据。2)选择From User、To User时显示“Not logged on”问题。
1,plsql导入简介(避免使用):
第一步:使用创建的用户登录
第三步:选择tools(工具)菜单下的import tables..(导入表);
第四步:在oracle import选项卡界面勾选相应的选项;
第五步:选择buffer size(缓冲池大小);
第六步:填写from user导出dmp文件的用户;
第七步:填写to user导入dmp文件的用户,即当前登录的用户;
第八步:import executable选择默认;
第九步:选择dmp文件;
第十步:import(导入)。
2,Windows自带的命令行导入:
导入前注意:
1、导入前同样需要创建表空间。
2、设置表空间的自动增长(否则导入数据大于表空间的存储量会导入失败)。
设置表空间:
ALTER DATABASE DATAFILE ' F:\app\root\oradata\orcl\HF_PMC_NEW.dbf ' AUTOEXTEND ON;//打开自动增长
ALTER DATABASE DATAFILE ' F:\app\root\oradata\orcl\HF_PMC_NEW.dbf ' AUTOEXTEND ON NEXT 200M ;//每次自动增长200m
ALTER DATABASE DATAFILE ' F:\app\root\oradata\orcl\HF_PMC_NEW.dbf ' AUTOEXTEND ON NEXT 200M MAXSIZE 1024M;//每次自动增长200m,数据表最大不超过1G
给用户赋予dba权限:
1, plsql上用有dba权限的账号登录;
2, 运行GRANT DBA TO MYCDP;
导入dmp命令行:
*注意要用windows自带的命令行导入(win+r)
例1:
imp system/123@127.0.0.1:1521/orcl file=C:\pmc20190722.dmp log=D:\test.log fromuser=root touser=system constraints=N ignore=y
例2:
imp MYCDP/MYCDP@ORCL file=D:\umecmycim20200425.dmp full=y;
这一步的常见报错有:
IMP-00013: 只有 DBA 才能导入由其他 DBA 导出的文件。 原因:没有给创建的用户赋权限 ,要用超级管理员账号登陆, 运行GRANT DBA TO MYCDP;赋予dba权限之后才可以导入。
IMP-00002: 无法打开 C:\****.dmp进行读取 。 原因:检查sql语句最后是不是少了分号“;”,或者没有加: full=y,这些都会引起无法读取。
IMP-00034:警告:在导出文件中未找到FromUser"root "
注意: 导出时的账号是什么,导进去的账号是什么。注意设置,最好一致!