Oracle数据库备份技巧
Oracle数据库备份技巧(精选6篇)
Oracle数据库备份技巧 第1篇
利用下面的列出的技巧来确保你不会在每周一次的数据库备份过程中忘记关键步骤。
每周一次备份主数据库。如果你创建、修改或者停止一个数据库,添加新的sql server消息,添加或者停止连接服务器,或者添加记录设备,那就进行手工备份。
每天备份一次msdb数据库。它一般非常小,但很重要,因为它包含了所有的sql server工作、操作和计划任务。
只有当你修改它时,才有必要备份模型数据库。
用sql server agent来安排你的备份工作的时间表。
如果在你的生产(production)环境中有现成资源,备份生产数据库到本地磁盘或者网络服务器(用同一个开关)。然后,把备份文件/设备拷贝到磁带上。在存在许多硬件故障(特别是在raid系统中)的情况下,磁盘常常是完好的(inact)。如果备份文件是在磁盘上,那么恢复时的速度会提高很多。
备份开发和测试数据库至少要用到simple恢复模型。
除了有计划的定时备份外,在进行未记录的(nonlogged)批操作(如,批拷贝)、创建索引、或者改变恢复模型后要备份用户数据库。
如果你使用的是simple恢复模型,记住在截短(truncate)交易记录之后备份你的数据库。
用文档记录你的恢复步骤。至少要大概记录这些步骤,注意所有的重要文件的位置。
--------------------------------------------------------------------------------
在截短记录之前,也就是所有的已提交(committed)交易从记录中清空之前,所有的这些信息都保存在交易记录中。在simple恢复模型中,记录在一个checkpoint期间内截短(在sql server内存缓冲写道磁盘时),它是自动发生的,但也可以手动执行。这也就是simple恢复模型不支持时间点(point-in-time)恢复的原因。在full和bulk_logged恢复模型下,当交易记录被备份时,交易记录被截短,除非你明确指出不进行截短。
为了备份交易记录,使用backup log命令。其基本语法与backup命令非常相似:
backup log { database } to
下面是如何把交易记录备份到一个名为logbackupdevice的逻辑设备上的例子:
backup transaction northwind to logbackupdevice
如果你不希望截短交易记录,使用no_truncate选项,如下所示:
backup transaction northwind to logbackupdevice with no_truncate
只是基本知识。
尽管我在本文中仅仅概述了数据库恢复的基本知识,你还是可以通过这些技巧来找到正确的方向。那么,为了避免不必要的(丢失数据造成的)恐慌,你要做到每周备份主数据库,每天备份msdb。
Oracle数据库备份技巧 第2篇
相信为数不少的系统管理员每天都在做着同一样的工作――对数据进行备份。一旦哪一天疏忽了,而这一天系统又恰恰发生了故障,需要进行数据恢复,那么此时就无能为力了。假如每天设定一个固定的时间,系统自动进行备份,那该多好啊!下面笔者结合实践经验,谈一谈UNIX环境下Oracle数据库的自动备份,以起到抛砖引玉的作用。
我们计划让数据库在晚上23点做export导出备份,在凌晨2点将备份文件拷贝到磁带上,在凌晨4点将备份文件拷贝到另一台UNIX机器上,为此我们可进行如下操作:
一、导出数据库
export命令将数据库中的数据备份成一个二进制文件,它通常有三种模式:用户模式、表模式和整个数据库模式。本文拟采用用户模式,备份之前,应先建立一个备份目录,以容纳备份文件,比如可建一个/backup目录。接着我们可在UNIX的Oracle目录下(也可以是其它目录)分别建立两个文件ora―backup,tar―backup。需要说明的是,前一个文件需要对Oracle的参数进行初始化,为了方便起见,我们不妨将初始化命令放到一个文件中(文件名姑且定为ora―env),再由第一个文件调用它。
1. ora―env文件对Oracle的参数进行初始化,其内容如下:
ORACLE―HOME=$ORACLE―HOME;export ORACLE―HOMEORACLE―SID=ora73;export ORACLE―SIDORACLE―TERM=sun;export ORACLE―TERMLD―LIBRARY―PATH=$ORACLE―HOME/lib;export LD―LIBRARY―PATHORA―NLS32=$ORACLE―HOME/ocommon/nls/admin/data;export ORA―NLSPATH=.:/usr/clearcase/“ target=”_blank“ >ccs/bin:/usr/ucb:$ORACLE―HOME/bin:$PATH;export PATHDISPLAY=host1:0;export DISPLAYNLS―LANG=american―america.zhs16cgb231280;export NLS―LANG
2. ora―backup文件对数据库做export导出,导出的文件名可以任意定,本文定为字母“xx”加当天日期,即假如当天日期是12月10号,则导出的文件名为“xx1210.dmp ”,以区别于其它日期的备份文件。
ora―backup文件内容:
./oracle/ora―env#初始化Oracle数据库rq=′date +″%m%d″ ′#把当天日期赋予变量rqrm /backup/?# 清空 /backup目录exp test/test file=/backup/xx$rq.dmplog=/backup/xx$rq.log
本命令用于在$提示符下,导出test用户的数据(其口令亦为test),导出文件及日志均放在/backup目录下。
二、磁带备份
tar―backup文件将用export命令导出的数据文件拷贝到磁带上。tar―backup文件内容:
tar rvf /dev/rmt/0n/backup/?
本命令可将/backup目录下当天产生的文件备份到磁带上。本文件中,tar命令使用了三个参数,其中r选项表示向磁带上拷入文件而不破坏磁带原来内容,v选项表示在拷贝过程中显示文件信息,f选项后面加上磁带设备名,指定文件向何处拷贝,n选项表示磁带机不倒带,
/dev/rmt/0表示UNIX主机第一个磁带驱动器,同理,/dev/rmt/1则表示 UNIX主机第二个磁带驱动器,依此类推。
ora―env、ora―backup、tar―backup文件编写完成后,分别使用下述命令:
chmod 755 ora―envchmod 755 ora―backupchmod 755 tar―backup
这样,三个文件就都变成了可执行文件。
三、异地备份
我们知道,通常可用FTP命令在两台主机间传输数据,但一般是通过交互方式实现的,即需要手工输入目标主机的IP地址、用户名、口令等。显然,这不符合自动备份的要求。所幸的是,我们可以通过编写一个.netrc的文件来达到目标。这一文件必须命名为 .netrc,且必须存放在启动FTP命令的机器上的用户注册目录中,该文件的权限应禁止组内或其它用户进行读访问。这样,当用户使用FTP命令的时候,系统将会在该用户的注册目录中寻找.netrc文件,如果能够寻找到,将会首先执行该文件,否则,会交互式地提示用户输入用户名、口令等。
在使用FTP命令之前,应先在另一台作备份用的UNIX机器上建一目录,以容纳备份文件,本文建的目录是/pub 。需要指出的是,为了加快备份速度,两台主机之间的传输速率应尽可能的高,最好位于同一局域网上。
.netrc文件内容如下:machine host2# host2为作备份用的主机名login oracle#oracle为备份主机上的一个用户password oracle#oracle用户的口令为oraclemacdef init#定义一个名为init的宏,它将在自动注册进程的最后被执行bin#文件的传输方式设为二进制lcd /backup# 进入本地工作目录/backupcd /pub# 进入备份主机目录/pubmput ?# 将/backup目录下的所有文件传输至备份主机bye#退出FTP会话进程.netrc文件编写完成后,使用下述命令:chmod 600 .netrc这样,.netrc文件就只能被该用户所访问。
四、启动备份进程
Cron是一个永久进程,它由/etc/rc.local启动执行。Cron检查/var/spool/cron/c rontabs/?目录中的文件,找到所要执行的任务和执行任务的时间。Crontab文件的每一行由六个域(minutes、hours、day of month、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 command:所要运行的命令
如果一个域是?,表明命令可以在该域所有可能的取值范围内执行。如果一个域是由连字符隔开的两个数字,表明命令可以在两个数字之间的范围内执行(包括两个数字本身)。如果一个域是由逗号隔开的一系列值组成的,表明命令可以在这些值组成的范围内执行。如果日期域和星期域都有值,则这两个域都有效。
现在,我们编写一个文件,用以启动自动备份进程。值得注意的是,该文件只能在 Oracle用户名下用crontab -e 命令来编辑,否则将不会被定时执行,文件名定为Orac le,文件将放在/var/spool/cron/crontabs 目录下。编辑完成后,可以在Oracle的$提示符下,用crontab -l命令来查看。
Oracle文件内容:
0 23 ? ? ? /oracle/ora―backup# 每天23点对数据库执行备份0 2 ? ? ? /oracle/tar―backup# 每天2点将文件备份到磁带上0 4 ? ? ? ftp -i host2# 每天4点将文件备份到另一台主机上
经过以上的操作后,系统每天晚上将自动产生一个备份,并且自动将备份文件分别拷贝到磁带上和另一台主机上。系统管理员需要做的是,隔几天换一盘磁带(更换磁带的周期取决于备份文件的大小和磁带的容量)和清理备份目录。这样,他们就可以从备份数据的繁琐中解脱出来,去做其它更有意义的工作。而数据库既实现了磁带备份,又实现了异地备份,相应的安全性也大大提高了。 (完)
Oracle数据库备份策略 第3篇
不管数据库如何精心设计、配置和优化,它们都难免会出现系统或硬件故障,如:语句故障、用户进程故障、实例故障、介质故障等。一旦数据库出现故障将给用户数据带来灾难性的结果。因此数据库管理员必须采取必要的备份策略以避免数据灾难的发生。
Oracle提供了强大的备份策略,其备份方式分为物理备份和逻辑备份两大类型。物理备份是数据库文件拷贝的备份,根据备份时数据所处状态的不同,物理备份又可分为脱机备份(冷备份)和联机备份(热备份);逻辑备份是对数据库逻辑组件(表、存储过程等数据库对象)的备份,逻辑备份使用Exp命令将数据库中相应的逻辑对象存储为二进制文件。
2 脱机备份
脱机备份是在数据库被正常关闭之后进行的数据文件的物理备份。当数据库正常关闭时,将数据库的所有数据文件、控制文件、参数文件、口令文件、重做日志文件都拷贝到备份介质中。这些文件因而保持着数据关闭时的完整的映象,对于备份Oracle信息而言,脱机备份是最快和最安全的方法。
2.1 脱机备份的优点
1)是非常快速的备份方法(只需拷文件)
2)容易归档(简单拷贝即可)
3)容易恢复到某个时间点上(只需将文件再拷贝回去)
4)能与归档方法相结合,做数据库“最佳状态”的恢复。
5)低度维护,高安全性。
2.2 脱机备份的方法
1)关闭数据库shoutdown normal;
2)将数据文件、控制文件、参数文件(可选)、联机重做日志文件及存档日志文件(Oracle工作在Archivelog方式)拷贝到备份磁盘。
3)重新启动数据库startup open数据库名;
脱机备份操作简单、安全可靠,但脱机备份只能恢复到数据库被关闭时的状态,同时只有在关闭数据库的状态下才能进行备份操作。实际应用中很多情况下数据库必须不间断的工作,不可能使用脱机备份数据库,在这种情况下只能采用联机备份。
3 联机备份
联机数据库备份是不一致备份,因为在备份过程中数据库中的部分数据可能被修改,因此数据库一旦出现故障只能利用备份文件与归档日志做完全或不完全的恢复,此时数据库必需工作在Archivelog方式。
3.1 Archivelog方式下的备份策略
1)在初始建立数据库时,执行脱机全数据库备份,这是整个数据库备份的基础,它保存着全部原始数据库文件和控制文件的备份;
2)定期进行全数据库备份(联机备份);
3)每次对数据库进行结构修改时,必须进行控制文件备份。
3.2 联机备份的方法
在数据文件备份之前,对应的表空间必须通过使用ALTER TABLESPACEBEGIN BACKUP以备份方式放置。然后组成表空间的数据文件可以使用类似脱机备份的操作系统命令进行拷贝。在数据文件用操作系统命令拷贝后,应使用ALTER TA-BLESPACEEND BACKUP命令使表空间脱离联机备份方式。同时用ALTER DATABSEBACKUP CONTROLFILE命令备份控制文件。(下转第4365页)(上接第4363页)
联机备份没有必要备份联机日志,但必须是归档状态,在实例恢复的时候,可能需要用到归档日志。当前联机日志一定要保护好或是处于镜像状态,当前联机日志的损坏,对于数据库的损坏是巨大的,只能以数据的丢失来进行数据库的恢复工作。
对于临时表空间,存放的是临时信息,在联机备份是也可以考虑不用备份,如果临时文件发生故障,可以删除该数据文件与表空间,重建一个临时表空间。
3.3 联机备份的优点
1)可在表空间或数据文件级备份,备份时间短。
2)备份时数据库仍可使用。
3)可达到秒级恢复(恢复到某一时间点上)。
4)可对几乎所有数据库实体作恢复。
5)恢复是快速的,在大多数情况下在数据库仍工作时恢复。
当备份的数据量不是太大,需要经常性的数据备份时,可以使用逻辑备份。ORACLE数据库的逻辑备份分为三种模式:表备份、用户备份、表空间备份和完全备份。
表模式:备份某个用户模式下指定的对象(表)。
exp用户名/密码@适配器tables=(table list)file=备份文件名。
用户模式:备份某个用户模式下的所有对象。
exp用户名/密码@适配器file=备份文件名owner=用户名。
表空间模式:备份整个表空间。
exp用户名/密码@适配器tablespaces=(tablespace list)file=备份文件名
完全备份:备份完整的数据库。
exp用户名/密码@适配器full=y file=备份文件名
对于数据库逻辑备份,建议采用增量备份,即只备份上一次备份后更改的数据。
4 结论
选择备份策略的依据是:丢失数据的代价与确保数据不丢失的代价之比。还有的时候,硬件的备份有时根本满足不了现实需要,假如你误删了一个表,但是你又想恢复的时候,数据库的备份就变的特别重要了。作为DBA,有责任从以下三个方面维护数据库的可恢复性:1)使数据库的失效次数减到最少,从而使数据库保持最大的可用性;2)当数据库不可避免地失效后,要使恢复时间减到最少,从而使恢复的效率达到最高;3)当数据库失效后,要确保尽量少的数据丢失或根本不丢失,从而使数据具有最大的可恢复性。
摘要:任何数据库系统都可能因人为或非人为的因素带来数据灾难。该文详细探讨Oracle数据库系统中所提供的强大的备份策略,以帮助数据库管理员最大限度地减少因数据灾难所带来的损失。
关键词:备份,联机备份,脱机备份,物理备份,逻辑备份
参考文献
[1]丁铖.Oracle8/8i数据库系统管理[M].北京:人民邮电出版社,2001.
[2]盖国强.循序渐进Oracle--数据库管理、优化与备份恢复[M].北京:人民邮电出版社,2007.
[3]袁福庆.Oracle数据库管理与维护手册[M].北京:人民邮电出版社,2006.
Oracle数据库备份技巧 第4篇
关键词:Oracle CRON 备份 数据库
中图分类号:TP309.3 文献标识码:A 文章编号:1673-8454(2008)19-0045-03
在计算机网络广泛应用的今天,医院信息化获得了飞速的发展,电子处方、电子医嘱、电子申请单等一系列计算机手段的应用极大地提高了医护人员的工作效率,方便患者就医诊治。但是目前这些医院信息化的应用大部分用于医护人员的日常使用,患者还无法从存储在医院数据库中的数据查询到自己的检验/检查信息。在患者就诊的时候,提供近期的检验/检查报告结果,能够为医生的诊治提供有利的帮助,但是如果近期的检验/检查报告丢失或者就诊时忘记携带,那么不得不重新做一遍相应的检验/检查项目,这样既浪费患者的时间,又浪费患者的金钱。“一单通”实行后,部分大医院之间互相认可彼此的检验/检查结果,患者或者医生能够通过计算机网络远程查询相应的检验/检查结果,利用信息化和计算机网络为患者就诊提供更好的服务。在黑客、病毒肆虐的互联网上,为了保证服务的持续性和稳定性,对提供基础数据的数据库做备份是必须的。
一、Oracle数据库备份方式[1]
UNIX平台和Oracle数据库组合是大中型应用系统的首选。Oracle数据库是目前应用最为广泛的大型数据库之一,其备份的方式主要有冷备份、热备份和逻辑备份。
冷备份是一种物理备份,它使用操作系统的拷贝命令将与数据库相关的物理文件进行备份。在进行冷备份的时候,为了保证数据库中数据的完整性,数据库要预先正常关闭。冷备份是一种非常快速的备份方法,只需将备份文件拷贝回去,就可以非常容易地将数据恢复到备份时的时间点上。冷备份的不足之处是在实施备份的全过程中,数据库必须是处于关闭状态。备份所需时间与数据库的数据文件大小、个数以及备份介质I/O速度有关。
热备份又叫联机备份,它是在数据库运行的状态下进行的物理备份,适用于要求每周7天、每天24小时运行的数据库。与冷备份整个数据库不同,热备份的备份单位是表空间。要进行热备份,首先必须将表空间设置为备份模式,此时数据库在该表空间发生检查点(checkpoint),并将SCN(System Change Number,系统变更号)写入组成表空间的数据文件的头文件中,在表空间处于备份模式期间,Oracle将停止对该表空间数据文件的直接写入,转而使用复杂的机制将回滚段、缓冲、重做日志和归档日志结合起来存储数据,拷贝完毕后结束表空间的备份模式, 数据库将完成对数据文件的同步更新,以数据库当前的SCN替换备份开始时写入头文件中的SCN,由此保证表空间数据的一致性。热备份要求数据库工作在归档(archive log)模式下,在归档模式下重做日志记录了所有数据库的事务,提供了多次表空间备份之间的数据库变化,因此,可利用不同时间的多个表空间备份恢复整个数据库,可作数据库“最新状态”的恢复。热备份的不足在于不易操作,维护成本高。
逻辑备份即为拷贝数据库的数据,而不记录数据位置的备份过程。Oracle中所提供的export(导出)工具可进行逻辑备份。export将数据按Oracle的特定格式从Oracle数据库写到操作系统文件中,恢复时利用Oracle的import(导入)工具读取export导出的文件,将数据导入到数据库中。逻辑备份常用于Oracle数据库之间移动数据,备份整个数据库到一个文件中。使用export工具备份数据库的时候,数据库必须打开。为了保证备份期间整个数据库的完整性和一致性,要以restrict模式打开数据库。
针对要为患者和医生提供不间断的、持续服务的特点,逻辑备份是最适合的一种备份方式。
二、cron实现Oracle数据库的定时备份
1.cron介绍[2]
cron是Unix系统的调度进程,它可以在无需人工干预的情况下运行用户的作业,执行作业的命令是crontab,该命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个自己的crontab文件来保存调度信息。用户可以使用它运行任意一个shell脚本或某个命令。虽然每一个用户都可以有自己的crontab文件,但在一个重要的系统中,系统管理员可以通过 /ect/cron.d目录下的cron.allow和cron.deny两个文件控制用户对contab文件的访问。这两个文件全部由用户名组成,每个用户名一行。这两个文件的使用遵循如下规则:
第一,如果cron.allow存在,那么只有该文件中指定的用户才可以执行crontab任务,例如建立、编辑、显示或者删除他们自己的crontab文件;
第二,如果cron.allow不存在,那么除了cron.deny文件中指定的用户名以外,其它所有用户均可以执行contab任务;
第三,如果cron.allow和cron.deny两个文件都不存在,那么只有root用户可以执行crontab任务,其它用户不能执行crontab任务。
2.cron实现Oracle数据库的定时备份
本文以Sun Solaris 9 平台下的Oracle 9.2.0.6为例,说明如何使用cron实现Oracle数据库的定时逻辑备份。
在使用cron定时备份Oracle数据库的时候,用户首先要根据自己的需求定制crontab文件的脚本。本文以备份Oracle数据库中的test用户为例说明如何定制脚本:
步骤1:确定要定时自动执行作业的用户
以Oracle用户登录服务器;
步骤2:编辑备份Oracle数据库的脚本
(1)使用vi编辑器创建文件backup_oracle.sh;
(2)编辑文件backup_oracle.sh的内容如下:
#Start
#Part 1
ORACLE_BASE=/export/home1/oracle; export ORACLE_BASE
ORACLE_HOME=/export/home1/oracle/product/9.2.0; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:usr/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
NLS_LANG=american_america.ZHS16GBK;export NLS_LANG
PATH=$ORACLE_HOME/bin:/usr/bin:/usr/ucb:/etc:/usr/
#Part 2
RQ=` date+"%y%m%d%H%M%S"`
#Part 3
/export/home1/oracle/product/9.2.0/bin/exp system/pw_system owner=testfile=/export/home0/oracle/backup/test$RQ.dmplog=/export/home0/oracle/backup/test$RQ.log
#End
文件内容说明:
文件的内容包括两部分:
Part 1:Oracle用户的环境变量设置
Part 2:RQ是一个变量,其值表示当前系统的时间,如:060501203000,表示2006年5月1日20点30分0秒
Part 3:/export/home1/oracle/product/9.2.0/bin/exp system/pw_system owner=testfile=/export/home0/oracle/backup/test$RQ.dmplog=/export/home0/oracle/backup/test$RQ.log
该语句使用Oracle的exp命令对数据库进行逻辑备份,备份产生的文件名字为所导出的用户名与RQ变量的组合,如:test060501203000.dmp,备份的日志文件名字也是用户名与RQ变量的组合,如:test060501203000.log。
步骤3:创建crontab文件
(1)使用vi编辑器编辑创建名字为
(2)文件oraclecron的内容如下:
30 20 * * * sh /global/oracle/oradata/backup_oracle.sh
该文件的格式说明如下:[3][4]
该文件的每一个条目必须含有6列、5个时间域,每个域之间要用空格分隔,其中:
第1列表示分钟:1~59;第2列表示小时:0~23(0表示子夜);第3列表示日:1~31;第4列表示月:1~12;第5列表示星期:0~6(0表示星期天);第6列表示要运行的命令。
在前5个时间域中可以用星号“*”来表示连续的时间段。如果对某个时间域没有特别的限定,应该在该域内填入“*”。
步骤4:提交任务
使用如下命令提交该任务给系统进程cron:crontab oraclecron,同时创建文件的一个副本放在/var/spool/cron/crontabs目录中,文件名就是用户名Oracle
步骤5:查看crontab文件是否已经提交
使用如下命令查看任务是否已经提交:crontab –l
通过上面的设置,在每天20:30分将自动执行Oracle数据库的备份,文件名字test<脚本启动时间>,如:test060501203000.dmp,orcl_user060502203000.dmp,由于每次脚本启动的时间不同,所以可以在服务器上保留近期多个数据库备份。
三、结束语
为患者和自己医院之外的医生提供检验/检查结果是医院提供的一种“增值服务”,但是这种服务没有经济收入,所以投入成本是提供这种“增值服务”要考虑的一个重要因素。本文实现的Oracle数据库备份,可以在无需额外投入的基础上完成Oracle数据库的日常备份,并且在备份的时候无需人工干预。根据磁盘空间的大小在服务器上可以保存最近日期的数据库备份文件,一旦数据库出现问题,可以利用最近一次的备份进行数据库恢复。
参考文献:
[1]Kevin loney.oracle9i数据库管理员手册[M].北京:机械工业出版社,2002.
[2]饶云华,张曜.Unix/Selaris系统管理与网络管理[M].北京:清华大学出版社,2002.
[3]SebeH M G.Selaris技术指南[M].北京:机械工业出版社,2001.
Oracle数据库备份技巧 第5篇
相关命令
文中主要用到三个命令,这里先单独介绍一下:
export: 将数据库中数据备份成一个二进制系统文件,它有三种模式: 用户模式、表模式、整个数据库模式。还可分为三种备份类型:完全型、积累型、增量型。本文以整个数据库模式下的完全型为例说明。export使用格式为:exp userid file。
其中: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、day of month、month、day of week,字段之间用空格或Tab分开。字段如果为“*”,表示该字段在所有可能的取值范围内取值; 如果一个字段是由连字符隔开的两个数字,表明命令可以在两个数字之间的范围内执行。
备份数据库
设定数据库的拥有者为Oracle,用户名为mistest,其口令为test,新建备份目录为/export/home/oracle/backup。建立一个命名为testbackup的备份文件,文件内容如下:
ORACLE-HOME=/export/home/oracle/815;export ORACLE-HOME
ORACLE-SID=ora815;export ORACLE-SID
rm /export/home/oracle/backup/*
rq=丶date +“%m%d”丶
/export/home/oracle/815/bin/exp mistest/test file=/export/home/oracle
/backup/exp$rq.dmp log=/exoport/home/oracle/backup/exp$rq.log
说明:前两句对Oracle数据库初始化,第3条语句清空备份目录,第4条语句建立一个取当前日期的变量,以便在最后一条语句的备份文件名里含有当前日期信息,
testbackup编写完成后,用“chmod +x testbackup”命令授予它可执行权限。
异地传输
在备份主机里建立一个备份目录:/data/oradata/newbackup, 在本地主机Oracle用户的注册目录/export/home/oracle里建立一个.netrc文件。设定好备份主机的IP地址,备份主机上的用户为oraclebk, 口令为testbk2。.netrc文件内容为:
machine x.x.x..x
login oraclebk
password testbk2
macdef init
bin
lcd /export/home/oracle/backup
cd /data/oradata/backup
mput *
bye
说明:前3条语句完成在备份主机上的登录,第4条语句定义一个名为init的宏,第5条语句表示以二进制传输,第6条语句表示进入本地工作目录,第7条语句表示进入备份主机目录,第8条语句完成将本地主机/export/home/oracle/backup目录下的所有文件传输至备份主机/data/oradata/backup目录下,最后一条语句退出ftp会话进程。.netrc文件编写完成后,用命令“chmod 600 .netrc”使该文件只能被该用户所访问。
自动执行
我们以oracle用户登录本地主机,用“crontab -e”编写crontab文件用以启动自动备份进程。oracle文件内容如下:
10 23 * * * /export/home/oracle/testbackup
30 23 * * * ftp -i x.x.x.x
说明:第1条语句指定每天自动在23点10分执行对数据库的备份,第2条语句指定每天自动在23点半启动ftp,将备份文件传输到备份主机(备份主机为符合语句中指定IP地址的主机)。
Oracle文件只能在Oracle用户名下用“crontab -e”命令来编辑。编辑完成后,可以在用“crontab-l”命令来查看crontab文件内容,同时在/var/spool/cron/crontabs目录下查看是否增加了一个Oracle文件。
至此,本地主机可以每天定时备份数据库,并定时把备份数据传到备份主机。这样,较好地实现了Oracle数据异地自动备份,本地主机如果有什么故障,数据有了可靠备份,同时,在一定程度上也减轻了系统管理人员烦琐、重复的备份工作。
(责任编辑 火凤凰 sunsj@51cto.com QQ:34067741 TEL:(010)68476636-8007)
Oracle数据库备份技巧 第6篇
目前, 数据已成为信息系统的基础核心和重要资源, 同时也是各单位的宝贵财富, 数据 的丢失将导致直接经济损失和用户数据的丢失, 严重影响对社会提供正常的服务。另一方面, 随着信息技术的迅猛发展和广泛应用, 业务数据还将会随业务的开展而快速增加。但由于系 统故障,数据库有时可能遭到破坏,这时如何尽快恢复数据就成为当务之急。如做了备份, 恢复数据就显得很容易。由此可见, 做好数据库的备份至关重要。因此,建立一个满足当前 和将来的数据备份需求的备份系统是必不可少的。传统的数据备份方式主要采用主机内置或 外置的磁带机对数据进行冷备份, 这种方式在数据量不大、操作系统种类单
一、服务器数量 有限的情况下, 不失为一种既经济又简明的备份手段。但随着计算机规模的扩大, 数据量几 何级的增长以及分布式网络环境的兴起, 将越来越多的业务分布在不同的机器、不同的操作平台上,这种单机的人工冷备份方式越来越不适应当今分布式网络环境。
因此迫切需要建立一个集中的、自动在线的企业级备份系统。备份的内容应当包括基于 业务的业务数据,又包括 IT 系统中重要的日志文件、参数文件、配置文件、控制文件等。本文以 ORACLE 数据库为例,结合金华电信的几个相关业务系统目前正在实施的备份方案, 介绍 ORACLE 数据库的备份与恢复。ORACLE数据备份与数据恢复方案 2.1 导出和导入(Export/Import 利用 Export 可将数据从数据库中提取出来,利用 Import 则可将提取出来的数据送回到 Oracle 数据库中去。
1、简单导出数据(Export和导入数据(Import
Oracle 支持三种方式类型的输出:(1表方式(T方式 ,将指定表的数据导出。
(2用户方式(U方式 ,将指定用户的所有对象及数据导出。(3全库方式(Full方式 ,瘵数据库中的所有对象导出。
数据导入(Import的过程是数据导出(Export的逆过程, 分别将数据文件导入数据库和将 数据库数据导出到数据文件。
2、增量导出 /导入
增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为
SYSTEM 来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为 export.dmp ,如果不希望自己的输出文件定名为 export.dmp ,必须在命令行中指出要用的文 件名。
增量导出包括三种类型:(1“ 完 全 ” 增 量 导 出(Complete即 备 份 三 个 数 据 库 , 比 如 :exp system/manager inctype=complete file=040731.dmp。
(2“ 增 量 型 ” 增 量 导 出 备 份 上 一 次 备 份 后 改 变 的 数 据 , 比 如 :exp system/manager inctype=incremental file=040731.dmp。
(3“ 累积型 ” 增量导出累计型导出方式是导出自上次 “ 完全 ” 导出之后数据库中变化了的 信息。比如:exp system/manager inctype=cumulative file=040731.dmp。
数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效的完成。比如数据库的被封任务可以做如下安排:
星期一:完全备份(A 星期二:增量导出(B 星期三:增量导出(C 星期四:增量导出(D 星期五:累计导出(E 星期六:增量导出(F 星期日:增量导出(G。
如果在星期日,数据库遭到意外破坏,数据库管理员可按一下步骤来回复数据库:第一步:用命令 CREATE DATABASE 重新生成数据库结构;第二步:创建一个足够大的附加回滚;第三步:完全增量导入 A :imp system/manager inctype=RESTORE FULL=y FILE=A 第四步:累计增量导入 E :imp system/manager inctype=RESTORE FULL=Y FILE=E 第五步:最近增量导入 F :imp system/manager inctype=RESTORE FULL=Y FILE=F 2.2 冷备份
冷备份发生在数据库已经正常关闭的情况下, 当正常关闭时会提供给我们一个完整的数 据库。冷备份时将关键性文件拷贝到另外的位置的一种说法。对于备份 Oracle 信息而言, 冷备份时最快和最安全的方法。冷备份的优点是:
1、是非常快速的备份方法(只需拷文件;
2、容易归档(简单拷贝即可;
3、容易恢复到某个时间点上(只需将文件再拷贝回去;
4、能与归档方法相结合,做数据库 “ 最佳状态 ” 的恢复;
5、低度维护,高度安全。但冷备份也有如下不足:
1、单独使用时,只能提供到 “ 某一时间点上 ” 的恢复;
2、再实施备份的全过程中,数据库必须要作备份而不能作其他工作。也就是说,在冷 备份过程中,数据库必须是关闭状态;
3、若磁盘空间有限,只能拷贝到磁带等其他外部存储设备上,速度会很慢;
4、不能按表或按用户恢复。
如果可能的话(主要看效率 , 应将信息备份到磁盘上, 然后启动数据库(使用户可以工作 并将备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作。冷备份中必须拷贝的文件 包括:
1、所有数据文件。
2、所有控制文件。
3、所有联机 REDO LOG文件。
4、Init.ora 文件(可选。
值得注意的使冷备份必须在数据库关闭的情况下进行, 当数据库处于打开状态时, 执行 数据库文件系统备份是无效的。
下面是作冷备份的完整例子:(1 关闭数据库;sqlplus /nolog sql>connect /as sysdba sql>shutdown normal;(2 用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件 sql>cp。
(3 重启 Oracle 数据库 sql>startup。2.3 热备份
热备份是在数据库运行的情况下,采用 archivelog mode方式备份数据库的方法。所以, 如果你有昨天夜里的一个冷备份而且又有今天的热备份文件, 在发生问题时, 就可以利用这 些资料恢复更多的信息。热备份要求数据库在 Archivelog 方式下操作, 并需要大量的档案空 间。一旦数据库运行在 archivelog 状态下,就可以做备份了。热备份的命令文件由三部分组 成: 1.数据文件一个表空间一个表空间的备份:(1设置表空间为备份状态;(2备份表空间的数据文件;(3回复表空间为正常状态。2.备份归档 log 文件:(1临时停止归档进程;(2log下那些在 archive rede log目标目录中的文件;(3重新启动 archive 进程;(4备份归档的 redo log文件。
3.用 alter database bachup controlfile命令来备份控制文件: 热备份的优点是: 1.可在表空间或数据库文件级备份,备份的时间短。2.备份时数据库仍可使用。
3.可达到秒级恢复(恢复到某一时间点上。4.可对几乎所有数据库实体做恢复。
5.恢复是快速的,在大多数情况下爱数据库仍工作时恢复。热备份的不足是: 1.不能出错,否则后果严重;2.若热备份不成功,所得结果不可用于时间点的恢复;3.因难于维护,所以要特别仔细小心,不允许 “ 以失败告终 ”。3 系统数据库备份策略
数据库运行在归档模式下, 利用 Veritas 软件模块调用数据库的备份接口进行在线的热 备份, 可以在备份时,对备份数据保存在不同的存储对象中, 以满足客户容灾的要求, 可以 利用 Veritas 的多线程的数据迁移、利用多个磁带驱动器同时读写提高其数据备份的效率。针对数据库的总数据量和增量数据量大小, 我们可以利用数据库的多级的增量备份机制, 结 合 Veritas 强大的备份数据追踪寻址能力和介质管理功能,制定灵活的备份策略,实现全 自动的备份数据的全生命周期管理。
4备份系统数据库恢复策略
通过本地的 Veritas Server结合 Veritas for Databases利用备份数据进行数据恢 复。恢复时, Veritas 可以实现多线程的数据恢复,利用 Veritas 独特的磁带分类集中存 放技术,减少磁带的就位时间,提高数据恢复的效率。
先用最近一次的全备份恢复+恢复最近一次的增量备份+增量备份到断点的 ARCHIVE LOG 来恢复(要求数据库在 ARCHIVE LOG 模式下工作)。这种恢复方式比全部用 ARCHIVE LOG 恢复要快。如果两份冗余的最近一次增量备份都不可用,可以追溯再上次的增量备份来恢复,然后 用增量备份到断点的 ARCHIVE LOG 恢复。如果最近一次的全备份恢复都不可用,则利用上个周期的全备份+上个周期的最后一次 增量备份+本周期的最近一次增量备份+增量备份到断点的 ARCHIVE LOG 来恢复。如果增量备份都不可用,那么用全备份+ARCHIVE LOG 来恢复。5 数据库恢复可以分为以下两类: 5.1 实例故障的一致性恢复 当实例意外
地(如掉电、后台进程故障等)或预料地(发出 SHUTDOUM ABORT 语句)中 止时出现实例故障,此时需要实例恢复。实例恢复将数据库恢复到故障之前的事务一致状态。如果在在线后备发现实例故障,则需介质恢复。在其它情况 Oracle 在下次数据库起动时(对 新实例装配和打开),自动地执行实例恢复。如果需要,从装配状态变为打开状态,自动地 激发实例恢复,由下列处理:
(1)
为了解恢复数据文件中没有记录的数据,进行向前滚。该数据记录在在线日志,包括对回滚段的内容恢复。所指定的操作。
(2)回滚未提交的事务,按步 1 重新生成回滚段
(4)
(3)释放在故障时正在处理事务所持有的资源。
解决在故障时正经历一阶段提交的任何悬而未决的分布事务。5.2 介质故障或文件错误的不一致恢复 介质故障是当一个文件、一个文件的部分或磁盘不能读或不能写时出现的故障。文件错 误一般指意外的错误导致文件被删除或意外事故导致文件的不一致。这种状态下的数据库都 是不一致的,需要 DBA 手工来进行数据库的恢复,这种恢复有两种形式,决定于数据库运行 的归档方式和备份方式。(1)完全介质恢复可恢复全部丢失的修改。一般情况下需要有数据库的备份且数据库 运行在归档状态下并且有可用归档日志时才可能。对于不同类型的错误,有不同类型的完全 恢复可使用,其决定于毁坏文件和数据库的可用性。(2)不完全介质恢复是在完全介质恢复不可能或不要求时进行的介质恢复。重构受损 的数据库,使其恢复介质故障前或用户出错之前的一个事务一致性状态。不完全介质恢复有 不同类型的使用,决定于需要不完全介质恢复的情况,有下列类型:基于撤消、基于时间和 基于修改的不完全恢复。
基于撤消(CANCEL恢复:在某种情况,不完全介质恢复必须被控制,DBA 可撤消在指定 点的操作。基于撤消的恢复地在一个或多个日志组(在线的或归档的)已被介质故障所破坏,不能用于恢复过程时使用,所以介质恢复必须控制,以致在使用最近的、未损的日志组于数 据文件后中止恢复操作。
基于时间(TIME和基于修改(SCN的恢复:如果 DBA 希望恢复到过去的某个指定点,是 一种理想的不完全介质恢复,一般发生在恢复到某个特定操作之前,恢复到如意外删除某个 数据表之前。
Oracle数据库备份技巧
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。


