ITPub博客

首页 > 数据库 > Oracle > 9ir2 rman用户指导读书笔记

9ir2 rman用户指导读书笔记

原创 Oracle 作者:zsj3874 时间:2007-10-29 14:19:38 0 删除 编辑

rman这东西把很多手工备份恢复时需要考虑的东西替你考虑了,简化了很多手工备份恢复操作,但备份恢复的基本原理还是要理解的!

[@more@]

5-3:

经常会用到的永久配置选项:

configure default device type to disk/sbt/sbt_tape;
configure device type disk parallelism 2;
configure channel device type disk format '/disk1/ora_%t_%s_%p';
或者是:
configure channel device type disk format '/disk1/ora_%U';

控制文件自动备份:
configure controlfile autobackup on/off/clear;
configure controlfile autobackup format for device type disk to '/disk2/cf_%F';

保留策略;
configure retention policy to recovery window of 7 days;
configure retention policy to redundancy 2;
configure retention policy to none;不使用保留策略
configure retention policy clear;恢复默认值

备份优化:
configure backup optimization on;

跳过某些表空间的备份:
configure exclude for tablespace users;
不跳过某些表空间的备份:
configure exclude for tablespace users clear;


set maxsetsize to 100m/unlimited;
set maxsetsize clear;


通道的分配:手工方式(allocate channel只能运行在run块儿内,allocate channel for maintenance只能运行在rman提示符下) 或者是 自动方式(configure channel)
对于backup操作,一次仅能分配一种类型的通道;对于restore操作,rman根据需要分配必要的通道类型.
不能混合的使用自动的和手动的通道分配,在run块内的allocate channel重写自动的通道分配.
RMAN自动的释放通道.

5-4:format指定的是备份片的名称,tag是备份集相关的
configure default device type to disk/sbt;
configure device type disk parallelism 2; show device type;
configure channel [n] device type disk [format '/backup/ora/ora_%t_%s_%p'];
configure channel [n] device type disk [format '/backup/ora/ora_%U'];

5-6:
改变默认的设备类型:
backup device type disk/sbt database;

5-7:
sbt和sbt_tape设备类型是同义词
自动的通道分配也适用于维护操作.
ora_为前缀的通道名称是RMAN保留使用的,你不能使用allocate channel分配ora_为前缀的通道名称

5-9:
configure clear恢复各项配置为默认值(clear前没有to).

5-10:
当备份到tape上时,应该为每一个物理设备分配一个通道(因为磁带是顺序读写的),当备份到disk时,应该分配尽可能多的通道来达到它的最大吞吐量.
RMAN是顺序完成命令的,并行只在一个单独的命令内部使用.

5-11:
通道控制选项
filesperset,rate(I/O带宽),maxpiecesize,format,maxopenfiles(同时打开的文件数量),parms,connect都是channel的选项,但maxsetsize不是,它是单独配置的.
rman有一个预配置的自动的DISK通道,所以当你使用change..available,delete,crosscheck等维护命令对只存在于DISK上的文件执行维护任务时,可以不用手工的分配通道,
但如果没有自动的sbt通道,又要对tape上的文件执行维护任务时,就会报错!

5-13:
备份集是一个逻辑概念,它包含一个或者多个备份片,备份片是物理概念,是OS级的物理输出文件.
一个备份片可以是多个数据文件的备份,也就是说备份片是物理输出文件,但它和要备份的数据文件,归档重做日志文件之间并不存在一对一的对应关系.
要备份的一个文件不能跨越备份集,也不能混合数据文件和归档重做日志文件在同一个备份集内.
备份集是RMAN相关格式的,只有RMAN可以识别;而映象拷贝完全是文件的拷贝,OS也可以识别,且映象拷贝一直备份所有的数据块.

5-17:
backup plus archivelog:
1.alter system archive log current;
2.backup archivelog all;
3.backup指定的文件
4.alter system archive log current;
5.backup备份期间生成的归档重做日志文件
如果开启了备份优化的话,那么RMAN跳过已经备份到分配的设备上的归档重做日志文件.

5-18:
multiplex:就是同时读取多个文件而后写入同一个备份片中去.
它的度=min(filesperset,maxopenfiles)

