首页 > 大数据 > 正文

oracle自动异地数据备份

2011-05-03 10:20:39  来源:e-work

摘要:Oracle自动异地数据备份的模拟环境为一主一备两套Unix操作系统Sun Solaris8系统。数据库的备份将以整个数据库完全模式进行,每晚11点自动执行对数据库的备份。
关键词: Oracle 自动异

  随着经济飞速发展,部分企业的规模也迅速扩张,企业数据相应逐级分散,向地市公司集中,企业的经营与管理对于信息系统和核心数据的依赖程度越来越高,如何尽可能地保障核心数据的安全与完整显得十分重要。目前多数企业都已经实现了本地磁盘与磁带的双备份,对核心数据的安全起到了很好的保护作用。但本地备份数据一般被保存在机房内,当本地机房物理环境遭到破坏,如突发火灾、地震、洪水等意外事件时,数据就可能遭到破坏。本文结合实际,利用单位机房中现有的存储设备,采用Oracle自动备份和卸自动传输技术,实现了核心Oracle的自动异地数据备份,当本地机房物理环境遭到破坏时,能够最大限度地保护数据。以下为详细的设计思路及实现方法。

  一、Oracle自动异地数据备份方案

  Oracle自动异地数据备份的模拟环境为一主一备两套Unix操作系统Sun Solaris8系统。数据库的备份将以整个数据库完全模式进行,每晚11点自动执行对数据库的备份,每晚11点20分启动ftp,将备份文件传输到备份主机(备份主机为程序语句中指定IP地址的主机)。

  二、自动异地远程数据备份方案的具体实施步骤

  1、Oracle自动异地数据备份导出数据库

  Oracle数据库有两种备份方式,一种是物理备份方式,一种是逻辑备份方式,物理备份方法可以实现数据库的完整恢复,但数据库必须运行在归挡模式下且需要占用很大的外存空间;采用逻辑备份方式不需要使数据库运行在归挡模式下,备份方法简单,而且可以不用外存。

  Oracle数据库的逻辑备份分为三种模式:1、用户备份模式:即u方式,将指定用户的所有对象及数据导出;2、表备份模式:即T方式,将指定表的数据导出;3、完全备份模式:即Full方式,将数据库中的所有对象导出。

  我们将使用Export备份命令,Export命令常用于在两个数据库之间传送数据以及对数据库进行备份,Export命令导出的dump文件是二进制形式.而且dump文件在所有的Oracle支持的操作系统下都是二进制的形式,Export命令导出的dump文件包含两种基本数据类型:ddl型和data型,dump文件中包含了所有数据库恢复时重新刨建data dictionary的ddl语句。这些语句的格式基本上是可读的,但系统管理员不能对ddl语句进行手动编辑,Oracle明确警告不支持对ddl文本的编辑,因为这样会损坏文件。当然dump文件中的另一种类型data型数据,也是不可进行编辑修改的,否则也将导致文件不能恢复。Export命令导出的dump文件在恢复时向上兼容,即低版本Oracle,的dump文件可以导入到高版本Oracle,数据库中,但是版本的级别一定要相差较小,如果版本差别太大。比如Oracle5到Oracle8,那兼容性就无法保证。Export命令通常有三种模式:整个数据库模式、用户模式、表模式。本文中的备份选用整个数据库模式。使用exp命令将会把数据备份成二进制文件,Export的使用格式为:exp userid file,userid的格式为:username/userpassword,即Oracle数据库中的用户名,口令,userid必须为exp的第一个参数,file指定备份文件将要存放的位置及名称。

  设定数据库的用户名为Oracle,口令为123456,新建备份目录/localbak,脚本内容如下:

  exp userid=Oracle/123456

  direct=y  full=y

  file=G:Oracledatafull_database_yyyymmdd.dmp

  log=G:Oracledatafull_database.log

  localbak编写完成后,用“chmod+x localbak”命令确认可执行权限。

  2、Orade自动异地数据备份自动数据传榆

  异地传输数据通常使用FTP连接,使用FTP连接意味着必须经过用户名密码校验,即需要我们手动输入目的地主机的IP地址、用户名、口令等。显然这种手动方式不能满足自动备份和自动传输的要求。那么如何解决FTP自动传输中的密码校验问题呢,我们只需要在Sun Solaris8系统里编写一个.netrc的文件。请注意这个文件必须存放在启动FTP传输任务的主机的用户注册目录中并且后缀名必须是.netrc;另外还有一点也很重要,那就是.netrc文件的权限,.netrc文件的权限应禁止备份用户之外的其它用户访问。这样,每次备份用户启动FTP传输的时候,系统就会首先在该用户的注册目录中搜索后缀名为.netrc的文件,如果有*.netrc文件,Oracle数据库将自动执行该文件,实现自动传输,否则,系统依旧会提示用户输入IP地址、用户名、口令等。

  .netrc文件内容如下:

  machine host

  login ftpuser

  password ftpuser

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

  bin

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

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

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

  bye# 退出FTP会话进程

  .netrc文件编写完成后,使用chmod命令确认可执行权限。[page]  3、Oracle自动异地远程数据备份启动备份进程

  UNIX平台下,Cron是由/ere/rc.local启动执行的一个永久进程。它能够自动完成对/var/spool/emrdemntabs/目录中文件的检查,按照规定的时间执行任务。用户使用Crontab命令建立的文件保存在/var/spool/emn/emntabs/目录中。这个Crontab文件的文件名与用户名保持一致,本文设定的用户名为Oracle,所以Cmntab命令建立的文件名也是Oracle。

  crontab命令的常用格式为:crontab-l:显示用户的crontab文件的内容;eronl/tb-r:从erontabs目录中删除用户的crontab文件;

  Crontab文件的参数有以下几个:分钟、小时、日、月、星期以及操作命令,这六个参数是分布在同一行中的六个域,按照顺序依次是minutes、hours、day ofmonth、month、day of week、command,各域之间用空格或Tab分开,各域的含义如下:

  minutes:分钟.用来确定某分开始,取值范围:0到59

  hours:小时,用来确定某时开始。取值范围:0到23

  day of month:日子,用来确定某日期,取值范围:1到31

  month:月份,用来确定某月份,取值范围:1到12

  day of week:星期。用来确定星期几,取值范围:0到6,0表示星期日,1到6依次表示星期一到星期六。

  command:所要运行的命令,取值是操作命令

  在一行中,域是可以缺省的,如果一行语句包含了由逗号隔开的一系列时间域,这些参数同时有效,也就是说命令将在这些参数指定的时刻执行某操作。如果某个时间域的值是由连字符隔开的两个数字,那就表示命令可以在两个数字(含两数)限定的时间范围内执行。如果某个时间域缺省,则表示命令可以在该域的取值范围内的所有可能值限定的时间执行。

  了解了Crontab语句的基本知识,现在,我们就来编写用以启动Oracle自动异地数据备份进程的文件。这里需要强调一下,这个文件只能在Oracle用户名下用erontab-e命令来编辑,否则不能被定时执行,文件名设为Oracle,文件将被放在/var/spool/emn/emntabs目录下。编辑完成后,可以在Oracle的$提示符下,用crontab-l命令来查看是否已增加了此文件。

  cron表中的内容如下:

  00 23 ***/export/home/oracle/remotebak#每晚11点对数据库执行备份

  20 23***ftp-i x.x.x.x#每晚11点20分启动远程传输,将文件备份到另一台主机上

  经过以上这几个步骤的设置后,主系统就可以按照我们限定的时间。备份模式、文件格式及传输方式每天定时备份数据库,并定时把备份数据传到备份机了。这套方案较好地实现了Oracle自动异地数据备份,本地主机一旦出现故障,数据已经有了可靠备份,随时可以将数据库恢复到最近的某时间点上。同时,Oracle自动异地数据备份方案的实现也大大减轻了系统管理员烦琐、重复的备份工作。



第三十五届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:fanwei

免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。