一、备份(导出)数据
-- cmd窗口(不用登录Oracle账户)导出数据
expdp avfar/avfar@orcl directory=dump_bak dumpfile=C:\Users\XIAO\Desktop\AVFAR20200211.DMP schemas=avfar logfile=avfar2020-02-11_exp.log;
二、恢复(导入)数据
--查看是否存在数据库directory,没有则创建一个(或者使用系统实例的默认directory)
select * from dba_directories;
--创建directory
create or replace directory dump_bak as 'D:\adp\bak';
-- 【注】:bak文件夹需要手动在磁盘目录创建,否则导入时会报如下异常:
-- ORA-39002: 操作无效
-- ORA-39070: 无法打开日志文件。
-- ORA-29283: 文件操作无效
-- ORA-06512: 在 "SYS.UTL_FILE", line 536
-- ORA-29283: 文件操作无效
--给数据库用户avfar设置directory权限(使用system用户登录授权)
Grant read,write on directory dump_bak to avfar;
-- 导入(数据泵方式),cmd窗命令(不用登录Oracle账户)如下(.dmp文件名不能包含路径,故需跳转到.dmp文件所在目录执行cmd的SQL脚本):
impdp avfar/avfar@orcl directory=DUMP_BAK dumpfile=AVFAR20200211.DMP logfile=avfar2020-02-11_imp.log full=y
--导入时,建议将dmp文件手动复制一份至directory的映射目录下,在这里指“D:\adp\bak”,否则报如下异常:
--连接到: Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
--ORA-39001: 参数值无效
--ORA-39000: 转储文件说明错误
--ORA-31640: 无法打开要读取的转储文件 "D:\adp\bak\AVFAR20200211.DMP"
--ORA-27041: 无法打开文件
--OSD-04002: ???????
--O/S-Error: (OS 2) ????????????????
=======================================================
注意:
oracle 11g导入报错请注意以下几点:
(1)导入文件“AVFAR20200211.DMP”是否能自动加载到directory目录对应的映射目录下,如果不能,请手动复制到映射目录。
(2)导出的.dmp文件如果没有注明oracle版本,请尝试在最后添加版本参数:“ version=11.2.0”,尝试下。
(3)建议导出时备注导出时的oracle版本(数字版本+版本类别(企业版、标准本、个人版)),导入时sql脚本需注明版本即可导入。
(4)不建议跨版本导入,比如:v9—>v11,v8—>v11;oracle兼容相邻版本导入,如:v9—>v10,v10—>v11
例:
--导入数据
impdp avfar6y/avfar6y@orcl directory=DATA_PUMP_DIR dumpfile=AVFAR20200211.DMP full=y version=11.2.0
--导出数据
expdp avfar/avfar@orcl directory=DATA_PUMP_DIR dumpfile=AVFAR20200211.DMP schemas=avfar version=11.2.0
=======================================================