oracle还原数据库dmp,实操好用
之前还原了一次数据库并且记录了还原步骤,当再次帮别人恢复的时候发现之前的方法并不可行了;在其他同事的指导下了解了新的方法;
首先了解一下数据库备份和还原命令
EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。
注意:EXP不会导出空表(可能会对存储过程有影响)
原文链接:https://blog.csdn.net/whxlovexue/article/details/82378389
了解了备份和还原命令后,我们应该可以看出可能更多的人更愿意使用expdp命令进行备份,我在最近一次还原数据库的时候就遇到的是使用expdp命令进行备份的文件,当我使用imp命令还原的时候就报错了;
(*错误信息:
IMP-00038: Could not convert to environment character set’s handle
IMP-00000: Import terminated unsuccessfully*)
于是我使用impdp命令(impdp user1/user1@orcl dumpfile=GCL.dmp directory=dpdata1 logfile = gclImpdp20191017.log FULL=y)
然而还是有很多错误,因为数据库中包含表空间tablespace、角色role、用户user,需要自己手工创建;
实际操作步骤:
1.创建目录
sqlplus中执行:create directory dpdata1 as 'D:\Oracle\database';
其中dpdata1相当于是物理路径’D:\Oracle\database’的别名,dpdata1与对应路径的信息会存储到某个表中,要恢复的dmp文件需要放在该路径下;
2.将dpdata1的读写权限赋给DBA用户
(sqlplus登陆DBA用户的命令: conn/as sysdba 再输入DBA的密码)
grant read,write on directory dpdbdata1 to system;
3.创建表空间
如果已经知道需要创建表空间名称的情况可以直接用下面的语句直接创建,如果不知道需要先执行impdp语句,会报错提示哪个表空间不存在,根据提示再创建
第一种写法:
create tablespace tbspace1 datafile 'D:\Oracle\Database\tbspace1.dbf' size 100M
AUTOEXTEND ON NEXT 100M
MAXSIZE UNLIMITED
LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
第二种写法:
CREATE TABLESPACE "tbspace1"
LOGGING
DATAFILE 'D:\GCLSIDB\GCLSIDB\tbspace01.ora' SIZE 20M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED,
'D:\GCLSIDB\GCLSIDB\tbspace02.ora' SIZE 20M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
创建临时表空间语法上有些差异,在TABLESPACE前+temporary,例如:
create temporary tablespace tempspace1 tempfile 'D:\Oracle\Database\tempspace1.dbf' size 100M
AUTOEXTEND ON NEXT 100M
MAXSIZE UNLIMITED ;
4.创建角色和用户并赋权限
如果已知角色和用户名就先创建,如果未知需要先执行impdp语句,会报错提示用户不存在,根据提示再创建
创建角色
//如果已存在则删除
drop roles role1;
create role role1 identified;
//赋权限
grant connect, resource to role1;
创建用户
drop user user1 CASCADE;
create user user1 identified by password1 [default tablespace tbspace1 temporary tablespace TEMPDATA];
grant connect, resource[,dba,UNLIMITED] TABLESPACE TO user1;
5.impdp DB
在cmd中执行impdp命令: impdp user1/password1@orcl dumpfile=GCL.dmp directory=dpdata1 logfile = gclImpdp20191017.log FULL=y
其中需要先把dumpfile文件即dmp备份文件放在directory目录下,也就是D:\Oracle\database\目录下,logfile是自动生成的,会记录执行impdp产生的信息(记录报错或成功等详细信息),这里只需要指定文件名,@orcl中@后面是实例名,安装oracle时默认的是orcl,如果是默认的实例名@orcl可省略不写;
因为我是知道表空间、角色、用户的信息,所以在恢复的时候按照上面的顺序,如果并不知道,执行的顺序就需要调整了,后期测试后再补充;
在执行上述操作的时候如果提示磁盘空间不足,应该就是你的所在磁盘存储不够了
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)