暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Windows下Oracle数据库expdp/impdp备份与恢复

数码百科 2024-01-06
729
备份方式
Oracle主要分为数据泵导出备份、热备份与冷备份三种,其中数据泵导出/导入(xpdp/impdp和exp/imp)属于逻辑备份,逻辑备份是对数据库逻辑组件如表、视图和存储过程,触发器等数据库对象,热备份与冷备份都属于物理备份。
expdp/impdp和exp/imp 优缺点比较
1、exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
2、expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用。
3、imp只适用于exp导出的文件,不适用于expdp导出文件,impdp只适用于expdp导出的文件,而不适用于exp导出文件。
4、对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出,且expdp的执行效率比exp快20倍。
具体操作步骤

sqlplus admin/admin@orcl #登录数据库

create directory dpdata as ‘D:\orclbak’; #创建dpdata

注意:需要同时在windows系统下新建对应的文件夹

#查询是否新建dpdata

select * from dba_directories; 

#赋予用户admin的dpdata读写权限

grant read,write on directory dpdata to admin; 

expdp备份

expdp admin/admin@orcl directory=dpdata dumpfile=test.dmp logfile=test.log 

impdp还原
impdp admin/admin@orcl directory=dpdata dumpfile=dmp文件名 logfile=log文件名

语法解析:

directory指定的是目录对象,这里的目录对象就是在使用expdp导出时创建的目录对象。

dumpfile指定的是要导入的dmp文件。

知识拓展

用expdp导出数据

1)导出用户
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp directory=dump_dir;

2)导出表
expdp scott/tiger@orcl tables=emp,dept dumpfile=expdp.dmp directory=dump_dir;

3)按查询条件导
expdp scott/tiger@orcl directory=dump_dir dumpfile=expdp.dmp tables=empquery='where deptno=20';

4)按表空间导
expdp system/manager@orcl directory=dump_dir dumpfile=tablespace.dmptablespaces=temp,example;

5)导整个数据库
expdp system/manager@orcl directory=dump_dir dumpfile=full.dmp full=y;

用impdp导入数据

1)导入用户(从用户scott导入到用户scott)
impdp scott/tiger@orcl directory=dump_dir dumpfile=expdp.dmp schemas=scott;

2)导入表(从scott用户中把表dept和emp导入到system用户中)
impdp system/manager@orcl directory=dump_dir dumpfile=expdp.dmptables=scott.dept,scott.emp remap_schema=scott:system;

3)导入表空间
impdp system/manager@orcl directory=dump_dir dumpfile=tablespace.dmp tablespaces=example;

4)导入数据库
impdb system/manager@orcl directory=dump_dir dumpfile=full.dmp full=y;

5)追加数据
impdp system/manager@orcl directory=dump_dir dumpfile=expdp.dmp schemas=systemtable_exists_action

利用windows任务计划程序定时备份

Win + R 输入 taskschd.msc 打开任务计划程序创建脚本执行计划。


@echo off

echo 检查创建备份目录  

if not exist "D:\orclbak" mkdir D:\orclbak

set DATADIR=D:\orclbak

echo 设置导出文件名和日志文件名

set Today=%DATE%

set Today=%Today:~0,4%%Today:~5,2%%Today:~8,2%

set dmpname=%Today%_dmp

set logname=%Today%_log

echo 输出文件名和日志文件名,验证是否正确命名

echo %dmpname%

echo %logfilename%


echo 开始备份数据库

echo 使用EXPDP命令导出DMP文件

expdp  admin/admin@orcl  directory=dpdata dumpfile=%dmpname%.dmp logfile=%logfilename%.log

echo 备份完成


::删除7天前的备份

forfiles /p "%DATADIR%" /s /m *.* /d -7 /c "cmd /c del @path"

::exit

pause>nul

文章转载自数码百科,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论