Oracle自动备份

最近得到需求,需要每天自动备份Oracle数据库,防止数据丢失。

现有windows服务器一台,文件服务器一台,需要每天凌晨2点自动备份压缩数据库到指定文件服务器目录。

实现方式有如下两种:

服务器自动备份压缩后上传至文件服务器

首先编写windows可执行脚本.bat文件,使用Oracle的Expdp命令导出数据库。expdp命令的详细解释请转到http://my.oschina.net/papio/blog/749473查看,在这里不做详解。

然后就是压缩导出的dmp文件,我们这里使用WinRAR软件的命令行执行压缩与解压缩等,而且就一个rar.exe就能支持图形界面的很多操作,特别方便远程管理。压缩命令为:%winrar%\Rar.exe a d:/final.rar d:/wk.doc   WinRAR命令的详细解释请转到https://my.oschina.net/papio/blog/1546411查看,在这里不做详解。

最后就是上传到文件服务器了,由于在项目实施的时候文件服务并没有批下来,所有并没有使用此处技术。

以下是脚本源码:

set var=scmnkyy_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~1,1%%time:~3,2%%time:~6,2%.dmp
Expdp scmnkyy/scmnkyy DUMPFILE=%var% SCHEMAS=scmnkyy
"C:\Program Files (x86)\WinRAR\Rar.exe" a "d:\scmnkyy_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~1,1%%time:~3,2%%time:~6,2%.rar" "D:\app\papio\admin\orcl\dpdump\%var%"
del "D:\app\papio\admin\orcl\dpdump\%var%"

在windows系统中目录最好使用“”包裹,因为会有很多命令不识别目录中的空格等特殊字符。

写好接本保存到auto.bat文件中。

接下想要实现脚本每天自动执行则需要添加windows的计划任务。

打开控制面板--》管理工具--》任务计划程序--》创建基本任务Oracle自动备份_第1张图片

按照提示点击下一步,最后完成。

在文件服务器端通过oracle client远程导出数据库

现在先定义两个变量:server1 = 数据库服务器,server2 = 文件服务器

当数据库创建在server1上,而在server2上安装了oracle client的时候,如果直接在servr2上先创建一个dump文件存放路径,再run command “CREATE or REPLACE directory mydumpdir as 'D:\Backup\Dump_File\';”命令运行后也会提示directory创建成功,可是在运行expdp命令的时候就会出错如下图,即使在提示directory创建成功后run命令“grant read, write on directory mydumpdir to system;”后再执行expdp同样出现截图中的错误

问题原因:网上很多帖子说是因为expdp认的directory是在服务端,expdp在客户端执行会把相应的dump文件导到服务端上,而实际上服务端根本就没有创建该路径,所以报错。 解决方法:1,在服务端上直接运行expdp命令,直接导出到服务端上 2,如果坚持要将dump文件导出到客户端上,需要在创建directory之后运行命令“grant read, write on directory mydumpdir to public;”

如此备份下来之后执行前面的压缩以及

转载于:https://my.oschina.net/papio/blog/1546413

你可能感兴趣的:(数据库)