rman备份恢复总结

Recovery Manager(RMAN)是一种用于备份(backup)、还原(restore)和恢复(recover)数据库的Oracle 工具.RMAN只能用于ORACLE8或更高的版本中。它能够备份整个数据库或数据库部件,如表空间、数据文件、控制文件、归档文件以及Spfile参数文件。RMAN也允许您进行增量数据块级别的备份,增量RMAN备份是时间和空间有效的,因为他们只备份自上次备份以来有变化的那些数据块。而且,通过RMAN提供的接口,第三方的备份与恢复软件如veritas将提供更强大的备份与恢复的管理功能。
通过RMAN,也提供了其它更多功能,如数据库的克隆、采用RMAN建立备用数据库、利用RMAN备份与移动裸设备(RAW)上的文件等工作将变得更方便简单。9i的RMAN通过增强的自动配置与管理功能,以及特有的块级别的恢复,将使备份与恢复工作变得更加快捷与完美。

 

9i的RMAN有如下特征特性:
·自动的备份与恢复
·方便的备份归档日志
·自动检测新的数据文件
·支持增量备份
·最大限度的减少备份与恢复的错误
·减少恢复的时间
·在热备份中不会产生额外的redo日志
·腐烂数据块的自动检测·并行的备份与恢复操作
·在线备份时,表空间不用置于备份模式
可以看到,在以上的一些特性中,显示了RMAN强大的功能与好处,以上功能的实现,
是因为RMAN是块级别的备份与恢复,备份与恢复发生在数据库块级别,可以通过比较数据
块而获得一致性的数据块,可以避免备份没有用过的块,可以检验块是否腐烂等块级别的问
题。


   在使用rman备份分为使用恢复目录和不使用恢复目录两种形式,如果使用恢复目录,那恢复目
录最好建另外一台机器上才更有意义,因为如果同生产库建在一起了,当此机器出现故障时,恢
复目录数据库可以也无法使用,那么rman就不能得到先前的备份信息了,也就不能进行恢复了。
   下面介绍不使用恢复目录的备份与恢复方法,由于没有使用恢复目录那么相关的备份信息将保
存在控制文件中,所以配置rman为自动备份控制文件,每次执行backup时就自动备份一个控制文
件,默认保存在/opt/ora9/product/9.2.0.4/dbs/ 也可更改备份位置。
启动控制文件自动备份configure controlfile autobackup on;
设置自动备份控制文件格式configure controlfile autobackup format for device type disk
to '/backup/cf_%F'
设置备份优化configure backup optimization on;
自动备份控制文件默认保存路径/opt/ora9/product/9.2.0.4/dbs/

连连接数据库
rman>connect target / 或 rman target /
备份数据库
RMAN>  run {
2>  allocate channel dev1 type disk;
3> backup
4> format '/tmp/hotbak/bak'
5> database;
6> release channel dev1;
7> }
备份表空间
RMAN>  run {
2>  allocate channel dev1 type disk;
3> backup
4> format '/tmp/hotbak/tablespace_users'
5> tablespace users;
6> release channel dev1;
7> }

备份单独数据文件
RMAN>  run {
2>  allocate channel dev1 type disk;
3> backup
4> format '/tmp/hotbak/datafile_users'
5> datafile '/opt/ora9/oradata/oradb/users01.dbf';
6> release channel dev1;
7> }

备份控制文件
RMAN> run {
2> allocate channel dev1 type disk; 
3> backup
4>  format '/tmp/hotbak/controlfile'
5> (current controlfile);
6> release channel dev1;
7> }
 
恢复表空间
rman target / nocatalog
RMAN> startup mount
RMAN> restore tablespace users;
RMAN> recover tablespace users;
RMAN> exit

Datafile recovery 数据文件恢复
        RMAN> run {
       2> allocate channel dev1 type disk;
       3> sql "alter tablespace users offline immediate";
       4> restore datafile 4;
       5> recover datafile 4;
       6> sql "alter tablespace users online";
       7> release channel dev1;
       8> }
恢复控制文件

rman>startup nomount;
rman>set dbid=2347671489
rman>restore controlfile from autobackup 或 rman>restore controlfile from
'/opt/arch/ct_c-2347671489-20060630-00'
rman>alter database open resetlogs;
RMAN> startup mount;
恢复数据库
RMAN> restore database;
RMAN> recover database;
RMAN>alter database open resetlogs;
恢复完毕。

   上面从恢复控制文件开始,讲述的是,只要你有数据库的备份文件和备份时控制文件,才可以