可以包含控制文件在数据文件的备份集中,在这种情况下是先写控制文件,它的BLOCK并不和数据文件的BLOCK multiplex.
RMAN不能包含数据文件和归档重做日志文件在同一个备份集内,因为它们的逻辑块大小是不同的,一个是DB BLOCK,一个是OS BLOCK.
控制文件的块大小是DB BLOCK,默认最大大小是20000个DB BLOCK。

5-21:
duplex:生成一个备份集内每个备份片的多个拷贝.一个备份集内每个备份片最多可以生成4个完全等同的拷贝.
注意多个拷贝的是备份片,而不是备份集,所以这多个拷贝所属的备份集的名称,TAG是完全相同的,不同的只是备份片的名称而已.
只适用于数据文件(包括当前的控制文件)和归档重做日志文件
backup copies
set backup copies
configure .. backup copies:
configure datafile backup copies for device type disk to 2;
configure archivelog backup copies for devicd type sbt to 3;
控制文件的自动备份一直只生成一个拷贝.
format选项可以最多指定4个.
比如backup device type disk copies 3 datafile 7 format '/disk1/%U','/disk2/%U','/disk3/%U'
format可以在backup,allocate channel,configure channel中指定,最多4个,如果没有使用duplex的话,其余的format被忽略

5-23:
默认情况下,RMAN自动决定哪些通道备份哪些个文件,但你也可以使用backup...channel来自己决定一个通道备份指定的文件.
比如:
backup
(datafile 1,2,3 filesperset=1 channel ora_disk_1)
(datafilecopy '','' filesperset=2 channel ora_disk_2)
(archivelog from sequence 100 until sequence 111 thread 1 filesperset=3 channel ora_disk_3)

5-24:备份集的备份
backup backupset支持disk-to-disk,disk-to-tape,但不支持tape-to-tape
backup device type sbt copies 2 backupset all;如果开启了备份优化的话,所有已经备份到特定的设备类型上的备份集将不会再备份了.
backup device type sbt backupset completed before 'sysdate-7' delete input;???????为什么说这里的delete input=delete all input;

5-27:备份片的命名
你可以让RMAN自行给每个备份片一个唯一的名字(%U),或者自己给出一个format参数来指定备份片名称
backup tablespace users format ='/backup/users_%u_%p_%c'

5-28:备份片大小的限制
configure channel device type disk maxpiecesize=2G

5-35:RATE的使用
可以在allocate channel/configure channel中使用rate来限制每个通道可以使用的I/O带宽的最大值.

5-37:
full备份:它也跳过从来没有被使用过的数据文件块.
whole database:备份所有的数据文件块,控制文件和SPFILE
FULL备份和level 0级备份的区别是:full 可以被认为是level 0的,作为随后的增量备份的基础;也可以不认为是level 0的,不影响随后的增量备份.

5-38:
这段话没理解是什么意思.?????????????????????????????
RMAN always chooses incremental
backups over archived logs. Note that RMAN does not need to restore a base
incremental backup of a datafile in order to apply incremental backups to the
datafile during recovery. For example, you can restore non-incremental image
copies of the datafiles in the database, and RMAN can recover these datafiles with
incremental backups.

我的理解应该是rman都是优先使用level 0的备份,而后是增量备份,最后才是归档重做日志文件.所以可以用来恢复使用nologging选项创建的对象,因为它没有生成日志,但是它确实是改变块儿了,所以被增量备份了.

5-40:增量备份的工作原理
RMAN比较源文件中数据块的SCN和父备份中数据块的SCN,如果前者>=后者,那么就增量备份这个块.

5-45:
RMAN进行备份时必须是OPEN(热备份)/MOUTE(冷备份)的,因为控制文件必须是可用的,以此来记录备份信息.

5-46:set maxcorrupt,不超过这个限制,备份就不会终止,坏块的历史记录在v$backup_corruption/v$copy_corruption中.
10-40: v$database_block_corruption中记录的是最近的一次backup..validate/backup/copy时检测到的坏块,v$backup_corruption/v$copy_corruption中记录的是坏块的历史记录.
blockrecover corruption list 恢复的是v$database_block_corruption中记录的坏块.

