当前位置:文档之家› 备份策略和方案

备份策略和方案

Oracle备份恢复文档中移通讯工程有限公司2013年3月备份数据库建议使用rman备份,对于小库可以使用expdp,exp每天夜间做全备。

计划周六进行全库备份,其它日则备份archive log一创建rman恢复目录使用rman之前,最好是先创建rman恢复目录,恢复目录是位于数据库里的一个schema,该schema下面包含多个表、视图、以及存储过程。

在恢复目录中存放了RMAN的元数据。

恢复目录里的数据就是控制文件中记录的RMAN元数据的副本。

使用恢复目录的好处1、同一个恢复目录中可以存放多个目标数据库的RMAN元数据2、恢复目录就是一个schema,可以在表中存放很长的时间,不像控制文件只能存放7天的数据3、我们可以将一些RMAN备份命令作为脚本,存放在恢复目录中4、建议将恢复目录单独存放在一个数据库里面,不要与产品数据库放在一起。

创建恢复目录1、在恢复目录所在的数据库上创建表空间,该表空间用于存放恢复目录所包含的表2、创建一个用户,作为恢复目录的所有对象的所有者3、为该用户赋予相应的权限4、使用RMAN命令创建恢复目录5、使用RMAN连接目标数据库和恢复目录数据库,将目标数据库注册到恢复目录中sqlplus system/...@cat (cat(tnsnames.ora))创建rman备份恢复信息目录需要的表空间.sql>create tablespacerman_tsdatafile '/data/oradata/ORACLE_SID/rman01.dbf'size200M;创建rman用户:sql>create user rman identified by rmandefaulttablespacerman_ts;sql>grant connect,resource,recovery_catalog_owner to rman;rman catalog rcat_owner/rcat_owner@catrman>create catalog;quitrman catalog rcat_owner/rcat_owner@cat targetsys/oracle@10grman>register database;rman>report schema;rman>show all;rman>configure controlfileautobackup on;在数据文件备份之后,控制文件和spfile被自动备份.rman>configure retention policy to redundancy 2;orrman>configure retention policy to recovery window of 8 days;rman>configure channel device type disk maxpiecesize 300M;配置每个备份片的大小 (可建立多个备份片)rman>configure backup optimization on;跳过完全相同的备份(如果已存在备份)如果恢复目录所在的数据库损坏,则无法访问RMAN元数据,也就无法进行备份恢复工作。

因此对恢复目录所在的数据库也要进行备份。

只有在发生了备份恢复以后,恢复目录所在的数据库里的数据才会发生变化。

,不建议再次对恢复目录启用RMAN备份。

一般建议采用导出(exp/expdp)的方式对恢复目录进行逻辑备份。

完成目标数据库的备份恢复以后,将恢复目录导出,生成导出文件。

rcat_owner用户备份1.创建expdp需要的目录create directory my_dir_dump as '/u01/oracle/backup';grantread,write on direcotry dump to rman;2.逻辑备份rcat_owner脚本在/home/oracle/dbbackup/rman目录下创建dbexpdp.sh文件,内容如下:dbexpdp.sh文件内容#!/bin/bash# database backupWEEK=`date +%w`if [ -r /home/oracle/dbbackup/rman ]; thencd /home/oracle/dbbackup/rmanelsemkdir–p /home/oracle/dbbackup/rmanexpdp rman/rman directory=my_dir_dumpdumpfile=rman${week}.dmp>>/home/oracle/dbbackup/rman/expdp.log3.添加计划任务,凌晨4点开始备份rman用户编辑crontab(命令是crontab -e),增加00 04 * * * su - oracle –c"/home/oracle/dbbackup//rman/dbexpdp.sh"rman用户恢复找到最新的rman最新的备份,执行下面的命令恢复:Impdp rman/rman directory=my_dir_dumpdump file=rman_5.dmp >>/u01/dbbackup/rman/impdp.log二备份脚本1) startrman.sh# DefineEnv variablesORACLE_SID=ORA_SID; export ORACLE_SIDORACLE_BASE=/u01/app/oracle; export ORACLE_BASEORACLE_HOME=/u01/app/oracle/oracle/product/10.2.0/db_1;export ORACLE_HOMEPATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/h ome/oracle/bin:/u01/app/oracle/oracle/product/10.2.0/db_1/bin; export PATHSH_HOME=/home/oracleexport SH_HOMEDATE=`date +%Y%m%d`week=`date +"%w"`# Confirm whether the oracle is runningps -ef |grep dbw0_$ORACLE_SID |grep -v grep>> /dev/null# Begin backupif [ $? -eq0 ] ; thenif [ $week = "6" ]; thenrman target / @$SH_HOME/fullbackup.sqllog=$SH_HOME/logs/rmanfullback_$DATE.logelserman target / @$SH_HOME/archbackup.sqllog=$SH_HOME/logs/archback_$DATE.logfi2)fullbackup.sqlrun {backup full tag '备份数据库名' databaseinclude current controlfileformat '/data/oradata/backup/ora_sid_full_bak_%d_%T_%s'plus archivelogformat '/data/oradata/backup/ora_sid_arch_bak_%d_%T_%s' delete all input;deletenoprompt obsolete;}3)archbackup.sqlrun{backup archivelog allformat '/data/oradata/backup/ora_sid_arch_bak_%d_%T_%s' delete all input;}4) RMAN的备份保留策略根据业务需要来定。