进行恢复,就算重装也可以。
再说几个rman常用命令:
list backup  查看备份信息
List backup summary  查看备份汇总信息
List backup of datafile ‘file name’
list incarnation of database;   查看具体的备份信息
Crosscheck命令
检查磁盘或磁带上的备份或拷贝是否正确,并更新备份或者拷贝的状态
Crosscheck backup;
Crosscheck archivelog all;
Delete [noprompt] expired backup命令删除过期备份
也可以用List来查看相应的报告
LIST EXPIRED BACKUP;
LIST EXPIRED BACKUP SUMMARY;
Delete 命令
Delete命令可以用来删除指定的备份或者用来删除废弃或者是过期的备份集
如删除指定的备份集与备份片
RMAN> DELETE BACKUPPIECE 101;
RMAN> DELETE CONTROLFILECOPY '/tmp/control01.ctl';
RMAN> DELETE BACKUP OF TABLESPACE users DEVICE TYPE sbt;
删除过期或者废弃了的备份
RMAN> DELETE EXPIRED BACKUP;
RMAN> DELETE NOPROMPT OBSOLETE;
RMAN> DELETE OBSOLETE REDUNDANCY = 3;
RMAN> DELETE OBSOLETE RECOVERY WINDOW OF 7 DAYS;
删除指定的备份归档
RMAN> DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = 300;
再贴几个备份脚本:
全库备份脚本:
#!/bin/sh
date=`date +%Y%m%d`
export ORACLE_BASE=/opt/ora9 
export ORACLE_HOME=/opt/ora9/product/9.2.0.4
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin
export ORACLE_OWNER=oracle
export ORACLE_SID=oradb
export ORACLE_TERM=xterm
export LD_ASSUME_KERNEL=2.4.19
export THREADS_FLAG=native
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
/opt/ora9/product/9.2.0.4/bin/rman target / <<EOF
run {
backup
tag 'dbfull'
format '/tmp/dbfull%u_%s_%p_%T'
database;
}
exit;
EOF
rm /opt/arch/* -rf
  下面为增量备份脚本,增量备份分为0级,1级,2级,0级为基础备份,1级为0级增量,恢复时
恢复0级,再恢复1级,oracle9i增量备份也要进行全库扫描,oracle10G在这方面有专门的改善。
增量备份的好处是减小备份文件大小,但同样也增加恢复时的时间和复杂度,我更加适合数据量
特别的数据库。
    
0级备份脚本
#!/bin/sh
date=`date +%Y%m%d`
export ORACLE_BASE=/opt/ora9 
export ORACLE_HOME=/opt/ora9/product/9.2.0.4
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin
export ORACLE_OWNER=oracle
export ORACLE_SID=oradb
export ORACLE_TERM=xterm
export LD_ASSUME_KERNEL=2.4.19
export THREADS_FLAG=native
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
/opt/ora9/product/9.2.0.4/bin/rman target / <<EOF
run {
backup
incremental level 0
tag 'db0'
format '/tmp/db0%u_%s_%p_%T'
database;
#plus archivelog
#delete all input;
}
exit;
EOF
rm /opt/arch/* -rf

1级备份
#!/bin/sh
date=`date +%Y%m%d`
export ORACLE_BASE=/opt/ora9 
export ORACLE_HOME=/opt/ora9/product/9.2.0.4
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin
export ORACLE_OWNER=oracle
export ORACLE_SID=oradb
export ORACLE_TERM=xterm
export LD_ASSUME_KERNEL=2.4.19
export THREADS_FLAG=native
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
/opt/ora9/product/9.2.0.4/bin/rman target / <<EOF
run{
backup
incremental level 1
tag 'db1'
format '/tmp/db1%u_%s_%p_%T'
database;
#plus archivelog
#delete all input;
}
exit;
EOF
  如果出现故障,恢复的方法参考上面的就可以了,把相应该的备份文件控制文件和归档日志都
放在相对的位置就可以进恢复了。
Oracle9RMAN设置和配置 RMAN设置和配置 1.9i下将数据库配置为ARCHIVELOG模式 虽说RMAN也可以在非归档模式下使用,但是我们不推荐。因为非归档模式下很多RMAN的功能都用不上。在9i中必须配置如下参数: ¾ LOG_ARCHIVE_DEST_n:指定归档的重做日志文件的位置,并指定是否是必要的。N从1到10,也就是可以指定10个位置,至少指定一个。例如下面的参数设置中: LOG_ARCHIVE_DEST_1= 'location=e:\oracle\backup mandatory' e:\oracle\backup是要备份文件要存放的位置,mandatory的意思是说这个目录下的日志是必须成功写入的;也可以是optional,也就是可选的。 ¾ LOG_ARCHIVE_START:这个参数指定Oracle实例启动数据库的时候启动ARCH进程。这个参数需要设置成TRUE(书上第47页倒数第5行关于该参数的描述有误) 其它的与ARCH进程相关的参数: ¾ LOG_ARCHIVE_STATE_n:这个参数与LOG_ARCHIVE_DEST_n相对应,可能的值有ENABLE和DISABLE两种。如果设置成ENABLE,ARCH进程会认为与该状态关联的目标为一个有效的归档日志目标;如果设置成DEFER,ARCH进程就不会再相关的位置归档。 ¾ LOG_ARCHIVE_FORMAT:该参数设定归档文件的命名规则 ¾ LOG_ARCHIVE_MIN_SUCCEED_DEST:定义归档日志必须成功的最小的副本数量。这个参数应该大于等于LOG_ARCHIVE_DEST_n中的MANDATORY数量。 下面是9i下多个与归档相关的参数设置的例子: LOG_ARCHIVE_DEST_1= 'location=e:\oracle\backup mandatory' LOG_ARCHIVE_DEST_2= 'location=z:\oracle\backup optional' LOG_ARCHIVE_DEST_3= 'service=recover1 mandatory' LOG_ARCHIVE_MIN_SUCCEED_DEST=2 LOG_ARCHIVE_FORMAT= "tlxt_%s_%t.arc" LOG_ARCHIVE_START=TRUE 设置好参数后,就可以将数据库设置为归档模式了。这个操作需要在MOUNT状态下进行,例如: SQL> connect / as sysdba 已连接。 SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库ORACLE 例程已经关闭。 SQL> startup mount ORACLE 例程已经启动。 Total System Global Area 252780316 bytes Fixed Size 454428 bytes Variable Size 58720256 bytes Database Buffers 192937984 bytes
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值