5-47:控制文件和SPFILE的自动备份
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to '/backup/ora/cf_%F';
使用backup/copy时自动生成的控制文件和SPFILE的备份和backup/copy的文件在同一个备份集内,也在同一个位置;但DB物理结构变更导致的自动备份放置在同一个备份片内,位置由前面的configure命令决定.
ON时使用单独的备份片,OFF不创建单独的备份片.

????????????????????5-48的图不明白是什么意思.
控制文件和SPFILE的自动备份的目的就是在目标库的控制文件和rc都倒掉的情况下也可以使用repository信息.
restore controlfile from autobackup;
但在控制文件被复原出来之前,又如何知道从哪里复原控制文件呢? 因为控制文件的自动备份使用默认的格式,这一默认格式不是记录在控制文件中的,所以它从默认的位置复原.
也可以使用下面的命令:
set controlfile autobackup format for device type disk to '';
restore controlfile from autobackup;

或者是直接使用restore controlfile from '----------';

5-50:obsolete意味着介质恢复时不需要了;expired意味着物理文件不存在了.
configure retention policy to recovery window of 7 days;
configure retention policy to redundancy 2;
configure retention policy to none; 不使用保留策略
configure retention policy clear; 使用默认的保留策略

5-55:backup/copy...keep
change..keep
change..nokeep
backup tablespace users keep forever logs;
backup database keep until time "to_date('2007-10-01','yyyy-mm-dd')" nologs;
change backupset 123 nokeep; 仍使用原先的保留策略

5-58:
configure backup optimization on;
configure archivelog backup copies for device type disk to 4;

冗余度只是对数据文件说的.
开启了备份优化,决定一个数据文件是否要被跳过时,使用下面的先后顺序来决定
1.configure retention policy to redundancy n;
2.backup ..copies n;
3.set backup copies n;
4.configure datafile backup copies for device type disk to n;

备份优化只对下列命令管用:
backup database
backup backupset all;
backup archivelog all/like ..


backup .. force可以重写备份优化

configure retention policy to redundancy n;
如果开启备份优化的话,n+1个只读/脱机的数据文件必须被备份,再多的就被跳过了.
为什么是只读/脱机的数据文件呢?因为可读写的数据文件的话,它们绝不可能是完全相同的.
如果最近的备份是在恢复窗体以外的,那么备份时脱机文件和只读文件不被跳过.

5-61:可重启的备份
可重启的单元是备份集,backup database not backed up since time 'sysdate-1';一天内备份的文件就不备份了.

5-62:
copy生成的映象拷贝和os的cp没有什么本质的区别,除了copy核实块儿,在控制文件中记录这次拷贝信息之外没有任何的不同,
所以在数据文件丢失之后,你可以不用复原,而只set newname for datafile x to '----',switch datafile x一下成映象拷贝就可以恢复了.其实就是
switch datafile x to datafilecopy '----';
可以catalog的:catalog archivelog,catalog datafilecopy;

6-7:
如果RMAN要在应用增量备份和应用重做之间选择的话,RMAN一直选择使用增量备份.

6-8:
ORACLE把归档重做日志文件认做是映象拷贝,所以得使用list copy by file; v$archived_log,rc_archived_log;
默认情况下,RMAN复原归档重做日志文件到第一个本地的归档目录下,也可以使用SET ARCHIVELOG DESTINATION TO 来改变这一默认选项.

6-11:
blockrecover只能是完全恢复.


7-7:report obsolete orphan还是不明白????????????????????????????????

7-10:delete操作
1.删除物理文件
2.标识控制文件中的相应记录行状态为deleted(不是表,所以只能标识为deleted)
3.删除恢复目录中的相应记录行(表数据行)

删除的操作有:delete,backup...delete (all) input,change...uncatalog(仅仅删除恢复目录中的记录行,标识控制文件中的相应记录行为deleted).

delete archivelog all backup 2 times to device type sbt;只要归档重做日志文件已经备份到sbt上至少2次就可以删除了.

7-16:为什么要有多通道特色?因为可能要在单个命令里对disk和tape上的对象都执行维护操作的.

