首页 > 代码库 > Oracle自动备份

Oracle自动备份

oracle中的数据进行备份.

说明: 
使用前提: 
需要配置好oracle客户端。

功能: 
备份oracle数据库。

说明: 
最新备份的数据库在backup目录下,上一次备份存放在Old_backup目录下,每次备份前,都会先删除Old_backup中的文件,然后将上一次的备份数据拷贝到Old_backup目录中,最后才进行备份。

关键脚本:

exp.txt

*****************************

userid=system/manager@xyj 
owner=scott 
INDEXES=y 
grants=y 
rows=y 
constraints=y 
compress=N

*****************************

Oracle_bakup.bat

*****************************

del /q ..\old_backup\*.* 
copy ..\backup\*.* ..\old_backup 
del /q ..\backup\*.* 
Oracle_bakup.vbs

*****************************

Oracle_bakup.vbs

*****************************

Option Explicit

On Error Resume Next

Dim fname, cmd 
Dim WshShell

Set WshShell = CreateObject("WScript.Shell")

fname = Date 
cmd = "exp log=../backup/" & fname & "_Oracle_bak.log file=../backup/" & fname & "_Oracle_bak.dmp parfile=exp.txt"

WshShell.run cmd

Set WshShell = Nothing

‘WScript.Echo cmd

*****************************

然后一个backup文件夹和Old_backup文件夹

备份步骤: 
1.修改script/exp.txt文件 
主要修改的参数为: 
userid=system/manager@xyj :这是用那个用户去备份数据库,并指明了连接的数据库 
在这里,用system用户备份数据库,其密码为manager,要备份的数据库为xyj。该部分一般要改。 
owner=scott:要备份哪个用户,该例中,要备份scott用户。如果要备份多个用户,用户名之间要用逗号‘,’隔开。该部分一般要改。 
如备份scott用户与system用户,则‘owner=scott,system‘。 
如果熟悉exp备份工具,则可以该其他参数。也可以向exp.txt文件中加入其他参数。 
查看exp的帮助:dos> exp -help

2.运行script\oracle_bakup.bat备份数据库。可以将该文件加入到windows的任务管理器中就实现了自动备份的功能。

http://blog.sina.com.cn/s/blog_55fb522f01000abj.html

===================================

===================================

VBS一键备份Oracle数据库

数据库备份是网络管理人员日常服务器维护最常见的工作,当前流行的数据库均提供了比较完善的数据库自动备份功能,但在实际工作中经常需要订制一些特殊的数据库备份操作,让数据库的备份工作更加“个性化”,因此直接使用数据库系统提供的程序工具将很难完成。为了能够更加灵活的对数据库进行备份操作,笔者通过参考了微软的VBS技术文档和Oracle数据库有关文档,使用VBS脚本实现的自动化远程Oracle数据库的一键备份操作。

Oracle数据库系统中通常进行数据导出操作可以使用EXP.EXE工具,但由于该程序是一个基于命令行的程序,在使用过程中需要输入比较复杂的参数,一般都是编写在批处理文件中之用,但Windows的批处理命令功能有限,笔者希望能够将备份的数据用备份时间作为文件名进行备份,然后进行压缩保存,因此使用一般的批处理命令难以完成,故笔者决定采用VBS编写脚本完成相应操作。

提示:EXP.EXE必须在安装了Oracle客户端的电脑中使用,调用格式如下:

EXP.EXE [username]/[password]@[name] file=[filename]

其中[username]是用户名,[password]是密码,[filename]是需要备份的目标文件名,[name]是在tnsnames.ora中设定的连接字符串,具体tnsnames.ora的配置本文不再赘述。

VBS脚本是属于WSH技术的脚本,它可以通过使用WScript.Shell对象的Run方法来调用EXP.EXE进行数据库的备份操作,另外可以使用VBS中的Date函数获取当前系统时间。按以上思路编写数据库备份子程序OracleEXP,如所附代码,其中App是EXP.EXE程序的完整路径名,User和Pass分别是数据库连接的用户名和密码,Dir是备份数据目标路径,ConStr是数据库连接字符串,即本文前面提示中的tnsnames.ora中设定的连接字符串。

