欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

RMAN优缺点及RMAN备份及恢复步骤

程序员文章站 2023-08-29 08:50:56
RMAN优缺点及RMAN备份及恢复步骤--以下部分来自网络转摘,仅供参考和OS命令备份方式相比,使用RMAN的优点1 备份执行期间不需要人工干预,因此减少了误操作的机会;2 可以有效的将备份和恢复结合起来;3 支持除逻辑备份以外的所有备份类型,包括完全备份,增量备份,表空间备份,数据文件备份,控制文 ......

rman优缺点及rman备份及恢复步骤
--以下部分来自网络转摘,仅供参考
和os命令备份方式相比,使用rman的优点
1 备份执行期间不需要人工干预,因此减少了误操作的机会;
2 可以有效的将备份和恢复结合起来;
3 支持除逻辑备份以外的所有备份类型,包括完全备份,增量备份,表空间备份,数据文件备份,控制文件备份以及归档日志文件备份;
4 可以识别corrupted block;
5 方便的实现定期(定时)备份;
6 自动生成备份日志;
7 rman的备份教本和os无关,方便移植;
8 强大的报表功能可以方便的获悉备份的可用性
9 控制文件自动备份
10 skip inaccessible语句存在rman命令中,是指rman按顺序备份数据文件和归档日志时,如果缺少中间的一个或发生了io问题,可以跳过去继续备份的,弊大与利的,如果你的备份会报错,不能保证你的备份集是可恢复的。
11 system表空间会连带controlfile的备份

其中
a、控制文件自动备份是每次如下情况rman会自动备份controlfile
1、每次rman发出backup或是copy命令
2、run batch中包含backup或是copy命令
3、源数据加structure发改变,比如加数据文件、加表空间等
controlfile的autobackup是绝对要打开的,相当有用的9i的一个new feature你只需要安心的备份就要可以了,controlfile rman自动就给你备了。

b、system表空间会连带controlfile的备份:
1、如果controlfile损坏了呢,autobackup就为你恢复这种情况下rman的catalog提供了一个很好的“稻草”。
2、autobackup自动备的不光是controlfile,还会备份当前的spfile。
3、对于备份来说是不怕冗余的,而且特别是controlfile占不了多少k的情况下。

和os命令备份方式相比,使用rman的缺点
1 备份过程不透明;
2 rman备份的数据只有使用rman才能恢复;
3 如果管理网络上的多个数据库,通常会使用一个单独的数据库来作为rman恢复目录,如果这个数据库出现故障,那么所作的所有数据库备份也都不能使用,除非恢复这个数据库。那么为了保证这个用于存放rman恢复目录的数据库出现故障,通常还要对这个数据库使用os命令备份。
4 如果有一个数据库需要备份,那么备份信息会纪录在控制文件中,所以控制文件不许多处备份,不能丢失。
5 rman备份不能备份redo log files,参数文件(init.ora),口令文件,操作系统文件,以及offline的文件。

注意:rman不能用于备份初始化参数文件和口令文件。学习有点费时。

二. oracle9i rman 备份及恢复步骤
在这里没有讨论多么深入的rman技术,也没有告诉大家这样去编写备份脚本,这并不是我的初衷,我只想把我会的写出来,和大家一起学习,一起进步,谢谢。

1、切换服务器归档模式,如果已经是归档模式可跳过此步:
%sqlplus /nolog (启动sqlplus)
sql> conn / as sysdba (以dba身份连接数据库)
sql> shutdown immediate; (立即关闭数据库)
sql> startup mount (启动实例并加载数据库,但不打开)
sql> alter database archivelog; (更改数据库为归档模式)
sql> alter database open; (打开数据库)
sql> alter system archive log start; (启用自动归档)
sql> exit (退出)

2、连接:
%rman target=rman/rman@mydb (启动恢复管理器)

3、基本设置:
rman> configure default device type to disk; (设置默认的备份设备为磁盘)
rman> configure device type disk parallelism 2; (设置备份的并行级别,通道数)
rman> configure channel 1 device type disk fromat '/backup1/backup_%u'; (设置备份的文件格式,只适用于磁盘设备)
rman> configure channel 2 device type disk fromat '/backup2/backup_%u'; (设置备份的文件格式,只适用于磁盘设备)
rman> configure controlfile autobackup on; (打开控制文件与服务器参数文件的自动备份)
rman> configure controlfile autobackup format for device type disk to '/backup1/ctl_%f'; (设置控制文件与服务器参数文件自动备份的文件格式)