8-14:
configure default device type to disk; configure default device type to sbt(sbt_tape); configure default device type clear;
configure device type disk parallelism 2;
configure channel 1 device type disk format '/disk1/bk_%U';
configure channel 2 device type disk format '/disk2/bk_%U';
9-35的内容:一般来说往tape上备份时,不用指定format,因为默认的%U足够了.但往disk上备份时可以象上面一样指定format,
如果象上面一样指定了format,而后backup database的话,生成两个备份集,备份片会大致均匀的分布在/disk1和/disk2上,而不是duplex,即不是在/disk1和/disk2存在两个同等的拷贝

8-18:
控制文件和spfile的自动备份
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to '/backup/controlfile/cf_%F';

8-20:
保留策略的配置
configure retention policy to recovery window of 7 days;
configure retention policy to redundancy 2;
configure retention policy to none; 关闭了保留策略的使用
configure retention policy clear;使用默认配置

8-22:
configure maxsetsize to 100m;
backup tablespace user01;
backup tablespace user02 maxsetsize 50m;


8-26:
configure exclude for tablespace temp; backup database时不备份这个表空间
下面的依然备份这个表空间:backup database noexclude; backup tablespace temp;
configure exclude for tablespace temp clear;依然备份这个表空间
backup database skip readonly skip offline skip inaccessible;

8-27:
调用rman之前;
$NLS_LANG=american.we8dec;export NLS_LANG(设置为目标库的字符集)
$NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'; export NLS_DATE_FORMAT


9-6:
backup database;全库备份:备份所有的数据文件,控制文件,SPFILE;我的理解应该是备份所有的数据块吧?!
backup full database;全备份:备份所有的数据文件,控制文件,SPFILE;我的理解应该是备份使用过的数据块吧?!实际上等同于level 0,但不作为增量备份的基础.

list backup of database/tablespace/datafile/datafilecopy/controlfile/archivelog;
backup datafilecopy/archivelog/controlfilecopy;

9-11:
控制文件自动备份和backup spfile时候,如果实例启动的时候使用的是初始化参数文件的话,不备份spfile,也就是说只备份正在使用的SPFILE.

9-17:
backup incremental level 1 (cumulative) database;

9-29:
copy只能到disk上,可以copy的文件包括:datafile(当前的/copy的),归档重做日志文件,controlfile(current/copy)
没有copy database命令.
copy datafile x to '----';
copy datafilecopy '----' to '---------';
copy current controlfile to '====';
copy archivelog '-===' to '';
copy controlfilecopy '=====' to '';

9-37:
backup database filesperset=2 archivelog all filesperset=10;
backup maxsetsize=100m archivelog all; <===> configure maxsetsize=100m; backup archivelog all;
如果你指定的maxsetsize比要备份的最小的文件还要小的话,返回错误.
但我的疑问是:如果maxsetsize比一个文件要小,这个文件就会跨越多个备份集了,这与前面说的文件不能跨越备份集不是矛盾了吗??????????????????????????
?????????configure maxsetsize=100m;有些个特殊,不是在configure channel 中设置的.

configure channel device type disk maxpiecesize 1000m;
configure channel device type disk maxopenfiles 4;

9-40:
控制文件备份的format里必须得有%F:合成了DBID,日,月,年和序列值生成一个唯一的可重复生成的名称
备份片的format中%U代表oracle生成的唯一标识符,%t代表备份集的时间戳,%s代表备份集编号,%p代表备份片编号,%d代表数据库名称,%c代表duplex时的备份片copy编号
%T:yyyymmdd, %Y:yyyy, %M:mm, %D:dd ,%u:由备份集编号和备份集创建的时间组成 ,%U:%u_%p_%c不指定format时默认是这种格式的
%d_%t_%s_%p_%c
?????????????????????9-39最下面的一段话不理解??????????????

9-41:
????????????应该是backup archivelog from sequence 9100 until sequence 9112吧?!因为until sequence 9112不包括9112,到9111为止.

9-42:增量备份的基础是数据文件,所以在增加了新的数据文件/表空间时,必须做一个level 0的备份作为以后的增量备份的基础.
backup incremental level 0 tablespace user02;
backup incremental level 1 cumulative database;