通过以上的子程序已经可以实现远程数据库的备份了,但是一般数据库备份后至少是几百兆,大量的数据严重浪费了系统的磁盘空间资源,因此一般DBA都会使用WinRar等压缩软件对数据进行压缩处理。能不能让脚本自动实现数据的压缩呢?显然是可以通过VBS脚本调用WinRar来完成压缩任务,但一般有经验的管理员会选择尽量不在服务器安装多余的软件,因此笔者在这里选择了操作系统自带的MakeCab.exe这个实用的小工具进行数据的压缩工作。

MakeCab.exe是Windows 2000/XP/2003系统自带的一个命令行工具,可以将一个或者多个文件打包成CAB格式文件。因为CAB格式是微软发布程序的安装包格式,因此在操作系统下无需安装任何软件可以直接打开,并且配置合理的压缩参数其压缩率可以达到WinRar等商业压缩软件的压缩率。

提示:MakeCab.exe的使用方法如下:

makecab.exe /d compressiontype=lzx /d compressionmemory=21 [FullFileName]

其中/d compressiontype=lzx 设置适用LZX压缩算法进行压缩,/d compressionmemory=21设置压缩参数,21表示当前最大的压缩率。[FullFileName]是目标文件路径名。

最后通过使用附录中完整的VBS脚本实现了数据库数据的备份和压缩操作,并且数据备份的文件名可以按照程序的要求进行定制,本例中就是按照备份的日期作为备份名。使用脚本进行备份比直接使用命令行工具或者批处理命令备份有数据备份灵活的特点,通过VBS的脚本程序的控制可以调用其他的应用程序对备份的数据进一步处理,这样大大拓展了应用范围,为自定义备份提供了一条可行的方案。

由于脚本中保存了数据库用户名和密码等敏感信息,如果对安全性有比较高的要求,可以从微软网站下载Windows Script Encoder工具对脚本进行简单的加密,基本上可以满足一般的安全需求。

附:VBS一键备份脚本程序

 

‘ 备份Oracle数据库中数据

Function OracleEXP(App,User,Pass,Dir,ConStr)

  Dim wshell,file

  Set wshell = CreateObject("WScript.Shell")

  file = Dir & "\" & Replace(CStr(Date),"-","") & ".dmp"

  makeDumpCmdString = App & " " & User & "/" & Pass & ConStr & " file=" & file

  wshell.Run makeDumpCmdString,1,True

  Set wshell = Nothing

  OracleEXP = file

End Function

 

‘ 打开备份好数据库文件所在文件夹

Sub OpenDir(Dir)

Dim wshell

Set wshell = CreateObject("WScript.Shell")

makeDumpCmdString = "C:\Windows\Explorer.exe " & Dir

wshell.Run makeDumpCmdString,1,True

End Sub

 

‘ 对数据库备份文件进行压缩操作

Sub MakeCabinet(FullFileName)

Dim wshell,fso

Set wshell = CreateObject("WScript.Shell")

makeDumpCmdString = "makecab.exe /d compressiontype=lzx /d compressionmemory=21 " & FullFileName & " " & Replace(CStr(Date),"-","") & ".cab"

wshell.Run makeDumpCmdString,1,True

Set fso = Wscript.CreateObject("Scripting.FileSystemObject")

fso.DeleteFile(FullFileName)

Set fso = Nothing

Set wshell = Nothing

End Sub

 

‘ 程序入口

Dim cmd,user,dir

Dim DumpFile

‘ 运行参数

cmd = "E:\oracle\ora90\BIN\EXP.EXE"

user = "OracleUser"

pass = "OraclePassw0rd"

dir = "e:\数据库备份"

constr = "@DB"

MsgBox "开始备份?",vbOK,"开始"

DumpFile = OracleEXP(cmd,user,pass,dir,constr)

MakeCabinet DumpFile

OpenDir dir ‘打开dir文件夹

 

http://blog.jspi.cn/user1/12/archives/2007/3004.html

 

配置客户端

http://wenku.baidu.com/view/7640884ef7ec4afe04a1df82.html

http://www.docin.com/p-210451078.html