数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle自动异地远程数据备份研究


发布日期:2018年11月12日
 
Oracle自动异地远程数据备份研究

当前随着行业改革的不断深入数据逐步向地市公司集中业务经营政务管理对于信息系统和核心数据的依赖程度也越来越高如何保障核心数据的安全就显得尤为重要相信很多单位均已实现了本地的磁盘与磁带的双备份很好的保障了对核心数据的安全管理

但本地备份一般将数据保留在机房内当本地机房整体物理环境遭到破坏如发生火灾地震等意外事件时数据有可能也会损伤美国事件让许多公司的商务资料在瞬间毁于一旦足以证明远程数据备份的重要性但是建立一个完备的支持实时数据恢复功能的远程备份系统的投入是非常昂贵的本文结合工作实际充分利用县公司机房中现有的存储条件借助oracle自动备份和ftp自动传输技术实现了核心Oracle数据库的自动远程异地备份当本地机房物理环境遭到破坏时能最大限度的保护好我们的数据

设计思路

当前支撑绍兴烟草营销呼叫专卖财务OA等核心系统运行的主要是TradeCtrQueryCtrJTCWOA四个Oracle数据库运行在两台HP小型机上每个数据库的备份大约为G左右考虑到今后两年内的数据增长可能会达到G左右绍兴烟草下属四个县公司每个公司均具备充分的存储空间网络实际可利用带宽均为Mbit/s左右完成一个备份文件的数据传输大约需要个小时考虑到网络带宽传输时间及工作时间对业务经营的影响我们将数据备份及远程传输放在星期六进行每个单位对应一个数据库进行远程备份备份周期为每周一次每周六下午开始备份中主要用到数据库导出ftp自动传输HPUNIX定时作业等技术下面以财务数据库JTCW为例来说明具体实现方式

导出数据库

export命令将数据库中的数据备份成一个二进制文件它通常有三种模式用户模式表模式和整个数据库模式本文拟采用用户模式备份之前应先建立一个备份目录以在本机容纳备份文件比如可建一个/localbak目录我们将JTCW数据库在用户模式下备份备份保留周期为一天具体脚本如下保留在exp_JTCWsh文件中

exportEXP_HOME=/localbak#设置环境变量EXP_HOME

exportORACLE_SID=JTCW#设置环境变量ORACLE_SID

expsystem/passwordowner=hsafile=$EXP_HOME/JTCW$(LC_ALL=Cdate+%y%m%d)dmplog=$EXP_HOME/JTCW$(LC_ALL=Cdate+%y%m%d)logstatistics=none#备份数据以日期方式命名

find/oradata/cwdata/backuptypefmtimeexecrm{}\;#保留周期为三天

自动数据传输

我们知道通常可用FTP命令在两台主机间传输数据但一般是通过交互方式实现的即需要手工输入目标主机的IP地址用户名口令等显然这不符合自动备份的要求所幸的是在HPUNIX平台下我们可以通过编写一rc的文件来达到目标这一文件必须命名rc且必须存放在启动FTP命令的机器上的用户注册目录中该文件的权限应禁止组内或其它用户进行读访问这样当用户使用FTP命令的时候系统将会在该用户的注册目录中寻rc文件如果能够寻找到将会首先执行该文件否则会交互式地提示用户输入用户名口令等

在使用FTP命令之前应先在对应县公司一台作备份用的机器上开启ftp服务并建立上传文件目录以容纳备份文件本文建立的目录是/remotebak为了加快备份速度rc文件内容如下

machinehost#host为作备份用的主机名

loginftpuser#ftpuser为远程备份主机上的一个用户

passwordftpuser#ftpuser用户的口令为ftpuser

macdefinit#定义一个名为init的宏它将在自动注册进程的最后被执行

bin#文件的传输方式设为二进制

lcd/localbak#进入本地工作目录/localbak

cd/remotebak#进入远程备份主机目录/remotebak

mput*#将/localbak目录下的所有文件传输至备份主机

bye#退出FTP会话进程

rc文件编写完成后使用下述命令

chmodrc

这样rc文件就只能被该用户所访问

启动备份进程

HPUNIX平台下Cron是一个永久进程它由/etc/rclocal启动执行Cron检查/var/spool/cron/crontabs/目录中的文件找到所要执行的任务和执行任务的时间

Crontab文件的每一行由六个域(minuteshoursdayofmonthmonthdayofweekcommand)组成域之间用空格或Tab分开其中

minutes分钟域值的范围是

hours小时域值的范围是

dayofmonth日期值的范围是

month月份值的范围是

dayofweek星期值的范围是星期日值为

command所要运行的命令

如果一个域是空表明命令可以在该域所有可能的取值范围内执行

如果一个域是由连字符隔开的两个数字表明命令可以在两个数字之间的范围内执行(包括两个数字本身)

如果一个域是由逗号隔开的一系列值组成的表明命令可以在这些值组成的范围内执行如果日期域和星期域都有值则这两个域都有效

现在我们编写一个文件用以启动自动备份进程值得注意的是该文件只能在Oracle用户名下用crontabe命令来编辑否则将不会被定时执行文件名定为Oracle文件将放在/var/spool/cron/crontabs目录下编辑完成后可以在Oracle的$提示符下用crontabl命令来查看

cron表中的内容如下

**/oracle/product//DBA/script/exp_JTCWsh

#每周六上午点对数据库执行备份

**ftpihost

#每周六下午点启动远程传输将文件备份到另一台主机上

经过以上的操作后系统每周六开始产生一个本地备份并在周六下午启动远程传输自动将备份文件分别拷贝到对应县公司的远程主机上其余三个数据库的配置也类似从而实现了核心数据库的自动远程异地备份系统管理员需要做的工作是定期清理远程备份主机的备份目录该系统在浙江绍兴烟草分公司运行近个月目前系统整体状况良好极大提高了绍兴烟草的数据安全性其实用性稳定性安全性得到充分的验证

上一篇:Oracle高层将在下周三公布Sun路线图

下一篇:oracle到mysql的迁移步骤及各种注意事项