实现Oracle异地数据自动备份的方案
创始人
2024-07-29 07:31:03
0

Oracle异地数据自动备份现在在很多地方都得到了广泛的应用,就比如在大型商业应用中,数据的异地容灾备份十分重要,也必不可少。笔者根据自己的实践经验,设计了一套简洁地实现异地数据自动备份的方案,可供数据库管理人员参考。文中所有的程序都经过测试,运行良好。这里模拟的异地运行环境为一主一备两套SunSolaris系统,所采用的备份方法为Oracle数据库提供的标准备份:export。

相关命令

文中主要用到三个命令,这里先单独介绍一下:

export:将数据库中数据备份成一个二进制系统文件,它有三种模式:用户模式、表模式、整个数据库模式。还可分为三种备份类型:完全型、积累型、增量型。本文以整个数据库模式下的完全型为例说明。export使用格式为:expuseridfile。

其中:userid的用法为username/userpassword,即Oracle中的用户名/口令。userid必须为exp的第一个参数,file指备份文件所放位置及名称。

ftp:一般情况下可通过交互方式实现两台主机间的数据传输,即需要手工输入目标主机的IP地址、用户名、口令等。但是当用户使用ftp命令时,系统将会先在该用户的注册目录中寻找.netrc文件,并首先执行该文件。这样,我们可以通过编写一个.netrc的文件来达到自动备份的目的。要注意该文件必须命名为.netrc,且必须存放在启动ftp命令主机上的用户注册目录里。ftp常用选项:

-i:进行多文件传送时关闭交互提示;

-n:在连接之后不进行自动登录。

本文使用“-i”选项,以关闭交互提示。

crontab:cron是一个永久进程,它由/etc/rc.local启动执行。cron检查/var/spool/cron/crontabs/目录中的文件,找到所要执行的任务和执行任务的时间,并自动完成。该目录中文件由crontab命令建立。用户所建立的crontab文件存于/var/spool/cron/crontabs中,其文件名与用户名一致,本文使用crontab的用户为Oracle,所建立的文件名也为Oracle。

cron使用者的权限记载在下列两个文件中:/usr/var/adm/cron/cron.deny和/usr/var/adm/cron/cron.allow。前面的文件中所列的用户不允许使用crontab命令;后一文件中所列的用户允许使用crontab命令。crontab命令的常用格式为:

crontab-l:显示用户的crontab文件的内容;

crontab-r:从crontabs目录中删除用户的crontab文件;

crontab-e:编辑用户的crontab文件。

crontab文件每行中有6个字段,前5个为时间设定段,第6个为所要执行的命令。时间段分别为:minutes、hours、dayofmonth、month、dayofweek,字段之间用空格或Tab分开。字段如果为“*”,表示该字段在所有可能的取值范围内取值;如果一个字段是由连字符隔开的两个数字,表明命令可以在两个数字之间的范围内执行。

备份数据库

设定数据库的拥有者为Oracle,用户名为mistest,其口令为test,新建备份目录为/export/home/oracle/backup。建立一个命名为testbackup的备份文件,文件内容如下:

ORACLE-HOME=/export/home/oracle/815;exportORACLE-HOME

ORACLE-SID=ora815;exportORACLE-SID

rm/export/home/oracle/backup/*

rq=丶date+“%m%d”丶

/export/home/oracle/815/bin/expmistest/testfile=/export/home/oracle

/backup/exp$rq.dmplog=/exoport/home/oracle/backup/exp$rq.log

说明:前两句对Oracle数据库初始化,第3条语句清空备份目录,第4条语句建立一个取当前日期的变量,以便在最后一条语句的备份文件名里含有当前日期信息。testbackup编写完成后,用“chmod+xtestbackup”命令授予它可执行权限。

异地传输

在备份主机里建立一个备份目录:/database/oradata/newbackup,在本地主机Oracle用户的注册目录/export/home/oracle里建立一个.netrc文件。设定好备份主机的IP地址,备份主机上的用户为oraclebk,口令为testbk2。.netrc文件内容为:

machinex.x.x..x

loginoraclebk

passwordtestbk2

macdefinit

bin

lcd/export/home/oracle/backup

cd/database/oradata/backup

mput*

bye 

说明:前3条语句完成在备份主机上的登录,第4条语句定义一个名为init的宏,第5条语句表示以二进制传输,第6条语句表示进入本地工作目录,第7条语句表示进入备份主机目录,第8条语句完成将本地主机/export/home/oracle/backup目录下的所有文件传输至备份主机/database/oradata/backup目录下,最后一条语句退出ftp会话进程。.netrc文件编写完成后,用命令“chmod600.netrc”使该文件只能被该用户所访问。

自动执行

我们以oracle用户登录本地主机,用“crontab-e”编写crontab文件用以启动自动备份进程。oracle文件内容如下:

1023***/export/home/oracle/testbackup

3023***ftp-ix.x.x.x

说明:第1条语句指定每天自动在23点10分执行对数据库的备份,第2条语句指定每天自动在23点半启动ftp,将备份文件传输到备份主机(备份主机为符合语句中指定IP地址的主机)。

Oracle文件只能在Oracle用户名下用“crontab-e”命令来编辑。编辑完成后,可以在用“crontab-l”命令来查看crontab文件内容,同时在/var/spool/cron/crontabs目录下查看是否增加了一个Oracle文件。

至此,本地主机可以每天定时备份数据库,并定时把备份数据传到备份主机。这样,较好地实现了Oracle数据异地自动备份,本地主机如果有什么故障,数据有了可靠备份,同时,在一定程度上也减轻了系统管理人员烦琐、重复的备份工作。

 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...