4、查看所有设置:
rman> show all

5、查看数据库方案报表:
rman> report schema;

6、备份全库:
rman> backup database plus archivelog delete input; (备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志)

7、备份表空间:
rman> backup tablespace system plus archivelog delete input; (备份指定表空间及归档的重做日志,并删除旧的归档日志)

8、备份归档日志:
rman> backup archivelog all delete input;

9、复制数据文件:
rman> copy datafile 1 to '/oracle/dbs/system.copy';

10、查看备份和文件复本:
rman> list backup;

11、验证备份:
rman> validate backupset 3;

12、从自动备份中恢复服务器参数文件:
rman> shutdown immediate; (立即关闭数据库)
rman> startup nomount; (启动实例)
rman> restore spfile to pfile '/backup1/mydb.ora' from autobackup; (从自动备份中恢复服务器参数文件)

13、从自动备份中恢复控制文件:
rman> shutdown immediate; (立即关闭数据库)
rman> startup nomount; (启动实例)
rman> restore controlfile to '/backup1' from autobackup; (从自动备份中恢复控制文件)

13、恢复和复原全数据库:
rman> shutdown immediate; (立即关闭数据库)
rman> exit (退出)
%mv /oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak (将数据文件重命名)
%mv /oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak (将数据文件重命名)
%mv /oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak (将数据文件重命名)
%mv /oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak (将数据文件重命名)
%rman target=rman/rman@mydb (启动恢复管理器)
rman> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora (指定初始化参数文件启动数据库)
rman> restore database; (还原数据库)
rman> recover database; (恢复数据库)
rman> alter database open; (打开数据库)

14、恢复和复原表空间:
rman> sql 'alter tablespace users offline immediate'; (将表空间脱机)
rman> exit (退出恢复管理器)
%mv /oracle/dbs/users01.dbf /oracle/dbs/users01.bak (将表空间重命名)
%rman target=rman/rman@mydb (启动恢复管理器)
rman> restore tablespace users; (还原表空间)
rman> recover tablespace users; (恢复表空间)
rman> sql 'alter tablespace users online'; (将表空间联机)

15、增量备份与恢复:
第一天的增量基本备份:
rman> backup incremental level=0 database plus archivelog delete input;
第二天的增量差异备份:
rman> backup incremental level=2 database plus archivelog delete input;
第三天的增量差异备份:
rman> backup incremental level=2 database plus archivelog delete input;
第四天的增量差异备份:
rman> backup incremental level=1 database plus archivelog delete input;
第五天的增量差异备份:
rman> backup incremental level=2 database plus archivelog delete input;
第六天的增量差异备份:
rman> backup incremental level=2 database plus archivelog delete input;
第七天的增量差异备份:
rman> backup incremental level=0 database plus archivelog delete input;

16、增量恢复:
rman> shutdown immediate;
rman> exit
%mv /oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak
%mv /oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak
%mv /oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak
%mv /oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak
%rman target=rman/rman@mydb
rman> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora
rman> restore database;
rman> recover database;
rman> alter database open;

验证rman备份是否有效
http://www.eygle.com/archives/2010/01/rman_validate_backup.html
验证控制文件和参数文件:
rman> restore validate controlfile;
rman> restore validate spfile;
验证全备份一般会很慢,谨慎试验:
rman> restore validate database;

自己编写脚本,定时执行验证
rman target / nocatalog log=/rman/validate/rman_db_validate.log<
restore validate database;
exit
eof

(rman全库0级压缩备份脚本 记录一下自己备用)
rman target / nocatalog log=/rman/log/rman_db_level0.log <
run {
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
backup as compressed backupset incremental level 0 database filesperset 4 format
'/rman/data/level0_%d_%s_%p_%u_%t.bak' include current controlfile;
sql 'alter system archive log current';
backup archivelog all filesperset 10 format '/rman/arch/arc_%d_%s_%p_%u_%t.bak'
delete all input;
release channel d1;
release channel d2;
release channel d3;
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete;
}
exit
eof