9-43:一个备份集不能由多个通道来共同完成.不能够使用自动的通道分配同时备份到disk和tape上,这时必须手动的分配通道.
backup datafile 1,2,3,4 channel ch1 controlfilecopy '/tmp/control01.ctl' channel ch2 archivelog from time 'sysdate-14' channel ch3

9-48:备份优化只对自动分配的通道管用吗?????????????????????????????
backup archivelog until time 'sysdate' not backed up 2 time tag secondary_backup_archivelog;
delete archivelog all backed up 2 times to device type sbt;
change backup of arcivelog tag secondary_backup_archivelog unavailable;


10-6:从9I开始,ORACLE只复原需要恢复的文件,除非你指定force选项.
与恢复相关的视图:v$datafile_header,v$recover_file;

10-9:
restore database;
recover database delete archivelog maxsize 1m skip tablespace history;删除因为恢复而复原出的归档重做日志文件,限制它的空间使用为1M,跳过表空间history的恢复.


10-10:可以使用当前的控制文件来执行数据库的不完全恢复.


10-12:复原spfile.
RESTORE SPFILE; # if you are using a catalog
RESTORE SPFILE FROM AUTOBACKUP; # if in NOCATALOG mode
startup pfile=''可以,但不能startup spfile,但如果你复原spfile到了一个非默认的位置的话,你可以
echo "spfile='/tmp/spfiletemp.ora'">/tmp/inittemp.ora;
startup pfile=/tmp/inittemp.ora;
但这时是用什么启动的呀?pfile or spfile????????????????????????


10-14:用备份的控制文件执行恢复工作
复原控制文件之后必须使用recover,即使你没有复原任何的数据文件.
必须alter database open resetlogs.
控制文件中本地管理临时表空间的tempfile目录被删除了,在你open resetlogs之后你必须为这些表空间添加新的tempfile.

startup nomount;
RESTORE CONTROLFILE;
ALTER DATABASE MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
alter database open resetlogs;
sql "alter tablespace temp add tempfile ''?/oradata/trgt/temp01.dbf'' reuse";
SHUTDOWN IMMEDIATE
STARTUP MOUNT
BACKUP DATABASE;
ALTER DATABASE OPEN;

10-17:set dbid的使用情形
RUN
{
# Optionally, set upper limit for eligible time stamps of control file backups
# SET UNTIL TIME '09/10/2000 13:45:00';
# Specify a nondefault autobackup format only if required
# SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '?/oradata/%F.bck';
ALLOCATE CHANNEL c1 DEVICE TYPE sbt; # manually allocate one or more channels,如果控制文件的自动备份备份到了磁带上的话.
RESTORE CONTROLFILE FROM AUTOBACKUP
MAXSEQ 100 # start at sequence 100 and count down
MAXDAYS 180; # start at UNTIL TIME and search back 6 months
ALTER DATABASE MOUNT ;
}
# uses automatic channels configured in restored control file
RESTORE DATABASE UNTIL SEQUENCE 13243;
RECOVER DATABASE UNTIL SEQUENCE 13243; # recovers to most recent archived log
ALTER DATABASE OPEN RESETLOGS;
明显,如果不使用恢复目录的话,如果控制文件丢失的话,在restore controlfile之前,没有任何的repository信息,复原备份的控制文件后,很多备份信息又没有,所以恢复起来很
麻烦,所以最好使用RC.当然如果RC和控制文件都丢失的话,只能使用这种恢复方法了.

10-19:复原数据文件到新位置
run
{
sql 'alter tablespace tools offline immediate';
set newname for datafile '/oracle/oradata/zsj/tools01.dbf' to '/tmp/tools01.dbf';
restore tablespace tools;
switch datafile all; 指示控制文件更新为新的位置,相当于alter database rename datafile ;
recover tablespace tools;
sql 'alter tablespace tools online';
}

10-20:复原控制文件到新的位置
run
{
startup nomount;
set until time '2007-10-01 00:00:00';复原这个日期之前创建的控制文件,也可以指定scn,sequence
restore controlfile to '/tmp/control01.ctl';复原到新位置
restore controlfile from '/tmp/control01.ctl';复制这个复原的文件到control_files指定的所有位置
alter database mount;
??????????????????????spfile/pfile中的control_files会自动指向这些个新位置吗?
}