如:CONFIGURE RETENTION POLICY TO REDUNDANCY 3三数据库恢复数据库参数文件,控制文件,数据文件(非系统表空间,undo),系统表空间,undo 表空间损坏,归档日志丢失的恢复。

1)参数文件丢失的恢复控制文件和spfile所在的备份集位于闪回恢复区,该区域的文件名是随机生成的,因此,要从其中恢复spfile,必须仔细找到spfile所在的最新备份集。

因为没有从控制文件中得到备份信息,因此需要手工的寻找spfile所在备份集的名字。

一般控制文件和spfile都在一个备份集中,而且文件比较小,一般在10M 以下。

找到备份集以后,执行命令进行恢复。

具体流程就是1、寻找spfile和控制文件所在的备份集,然后恢复出来。

rman>restore spfile to ‘/u01/backup/spfileoorcl11g.ora’from ‘/u01/app/oracle/flash_recover_area/ORACLE11G/backupset/2013_03_2 7/ol_mf_mns…bkp’;如果没有指定spfile的恢复路径,默认恢复到$ORACLE_HOME/dbs目录中去.2) 控制文件恢复还原控制文件和spfile的步骤都是一样的1、找到spfile所在的路径2、找到文件所在的备份集3、使用命令restore spfile from ‘备份集的路径名称’4、使用命令restore controlfile from ‘备份集的路径名称’rman>restore controlfileto ‘/u01/backup/control01.ctl’from ‘/u01/app/oracle/flash_recover_area/ORACLE11G/backupset/2013_03_2 7/ol_mf_mns…bkp’;分为几种情况1、启用了自动备份控制文件,而且备份集位于闪回恢复区随便找一个ora参数文件将数据库启动到nomount状态,因为闪回恢复区的文件名字是数据库自己管理的,因此我们只能尝试着使用每一个备份片,使用restore进行恢复尝试。

2、启用了自动备份控制文件,且备份集位于不同的指定路径中,那么备份集的名字和路径一定是按照我们指定的format参数来命名的。

我们直接可以使用下面的命令进行恢复Rman>configure controlfileautobackup format for device disk to ‘/u01/backup/control/%F’;获得dbid的方式有两种1、通过自动备份控制文件的名字获得2、通过mount数据库以后的select dbid from v$databasesetdbid=1209353873run{setcontrolfileautobackup format for device type disk to ‘/u01/backup/control/%F’;restorespfile from autobackup;}run{setcontrolfileautobackup format for device type disk to ‘/u01/backup/control/%F’;restorecontrolfile from autobackup;}restorespfile to pfile ‘/u01/initoraclr10g.ora’ from autobackup;//将spfile还原出来,然后转换成为pfile3、没有启用自动备份控制文件如果没有启用自动备份控制文件,那么每次备份1号数据文件的时候,都会强制备份控制文件和spfile,因此还是需要找到备份片,然后使用restore进行还原。

相关主题