[JGL]Rman脚本书写格式和注意事项

一、 rman信息库可以存放两个位置
1,目标数据库的控制文件;
2,恢复目录;
二、 控制文件里面存放记录分为两类
1,可删除的记录归档日志文件的历史记录以及rman备份的元数据(记录备份集位置的数据)
2,不可删除记录数据文件,联机日志文件列表等
如果需要在控制文件中存放新的记录,则可以删除那些可删除部分,从而提供可用空间。
注意:如果rman备份的元数据被删除,rman的备份数据失去了意义,因此rman备份的元数据很重要。
三、设置初始化参数
controlfile_record_keep_time 来决定控制文件中可删除部分,这个参数默认是七天,表示控制文件始终保持最近七天的可删除记录,七天前的备份信息,归档日志记录被删除,如果设置为零,表 示不删除历史记录,那么控制文件的增长将会失控,因此rman的备份周期不能超过七天。
四、rman备份顺序,保证不丢失数据
1,数据库数据文件
2,归档日志
3,控制文件
4,参数文件
五、实验一
备份完成后,我们把控制文件删除掉,然后用过去的控制文件来恢复,看看是否能恢复数据库
RMAN> run {
2> allocate channel c1 type disk;
3> allocate channel c2 type disk;
4> backup database filesperset 2 format '/u02/backup/full_%d_%t_%s_%p';
5> backup current controlfile format '/u02/backup/ctl_%d_%t_%s_%p';
6> sql 'alter system archive log current';
7> sql 'alter system archive log current';
8> sql 'alter system archive log current';
9> backup archivelog all format '/u02/backup/log_%d_%t_%s_%p' delete input;
10> }
备份完成后,删除所用的控制文件,我们用过去的控制文件进行恢复,是否可以恢复并打开数据库?
RMAN> restore controlfile from  '/u02/backup/ctl_ORCL_843148742_17_1';
RMAN> alter database mount;
RMAN> recover database;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 03/25/2014 16:08:31
RMAN-06054: media recovery requesting unknown log: thread 1 seq 37 lowscn 1157615
注意:这里提示我们缺少日志文件seq37!
说明这个备份方案有错误!有可能找不到我们的日志文件的备份级,如果是在磁盘上也不是太难,但是如果是带库就比较麻烦了!
打开另一个会话:
RMAN> catalog backuppiece  '/u02/backup/log_ORCL_843148747_18_1';
cataloged backuppiece
backup piece handle=/u02/backup/log_ORCL_843148747_18_1 recid=14 stamp=843150418
RMAN> catalog backuppiece  '/u02/backup/log_ORCL_843148747_19_1';
cataloged backuppiece
backup piece handle=/u02/backup/log_ORCL_843148747_19_1 recid=15 stamp=843150442
RMAN> catalog backuppiece  '/u02/backup/log_ORCL_843148749_20_1';
cataloged backuppiece
backup piece handle=/u02/backup/log_ORCL_843148749_20_1 recid=16 stamp=843150457
RMAN>
返回到上一个会话上:
RMAN> recover database;
Starting recover at 25-MAR-14
using channel ORA_DISK_1
starting media recovery
如果我们先备份控制文件后备份归档日志,那么控制文件中,一定没有记录备份的归档信(备份归档信息的名称和存放的位置)
六、备份全库
orale]$ rman target / log /tmp/rman_full.log
RMAN> configure controlfile autobackup on;
RMAN> configure controlfile autobackup format for device type sbt_tape to '%F';
注:在添加数据文件和删除数据
文件的时候,在数据库物理操作,它会自动备份控制文件,这样数据库有可能出现挂起现象。
RMAN> configure controlfile autobackup format for device type disk to '%F';k to '%F';注:物理操作备份到disk
run{
allocate channel c1 type sbt_tape;把控制文件备份到带库上。
backup database;
}
如果rman中把控制文件的自动备份打开,还是刚才的那个备份脚本,当它完成对归档备份完成以后,仍然对控制文件进行备份。
run {
2> allocate channel c1 type disk;
3> allocate channel c2 type disk;
4> backup database filesperset 2 format '/u02/backup/full_%d_%t_%s_%p';
5> backup current controlfile format '/u02/backup/ctl_%d_%t_%s_%p';
6> sql 'alter system archive log current';
7> sql 'alter system archive log current';
8> sql 'alter system archive log current';
9> backup archivelog all format '/u02/backup/log_%d_%t_%s_%p' delete input;
10> }
七、Rman Log
在rman备份的时候,有个选项是log输出,在备份的时候,oracle说明是一个选项,但是对于我们来说,备份一定要有log。
1,备份脚本的格式
%c:备份片的副本数
%d:数据库名称
%D:位于该月的第几天
%M:位于该年的第几个月
%n:数据库名称,向右增补到最大8个字符
%u:一个8个字符的名称,代表备份集和创建时间
%p:该备份集的备份片号,从1开始到创建的文件数
%U:一个唯一的名字%u_%p_%c
%s:备份的编号
%t:备份的时间戳
%T:年月日格式(YYYY-MM-DD)
八、如何使用RMANLOG
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
[oracle@rhel db_1]$ rman target / log /u02/rman_full.log append <
RMAN> run {
allocate channel c1 type disk;
allocate channel c2 type disk;
backup database filesperset 4 format '/u02/backup/full_%d_%T_%s_%p';
sql 'alter system archive log current';
backup archivelog all format '/u02/backup/arch_%d_%T_%s_%p' delete input;
backup current controlfile format '/u02/backup/ctl_%d_%T_%s_%p';
}   EOF
九、 Rman的设置
分 配通道依据数据库的压力和磁盘的速度,每个通道占用磁盘的额i/o;filesperset依据数据库文件的大小,如果我的文件很大,我在每一个备份集里 面放的文件就少些,这样在数据库恢复的时候,我们会尽可能多的通道读取多个备份集,来更快的恢复文件。一个通道只能读取一个备份集,不可能多个通道读取一 个备份集。delete input 把备份走的归档自动删除,腾出空间。
十、 rman备份脚本归档
1,设置环境变量
export ORACLE_SID=orcl
export ORACLE_HOME==/u01/app/oracle/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
2,使用log输出
rman target /  log  /u02/rman_arch.log append <
3,开始备份
run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
sql 'alter system archive log current';
backup archivelog all format '/u02/backup/arch_%d_%T_%s_%p' delete input;
backup current controlfile format '/u02/backup/ctl_%d_%T_%s_%p';
}
EOF
注:一旦控制文件损坏或者丢失,我们可以从最近的控制文件中,找到我们的备份集,找到我们的所需要恢复的归档日志。
十一、在rman中什么时候用crosscheck
更新控制文件,把已经删除的归档日志文件认为无效。当我们在归档目录下,不小心删除了一个归档日志,但是控制文件并不知道,所以在恢复的时候要找这个文件,
十二、oracle 冗余策略
1,recovery window
保留多长时间的备份集,rman认为在多少天之后的备份为无效。
2,redunancy
超过多少个,认为是无效的,他会删掉最早的一个备份。
Rman备份脚本-删除策略
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
[oracle@rhel backup]$ rman target / log /u02/rman_delete.log append <
allocate channel for maintenance type disk;
allocate channel for maintenance type sbt_tape;
corsscheck backup;
delete noprompt obsolete;
EOF
RMAN> [oracle@rhel backup]$
[oracle@rhel backup]$ crontab命令的功能是在一定的时间间隔调度一些命令的执行
编辑:crontab -e
查看:crontab -l
备份完全备,就删除冗余。
自动控制文件备份没有打开(备份到磁盘上)
十三、Rman恢复
[oracle@rhel backup]$ rman target / log /u02/rman_contorl.log
RMAN> run {
2> backup current controlfile format '/u02/backup/ctl_%d_%t_%s_%p';
3> }
RMA在rman中
[oracle@rhel backup]$ rman target / nocatalog log /u02/rman_contorl.log
RMAN> run {
2> allocate channel c1 type sbt_tape;
3> restore controlfile from '/u02/backup/ctl_ORCL_843158098_42_1';
[oracle@rhel backup]$ rman target / nocatalog log /u02/rman_contorl.log
RMAN> run {
2> allocate channel c1 type disk;
3> restore controlfile from '/u02/backup/ctl_ORCL_843158098_42_1';
4> }
十四、自动控制文件
备份打开(默认位置)(发起任何一个文件的备份,都会自动备份控制文件)从磁盘恢复打开控制文件自动备份数据库必须在mount或open
rman target /
rman> configure controlfile autobackup on;
rman> configure controlfile autobackup format for device type disk to '%F';
数据库恢复
*******************************************************************************
Rman target / nocatalog
Rman>set dbid
run{
allocate channel c1 type disk;
restore  controlfile from auto backup;
}
注: 自动去找最近的一个控制文件的备份。如果控制文件的自动备份,不是默认的位置,在恢复控制文件的时候,需要把它给放在默认的位置。因为现在数据库还处于 nomunt的状态。在rman的show all;的参数里面,这些默认的参数是写在程序中的;修改的信息是记录在控制文件中的。所以当数据库启动到nomount的时候,在rman用 showall的时候,仍然是没有修改的默认信息。
十五、恢复控制文件
控制文件的默认位置$ORACLE_HOME/dbs
1, 复制拷贝
2,开始恢复
run{
set controlfile autobackup format for device type disk to '/oracle/%F';
restoreconfile from autobackup;
}
run{ set controlfile autobackup format for device type sbt_tape  '%F';
在带库中找控制文件备份的备份集
Restore controlfile from auto backup;}
在带库中直接就是文件名,没有目录。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29611940/viewspace-1169650/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29611940/viewspace-1169650/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值