10-21:复原归档重做日志文件到新位置
set archivelog destination to '/tmp';
默认情况下,rman复原归档重做日志文件到本地的第一个归档目录下.

10-26:使用RMAN通过resetlogs执行恢复****************************
nomount时才可以reset database to incarnation x????????
mount recover database时只恢复online的数据文件,offline的不恢复
10-32:为什么需要shutdown abort????????????????????????
10-28:mount下也可以recover datafile,但好像必须是online的,是吗???????????????????
什么情况下脱机的文件联机时需要恢复来着?????????????????????????


sql>shutdown abort;为什么需要abort???????????????????????是不写控制文件吗??????
$把当前的控制文件拷贝到其它的地方
$rman target / catalog rman/cat@catdb
rman>startup nomount;
rman>list incarnation of databse trgt;
rman>reset database to incarnation x;(before resetlogs)
rman>
run
{
set until scn 12654;使用自动的通道分配
restore controlfile;
alter database mount;
restore datafile 1;
sql 'alter database datafile 2,3,4,5,6,7,8 offline';
recover database;
}
rman>shutdown immediate;
rman>startup nomount;
rman>list incarnation of database trgt;
rman>reset database to incarnation y;(after resetlogs,即当前的)
$把当前的控制文件拷贝回来;
rman>alter database mount;
rman>recover database;或者recover datafile 1;
rman>sql 'alter database datafile 2,3,4,5,6,7,8 online';
rman>shutdown immediate;
rman>startup mount;
rman>backup database;
rman>alter database open;

10-37:
这里假定都恢复到默认的位置
$rman target / nocatalog;
rman>set dbid 676549873;
rman>startup force nomount;使用假的spfile来启动,force选项是先关闭然后再启动
rman>
run
{
allocate channel c1 device type sbt_tape parms '';
set controlfile autobackup format for device type sbt to '';
restore spfile from autobackup;
}
rman>startup force nomount;
rman>
run
{
set until sequence 14345 thread 1;
allocate channel c1 device type sbt_tape parms '';
set controlfile autobackup format for device type sbt to '';
restore controlfile from autobackup;
alter database mount;
}
rman>list copy;
rman>list copy of archivelog;
把没有catalog的数据文件映象拷贝和归档重做日志文件catalog一下.因为这个控制文件是复原过来的,可能不包含这些个信息.
rman>
run
{
set until sequence 14345 thread 1;
allocate channel c1 device type sbt_tape parms '';也可以使用自动的通道分配
restore database;
recover database;
alter database open resetlogs;
}
rman>shutdown immediate;
rman>startup mount;
rman>backup database;
rman>alter database open;


10-39:
# restore from backupset
BLOCKRECOVER DATAFILE 8 BLOCK 13 DATAFILE 2 BLOCK 19 FROM BACKUPSET;
# restore from datafile image copy
BLOCKRECOVER DATAFILE 8 BLOCK 13 DATAFILE 2 BLOCK 19 FROM DATAFILECOPY;
# restore from backupset with tag "mondayam"
BLOCKRECOVER DATAFILE 8 BLOCK 13 DATAFILE 2 BLOCK 199 FROM TAG = mondayam;

10-41:核实备份和拷贝的复原:
restore..validate 比如restore archivelog all validate,restore tablespace users validate,restore controlfile validate.
restore..validate时数据库可以是mount/open的,open时数据文件不要求是脱机的,因为它并不真的复原.
validate backupset:list backupset,list copy;


10-44:
startup nomount;
set dbid 45435;
restore controlfile;
alter databae mount;
restore database;
recover database;
alter database open resetlogs;

10-47:
假如说你丢失了一个文件,你没有这个文件的备份,但你有自这个文件创建以来所有的日志记录,那么你可以通过创建一个同名的文件来恢复.
sql "alter database datafile ''/oradata/history01.dbf'' offline";
sql "alter database create datafile ''/oradata/history01.dbf''";
recover datafile '/oradata/history01.dbf';
sql "alter database datafile ''/oradata/history01.dbf'' online";

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

请登录后发表评论 登录
全部评论
  • 博文量
    16
  • 访问量
    43924