RMAN备份与恢复
[color=rgb(1, 1, 1)]set oracle_sid=inthdb
rman target /
或者:
set oracle_sid=inthdb
rman
connect target /
[color=rgb(1, 1, 1)]连接远程数据库:
[color=rgb(1, 1, 1)]必须在建立连接时指定一个有效的网络服务名,同时你本地的 tnsname.ora[color=rgb(1, 1, 1)]文件中也必须已经建立了该网络服务名的正确配置
rman target sys/oracle@[color=rgb(1, 1, 1)]inthdb
[color=rgb(1, 1, 1)]启动 rman[color=rgb(1, 1, 1)]时可以指定日志输出:
rman target / log /home/oracle/logs/rman_log.txt
[size=13px]在RMAN中可以[color=rgb(1, 1, 1)][size=13px]启动、关闭数据库
[size=13px]RMAN> shutdown immediate
[size=13px]RMAN> startup
[color=rgb(1, 1, 1)][size=13px]当然,你也可以执行[size=13px] [size=13px]startup mount[color=rgb(1, 1, 1)][size=13px],然后再利用[size=13px]alter database open[color=rgb(1, 1, 1)][size=13px]命令打开数据库以及[size=13px] [size=13px]shutdown normal,shutdown abort[color=rgb(1, 1, 1)][size=13px]等
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)][size=13px]执行[size=13px] [size=13px]host[color=rgb(1, 1, 1)][size=13px]命令暂时退出[size=13px]rman:
[size=13px]RMAN> host;
[color=rgb(1, 1, 1)][size=13px]执行完系统命令后可以再通过执行[size=13px] [size=13px]exit[color=rgb(1, 1, 1)][size=13px]退出到[size=13px]rman[size=13px] [color=rgb(1, 1, 1)][size=13px]命令提示符下
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)][size=13px]执行[size=13px] [size=13px]SQL[color=rgb(1, 1, 1)][size=13px]语句:然后在一对单引号[size=13px] [size=13px]([color=rgb(1, 1, 1)][size=13px]双引号亦可[size=13px])[color=rgb(1, 1, 1)][size=13px]中输入要执行的[size=13px] [size=13px]SQL[color=rgb(1, 1, 1)][size=13px]语句
[color=rgb(1, 1, 1)][size=13px]RMAN> [size=13px]SQL 'ALTER SYSTEM ARCHIVE LOG ALL';
[size=13px]rman[color=rgb(1, 1, 1)][size=13px]中的[size=13px]sql[color=rgb(1, 1, 1)][size=13px]环境不能执行[size=13px] [size=13px]SELECT[color=rgb(1, 1, 1)][size=13px]语句
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)][size=13px]利用[size=13px] [size=13px]show[color=rgb(1, 1, 1)][size=13px]命令来显示当前的配置参数
[size=13px]show all;
[size=13px]SHOW CHANNEL;
[size=13px]SHOW DEVICE TYPE;
[size=13px]SHOW DEFAULT DEVICE TYPE;
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)][size=13px]列出数据库中所有文件的备份信息:
[size=13px]RMAN>LIST BACKUP OF DATABASE;
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)][size=13px]列出指定表空间的备份信息:
[size=13px]RMAN>LIST COPY OF TABLESPACE 'SYSTEM';
[color=rgb(1, 1, 1)][size=13px]列出指定数据文件的备份信息:
[size=13px]RMAN>LIST BACKUP OF DATAFILE 'F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA';
[size=13px]1[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]、删除陈旧备份
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]当使用[size=13px]RMAN[backcolor=rgb(217, 217, 217)][size=13px] [color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]执行备份操作时,[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]RMAN[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]会根据备份冗余策略确定陈旧备份。[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]
[size=13px]RMAN> delete obsolete;
[size=13px]2[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]、删除[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]EXPIRED[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]备份
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]执行[size=13px]crosscheck[backcolor=rgb(217, 217, 217)][size=13px] [color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]命令核对备份集,那么会将该备份集标记为[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]EXPIRED[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]状态。为了删除相应的备份记录,可以执行[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]delete expired backup[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]命令。[size=13px]
[size=13px]RMAN> delete expired backup;
[size=13px]3[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]、删除[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]EXPIRED[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]副本
[size=13px]RMAN> delete expired copy;
[size=13px]4[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]、删除特定备份集
[size=13px]RMAN> delete backupset 19;
[size=13px]5[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]、删除特定备份片
[size=13px]RMAN> delete backuppiece 'd:\backup\DEMO_19.bak';
[size=13px]6[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]、删除所有备份集
[size=13px]RMAN> delete backup;
[size=13px]7[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]、删除特定映像副本
[size=13px]RMAN> delete datafilecopy 'd:\backup\DEMO_19.bak';
[size=13px]8[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]、删除所有映像副本
[size=13px]RMAN> delete copy;
[size=13px]9[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]、在备份后删除输入对象
[size=13px]RMAN> delete archivelog all delete input;
[size=13px]RMAN> delete backupset 22 format = ''d:\backup\%u.bak'' delete input;
[size=13px]
[size=13px]BACKUP DATABASE FORMAT '/home/oracle/rman/BACKUP/%U';
[color=rgb(1, 1, 1)][size=13px]一、[size=13px] [size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]备份形式
[color=rgb(1, 1, 1)][size=13px] [size=13px] [size=13px]1[color=rgb(1, 1, 1)][size=13px]、镜像复制[size=13px](Image Copies)
[color=rgb(1, 1, 1)][size=13px]镜像复制实际上就是数据文件、控制文件或归档文件的复制,与用户通过操作系统命令建立的文件复制实质一样,只不过[size=13px] [size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]是利用目标数据库中的服务进程来完成文件复制,而用户则是用操作系统命令.
[color=rgb(1, 1, 1)][size=13px] [size=13px] [size=13px]2[color=rgb(1, 1, 1)][size=13px]、备份集[size=13px](Backup Sets)
[color=rgb(1, 1, 1)][size=13px]备份集是通过[size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]创建的逻辑备份对象。一个备份集中可以包含多个数据文件、控制文件或归档文件。备份集在物理上是由多个备份片段组成,每个备份片段是一个操作系统文件。
[color=rgb(1, 1, 1)]
[size=13px]RMAN>backup database;
[size=13px]批处理:
[size=13px]RMAN>RUN{
[size=13px].......................
[size=13px].......................
[size=13px]}
[size=13px]
[color=rgb(1, 1, 1)][size=13px]批处理方式实质是将原来单个执行的命令组合到一起,并放在[size=13px] [size=13px]run{}[color=rgb(1, 1, 1)][size=13px]之间,这种方式最大的好处是所有在[size=13px] [size=13px]run[color=rgb(1, 1, 1)][size=13px]中的命令被视为一个作业,如果作业中任何一条命令执行失败,则整个命令停止执行,即失败命令后的其它命令都不会再被执行。这种方式是最常使用的方式,特别对于后台执行。
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)][size=13px]4种运行脚本:
[size=13px]rman TARGET / mailto:@backup_db.rman]@backup_db.rman
[size=13px]RMAN> mailto:@backup_db.rman]@backup_db.rman
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]RUN { @backup_db.rman }
[color=rgb(1, 1, 1)][size=13px]运行存储在恢复目录中的脚本[size=13px] [size=13px]([color=rgb(1, 1, 1)][size=13px]需要首先为[size=13px]rman[color=rgb(1, 1, 1)][size=13px]创建恢复目录[size=13px] [size=13px])
[size=13px]RMAN> RUN { EXECUTE SCRIPT backup_whole_db };
[size=13px]rman cmdfile=backup_db.rman
[color=rgb(1, 1, 1)][size=13px]对数据库进行全备:
[color=rgb(1, 1, 1)][size=13px] [size=13px]1[color=rgb(1, 1, 1)][size=13px]、使用[size=13px] [size=13px]backup database[color=rgb(1, 1, 1)][size=13px]命令执行备份
[size=13px]RMAN> BACKUP DATABASE;
[color=rgb(1, 1, 1)][size=13px] 执行上述命令后将对目标数据库中的所有数据文件进行备份,由于没有显式指定[size=13px] [size=13px]FORMAT[color=rgb(1, 1, 1)][size=13px]参数,[size=13px]rman[size=13px] [color=rgb(1, 1, 1)][size=13px]会自动为每个备份片段命名,并保存在[size=13px] [size=13px]ORACLE_HOME/database[color=rgb(1, 1, 1)][size=13px]目录下。
[color=rgb(1, 1, 1)][size=13px] 当然,也可以通过显式指定[size=13px] [size=13px]format[color=rgb(1, 1, 1)][size=13px]参数来自定义备份片段的命令规则,比如:
[size=13px]RMAN> BACKUP DATABASE FORMAT '/home/oracle/BACKUP\%U';
[color=rgb(1, 1, 1)][size=13px]通过[size=13px] [size=13px]list[color=rgb(1, 1, 1)][size=13px]命令查看刚刚创建的备份信息:
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]RMAN> list backup of database;
[color=rgb(1, 1, 1)][size=13px]备份表空间
[color=rgb(1, 1, 1)][size=13px]只要实例启动并处于加载状态,不论数据库是否打开,都可以在[size=13px] [size=13px]rman[color=rgb(1, 1, 1)][size=13px]中对表空间进行备份,而且不需要像手动备份那样先[size=13px] [size=13px]'ALTER TABLESPACE ... BEGIN BACKUP'[size=13px] [color=rgb(1, 1, 1)][size=13px]。例如:
[size=13px]RMAN> backup tablespace inth_tablespace;
[size=13px]RMAN> LIST BACKUP OF TABLESPACE [color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]inth_tablespace;
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]备份指定数据文件
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]首先可以先通过数据字典[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]DBA_DATA_FILES[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]查询出表空间对应的数据文件及其序号,例如:
[size=13px]select[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]file_name,file_id,tablespace_name[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]from[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]dba_data_files
[size=13px]然后再通过BACKUP DATAFILE[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]备份指定序号的数据文件,例如:
[size=13px]RMAN> BACKUP DATAFILE n;
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]如果要查看指定数据文件的备份,可以用:
[size=13px]RMAN> LIST BACKUP OF DATAFILE n;
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]注:[size=13px]n=[backcolor=rgb(217, 217, 217)][size=13px] [color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]指定的的数据文件序号,如果需要备份的数据文件有多个,[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]n=[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]多个序号,中间以逗号分隔即可。
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]备份控制文件
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]控制文件在[size=13px]ORACLE[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]中的重要性是毋庸置疑的,你看,连[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]RMAN[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]都给予特殊的照顾,在[size=13px]RMAN[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]中备份控制文件的方式是最多的。
[size=13px]1.[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]最简单的方式,通过[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]CONFIGURE[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]命令将[size=13px]CONTROLFILE AUTOBACKUP[backcolor=rgb(217, 217, 217)][size=13px] [color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]置为[size=13px]ON[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]。
[size=13px]RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]然后你再通过[size=13px]rman[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]做任何备份操作的同时,都会自动对控制文件做备份。
[size=13px]2.[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]对编号为[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]1[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]的数据文件,即[size=13px]SYSTEM[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]表空间的数据文件做备份时,[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]RMAN[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]也会自动对控制文件做备份。
[size=13px]3.[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]手动执行备份命令。
[size=13px]RMAN> BACKUP CURRENT CONTROLFILE;
[size=13px]4.[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]执行[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]BACKUP[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]时指定[size=13px]INCLUDE CURRENT CONTROLFILE[backcolor=rgb(217, 217, 217)][size=13px] [color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]参数,例如:
[size=13px]RMAN> BACKUP DATABASE INCLUDE CURRENT CONTROLFILE;
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]如果要查看备份的控制文件,可以通过:
[size=13px]RMAN> LIST BACKUP OF CONTROLFILE;
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]备份归档日志文件
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]归档日志对于数据库介质恢复相当关键,其虽然不像控制文件那样一旦损坏则数据库马上崩溃但重要性丝毫不减。归档日志文件能确保我们将数据库恢复到备份之前的任意时刻。在[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]RMAN[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]中备份归档日志有两种方式:
[size=13px]1[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]、利用[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]BACKUP ARCHIVELOG[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]命令备份
[size=13px]RMAN> BACKUP ARCHIVELOG ALL;
[size=13px]2[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]、在[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]BACKUP[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]过程中利用[size=13px]PLUS ARCHIVELOG[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]参数备份,例如:
[size=13px]RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]则在备份数据库的同时自动对所有归档文件进行备份。这种方式与上种有什么区别呢,区别太明显了,[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]BACKUP.....PLUS ARCHIVELOG[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]命令在备份过程中会依次执行下列步骤:
[size=13px]1>.[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]运行[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]ALTER SYSTEM ARCHIVE LOG CURRENT[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]语句对当前[size=13px]redolog[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]进行归档。
[size=13px]2>.[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]执行[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]BACKUP ARCHIVELOG ALL[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]命令备份所有已归档日志。
[size=13px]3>.[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]执行[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]BACKUP[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]命令对指定项进行备份。
[size=13px]4>.[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]再次运行[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]ALTER SYSTEM ARCHIVE LOG CURRENT[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]对当前[size=13px]redolog[backcolor=rgb(217, 217, 217)][size=13px] [color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]归档。
[size=13px]5>.[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]对新生成的尚未备份的归档文件进行备份。
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]在完成归档日志文件备份后,我们通过需要删除已备份过的归档文件[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]([color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]归档文件记录下了数据库进行过的所有操作,如果您的数据库操作频繁而且量大,那归档文件大小也是相当恐怖,备份后删除释放存储空间是相当有必要地[backcolor=rgb(217, 217, 217)][size=13px] [size=13px])[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]。[size=13px]RMAN[backcolor=rgb(217, 217, 217)][size=13px] [color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]提供了[size=13px]DELETE ALL INPUT[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]参数,加在[backcolor=rgb(217, 217, 217)][size=13px] [size=13px]BACKUP[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]命令后,则会在完成备份后自动删除归档目录中已备份的归档日志。
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]完成备份之后,可以通过下列命令查看已备份的归档日志片段:
[size=13px]RMAN> LIST BACKUP OF ARCHIVELOG ALL;
[color=rgb(1, 1, 1)][size=13px]建立增量备份
[color=rgb(1, 1, 1)][size=13px]如果数据库运行于不归档模式下,那么你只能在数据库干净关闭的情况下[size=13px] [size=13px]([color=rgb(1, 1, 1)][size=13px]以[size=13px]NORMAL[size=13px] [color=rgb(1, 1, 1)][size=13px]、[size=13px]IMMEDIATE[color=rgb(1, 1, 1)][size=13px]、[size=13px] [size=13px]TRANSACTIONAL[color=rgb(1, 1, 1)][size=13px]方式关闭[size=13px])[size=13px] [color=rgb(1, 1, 1)][size=13px]才能进行一致性的增量备份,如果数据库运行于归档模式下,那即可以在数据库关闭状态进行,也可以在数据库打开状态进行备份。再次说明了打开归档模式的优势,归档日志也就是多占些磁盘空间,好处不是一些是很多,可是也相当于又给数据库加了层保险.
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)][size=13px]建立增量备份也是相当简单,实质就是一个参数[size=13px] [size=13px]INCREMENTAL LEVEL=n[color=rgb(1, 1, 1)][size=13px],在执行[size=13px]BACKUP[size=13px] [color=rgb(1, 1, 1)][size=13px]命令时加上即可,例如,建立一个增量级别[size=13px] [size=13px]0[color=rgb(1, 1, 1)][size=13px]的全库备份:
[size=13px]RMAN> BACKUP INCREMENTAL LEVEL=0 DATABASE;
[color=rgb(1, 1, 1)][size=13px]再例如,建立一个增量级别[size=13px] [size=13px]1[color=rgb(1, 1, 1)][size=13px]的[size=13px]users01.dbf[size=13px] [color=rgb(1, 1, 1)][size=13px]数据文件备份
[size=13px]RMAN> BACKUP INCREMENTAL LEVEL=1 TABLESPACE SYSTEM DATAFILE 'F:\ORAHOME1\ORADATA\JSSWEB\USERS01.DBF';
[color=rgb(1, 1, 1)][size=13px]注:[size=13px]Rman[size=13px] [color=rgb(1, 1, 1)][size=13px]默认创建的增量备份是[size=13px] [size=13px]Differential(备份上一次备份后改变的数据[size=13px])[color=rgb(1, 1, 1)][size=13px]方式,如果要建立[size=13px]Cumulative(备份自上次完全备份或累计备份之后数据库中变化了的信息[size=13px])[color=rgb(1, 1, 1)][size=13px]方式的增量备份,在执行[size=13px]BACKUP[color=rgb(1, 1, 1)][size=13px]命令时显式指定即可,例如:
[size=13px]RMAN> BACKUP INCREMENTAL LEVEL=2 CUMULATIVE DATABASE;
[table=98%,rgb(223, 223, 223)]
多级别增量备份
每一增量等级由0,1,2等整数来标识。0等级增量备份是后续增量的基础,拷贝所有的有数据的数据块。等级0备份与全备份的区别是全备份从来不包含增量策略。如果在进行等级备份的时候等级0的备份不存在,
rman会自动进行一个level 0的备份。
Level n增量备份(n>0):所有的自最近level n或更低级别的备份后改变的blocks;所有自最近level n-1或更低级别的备份后改变的blocks。
差异增量备份
在不同的level n增量备份中,rman备份自最近level n或更低的备份后改变过的所有blocks。默认为这种备份方式。
加增量备份
oracle提供构造在level1或者更高级别上的累积增量备份。在level n上的累积备份,rman备份所有自最近level n-1或更低备份后改变的所有blocks。累积备份需要更多的空间和时间。
[color=rgb(1, 1, 1)][size=13px]建立冗余备份
[size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]提供了一种更谨慎的备份策略: [size=13px]Duplexed[color=rgb(1, 1, 1)][size=13px]方式备份,其实质即是在生成备份集的同时,向指定位置生成指定份数 [size=13px]([color=rgb(1, 1, 1)][size=13px]最大不超过[size=13px]4[color=rgb(1, 1, 1)][size=13px]份 [size=13px])[color=rgb(1, 1, 1)][size=13px]的备份集复制,
[color=rgb(1, 1, 1)][size=13px]以避免在灾难性事故时数据库损坏和备份丢失的情况下导致完全崩溃,提高备份可用性。
[size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]中提供了三种方式实现 [size=13px]Duplexed[color=rgb(1, 1, 1)][size=13px]方式备份:
[size=13px]1[color=rgb(1, 1, 1)][size=13px]、在 [size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]中执行[size=13px]BACKUP [color=rgb(1, 1, 1)][size=13px]命令时显式指定 [size=13px]COPIES[color=rgb(1, 1, 1)][size=13px]参数。例如:
[size=13px]RMAN> BACKUP COPIES 3 DATABASE;
[color=rgb(1, 1, 1)][size=13px]上述命令将会在全库备份的同时,自动生成当前备份集的 [size=13px]2[color=rgb(1, 1, 1)][size=13px]份拷贝到默认备份目录。
[size=13px]2[color=rgb(1, 1, 1)][size=13px]、在 [size=13px]RUN[color=rgb(1, 1, 1)][size=13px]{}命令块中利用[size=13px]SET BACKUP COPIES[color=rgb(1, 1, 1)][size=13px]命令为该命令块中所有的 [size=13px]BACKUP[color=rgb(1, 1, 1)][size=13px]命令设置[size=13px]Duplexed [color=rgb(1, 1, 1)][size=13px]方式,例如:
[size=13px]RMAN> RUN{
[size=13px]2>SET BACKUP COPIES 2;
[size=13px]3>BACKUP DEVICE TYPE DISK FORMAT 'D:\BACKUP1\%U','D:\BACKUP2\%U'
[size=13px]4>TABLESPACE USERS,SALES;
[size=13px]5>}
[color=rgb(1, 1, 1)][size=13px]上述命令将生成两份备份集,分别存储到 [size=13px]d:\backup1[color=rgb(1, 1, 1)][size=13px]和[size=13px]d:\backup2 [color=rgb(1, 1, 1)][size=13px]目录。
[size=13px]3[color=rgb(1, 1, 1)][size=13px]、通过 [size=13px]CONFIGURE ..... BACKUP COPIES[color=rgb(1, 1, 1)][size=13px]命令设置预定义的备份[size=13px]Duplexed[color=rgb(1, 1, 1)][size=13px]方式。
[size=13px]CONFIGURE ... BACKUP COPIES[color=rgb(1, 1, 1)][size=13px]命令可以为指定的设备类型设置默认的备份拷贝数量。这个配置仅适用于数据文件与归档重做日志文件和备份,并且,
[color=rgb(1, 1, 1)][size=13px]只有在使用自动分配的通道时才能够使用 [size=13px]CONFIGURE ... BACKUP COPIES[color=rgb(1, 1, 1)][size=13px]命令设置的配置。例如:
[size=13px]RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;
[size=13px]RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE disk TO 2;
[size=13px]RMAN> CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE disk TO 2;
[color=rgb(1, 1, 1)][size=13px]上述命令将[size=13px]disk[color=rgb(1, 1, 1)][size=13px]设置上数据文件与归档文件的拷备数量设置为 [size=13px]2[color=rgb(1, 1, 1)][size=13px],当再执行[size=13px]BACKUP DATABASE[color=rgb(1, 1, 1)][size=13px]备份时,即会自动生成 [size=13px]2[color=rgb(1, 1, 1)][size=13px]份数据文件的备份集。
[size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]备份的保存策略:基于时间,和基于冗余数量
[color=rgb(1, 1, 1)][size=13px]为[size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]设置了备份保留策略之后,[size=13px] [size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]会自动判断哪些备份集或镜像复制文件不必再保留。这些备份文件将会被标记为“废弃[size=13px] [size=13px](Obsolete)[color=rgb(1, 1, 1)][size=13px]”,
[color=rgb(1, 1, 1)][size=13px]可以通过[size=13px]REPORT OBSOLETE[color=rgb(1, 1, 1)][size=13px]命令查看当前处于废弃状态的备份文件,或者通过[size=13px] [size=13px]DELETE OBSOLETE[color=rgb(1, 1, 1)][size=13px]命令删除这些废弃的备份。
[size=13px]RMAN> report obsolete; 报告已废弃的备份
[size=13px]delete obsolete;
[size=13px]在执行删除命令时有两点需要了解:
[size=13px] 如果被判断为废弃的备份是一个单独数据文件的镜像复制,那么在执行DELETE命令时将直接删除这个镜像复制文件。
[size=13px] 如果被判断为废弃的备份是一个备份集中的一部分,则必须等到整个备份集中所有其它文件都被废弃之后,才能删除这个备份集。
[size=13px]1[color=rgb(1, 1, 1)][size=13px]、基于时间的备份保留策略。
[color=rgb(1, 1, 1)][size=13px]说的简单些,就是你希望数据库最早能恢复到几天前。比如将恢复时间段设置为[size=13px] [size=13px]7[color=rgb(1, 1, 1)][size=13px],那么[size=13px]RMAN[size=13px] [color=rgb(1, 1, 1)][size=13px]所保留的备份即是可以保证你将数据库恢复到一周内任何时刻下那些文件。
[color=rgb(1, 1, 1)][size=13px]设置基于时间的备份保留策略可以通过[size=13px] [size=13px]CONFIGURE[color=rgb(1, 1, 1)][size=13px]命令,例如:
[size=13px]RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n DAYS;
[color=rgb(1, 1, 1)][size=13px]注:[size=13px]n=[size=13px] [color=rgb(1, 1, 1)][size=13px]大于[size=13px]0[color=rgb(1, 1, 1)][size=13px]的正整数
[color=rgb(1, 1, 1)][size=13px]执行该命令后,[size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]将始终保留那些将数据库恢复到[size=13px] [size=13px]n[color=rgb(1, 1, 1)][size=13px]天前的状态时需要用到的备份,比如,恢复时间段被设置为[size=13px] [size=13px]7[color=rgb(1, 1, 1)][size=13px]天,那么各个数据文件的备份必须满足如下条件:
[size=13px]SYSDATE-(SELECT CHECKPOINT_TIME FROM V$DATAFILE)>=7
[color=rgb(1, 1, 1)][size=13px]任何不满足上述条件的备份都将被[size=13px] [size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]废弃并可通过[size=13px]DELETE OBSOLETE[color=rgb(1, 1, 1)][size=13px]命令删除。
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)][size=13px]基于冗余数量的备份保留策略
[color=rgb(1, 1, 1)][size=13px]基于冗余数量实质即某个数据文件以各种形式(包括备份集和镜像复制)存在的备份的数量。如果某个数据文件的冗余备份数量超出了指定数量,[size=13px] [size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]将废弃最旧的备份。
[color=rgb(1, 1, 1)][size=13px]同样,基于数量的备份保留策略也是通过[size=13px] [size=13px]CONFIGURE[color=rgb(1, 1, 1)][size=13px]命令设置,例如:
[size=13px]RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n DAYS;
[color=rgb(1, 1, 1)][size=13px]同上:[size=13px]n=[size=13px] [color=rgb(1, 1, 1)][size=13px]大于[size=13px]0[color=rgb(1, 1, 1)][size=13px]的正整数
[color=rgb(1, 1, 1)][size=13px]你也可以通过下列命令设置成不采用任何备份保留策略:
[size=13px]RMAN> CONFIGURE RETENTION POLICY TO NONE;
[color=rgb(1, 1, 1)][size=13px]备份优化
[size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]中的备份优化[size=13px](Backup Optimization)[color=rgb(1, 1, 1)][size=13px]是指在备份过程中,如果满足特定条件,[size=13px] [size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]将自动跳过某些文件而不将它们包含在备份集中以节省时间和空间。
[size=13px]通常必须满足如下几个条件的情况下,才能够启用备份优化的功能:
[size=13px] CONFIGURE BACKUP OPTIMIZATION参数置为on;
[size=13px] 执行的BACKUP DATABASE或BACKUP ARCHIVELOG命令中带有ALL或LIKE参数。
[size=13px] 分配的通道仅使用了一种设备类型,也就是没有同时分配使用sbt与disk的多个通道。(sbt与disk就像一条是公路,一条是海路,而通道则相当于你选择了走公路之后,还得选择是走北三环,还是走北五环,还是两条一块走)
[size=13px]打开备份优化设置通过如下命令:
[size=13px]RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
[color=rgb(1, 1, 1)][size=13px]备份优化总结:理论上备份优化仅对于只读表空间或[size=13px] [size=13px]offline[color=rgb(1, 1, 1)][size=13px]表空间起作用。当然对于已经备份过的[size=13px] [size=13px]archivelog[color=rgb(1, 1, 1)][size=13px]文件,它也会跳过。
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)][size=13px]一、[size=13px] [size=13px]FORMAT[color=rgb(1, 1, 1)][size=13px]字符串替代变量
[color=rgb(1, 1, 1)][size=13px]使用[size=13px]FORMAT[size=13px] [color=rgb(1, 1, 1)][size=13px]参数时可使用的各种替换变量,如下:
[size=13px]%c[color=rgb(1, 1, 1)][size=13px]:备份片的拷贝数[size=13px] [size=13px]([color=rgb(1, 1, 1)][size=13px]从[size=13px]1[size=13px] [color=rgb(1, 1, 1)][size=13px]开始编号[size=13px] [size=13px])[color=rgb(1, 1, 1)][size=13px];
[size=13px]%d[color=rgb(1, 1, 1)][size=13px]:数据库名称;
[size=13px]%D[color=rgb(1, 1, 1)][size=13px]:位于该月中的天数[size=13px] [size=13px](DD)[color=rgb(1, 1, 1)][size=13px];
[size=13px]%M[color=rgb(1, 1, 1)][size=13px]:位于该年中的月份[size=13px] [size=13px](MM)[color=rgb(1, 1, 1)][size=13px];
[size=13px]%F[color=rgb(1, 1, 1)][size=13px]:一个基于[size=13px] [size=13px]DBID[size=13px] [color=rgb(1, 1, 1)][size=13px]唯一的名称[size=13px],[color=rgb(1, 1, 1)][size=13px]这个格式的形式为[size=13px] [size=13px]c-IIIIIIIIII-YYYYMMDD-QQ,[color=rgb(1, 1, 1)][size=13px]其中[size=13px]IIIIIIIIII[size=13px] [color=rgb(1, 1, 1)][size=13px]为该数据库的[size=13px] [size=13px]DBID[color=rgb(1, 1, 1)][size=13px],[size=13px]YYYYMMDD[size=13px] [color=rgb(1, 1, 1)][size=13px]为日期,[size=13px] [size=13px]QQ[size=13px] [color=rgb(1, 1, 1)][size=13px]是一个[size=13px]1-256[size=13px] [color=rgb(1, 1, 1)][size=13px]的序列;
[size=13px]%n[color=rgb(1, 1, 1)][size=13px]:数据库名称,并且会在右侧用[size=13px] [size=13px]x[color=rgb(1, 1, 1)][size=13px]字符进行填充,使其保持长度为[size=13px] [size=13px]8[color=rgb(1, 1, 1)][size=13px];
[size=13px]%u[color=rgb(1, 1, 1)][size=13px]:是一个由备份集编号和建立时间压缩后组成的[size=13px] [size=13px]8[color=rgb(1, 1, 1)][size=13px]字符名称。利用[size=13px]%u[color=rgb(1, 1, 1)][size=13px]可以为每个备份集生成一个唯一的名称;
[size=13px]%p[color=rgb(1, 1, 1)][size=13px]:表示备份集中备份片段的编号,从[size=13px] [size=13px]1[size=13px] [color=rgb(1, 1, 1)][size=13px]开始编号;
[size=13px]%U[color=rgb(235, 40, 115)][size=13px]:是 [size=13px]%u_%p_%c[color=rgb(235, 40, 115)][size=13px]的简写形式,利用它可以为每一个备份片段(即磁盘文件)生成一个唯一名称,这是最常用的命名方式;
[size=13px]%s[color=rgb(1, 1, 1)][size=13px]:备份集的号;
[size=13px]%t[color=rgb(1, 1, 1)][size=13px]:备份集时间戳;
[size=13px]%T[color=rgb(1, 1, 1)][size=13px]:年月日格式[size=13px] [size=13px](YYYYMMDD)[color=rgb(1, 1, 1)][size=13px];[size=13px]s
[color=rgb(1, 1, 1)][size=13px]注:如果在[size=13px] [size=13px]BACKUP[color=rgb(1, 1, 1)][size=13px]命令中没有指定[size=13px]FORMAT[color=rgb(1, 1, 1)][size=13px]选项,则[size=13px] [size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]默认使用[size=13px]%U[size=13px] [color=rgb(1, 1, 1)][size=13px]为备份片段命名。
[color=rgb(1, 1, 1)][size=13px]把某条更改过的配置再置为初始应该怎么办呢,很简单,用如下命令:[size=13px] [size=13px]CONFIGURE ... CLEAR;[color=rgb(1, 1, 1)][size=13px]例如:
[size=13px]RMAN> [size=13px]CONFIGURE RETENTION POLICY CLEAR [size=13px];
[size=13px]1[color=rgb(1, 1, 1)][size=13px]、[size=13px]CONFIGURE RETENTION POLICY[size=13px] [color=rgb(1, 1, 1)][size=13px]配置备份保留策略
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]两种保留策略:
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]基于时间:
[size=13px]CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n DAYS;
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]基于冗余数量:
[size=13px]CONFIGURE RETENTION POLICY TO REDUNDANCY n;
[color=rgb(1, 1, 1)][backcolor=rgb(217, 217, 217)][size=13px]也可以取消备份保留策略:
[size=13px]CONFIGURE RETENTION POLICY TO NONE;
[size=13px]CONFIGURE BACKUP OPTIMIZATION[color=rgb(1, 1, 1)][size=13px]配置备份优化
[color=rgb(1, 1, 1)][size=13px]备份优化,包括[size=13px] [size=13px]OFF[color=rgb(1, 1, 1)][size=13px]和[size=13px]ON[size=13px] [color=rgb(1, 1, 1)][size=13px]两个状态
[color=rgb(1, 1, 1)][size=13px]打开备份优化:
[size=13px]CONFIGURE BACKUP OPTIMIZATION ON;
[color=rgb(1, 1, 1)][size=13px]关闭备份优化:
[size=13px]CONFIGURE BACKUP OPTIMIZATION OFF;
[size=13px]CONFIGURE DEFAULT DEVICE TYPE[size=13px] [color=rgb(1, 1, 1)][size=13px]配置[size=13px]IO[size=13px] [color=rgb(1, 1, 1)][size=13px]设备类型
[size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]支持的[size=13px] [size=13px]IO[color=rgb(1, 1, 1)][size=13px]设备类型有两种:磁盘[size=13px](DISK)[color=rgb(1, 1, 1)][size=13px]和磁带[size=13px] [size=13px](SBT)[color=rgb(1, 1, 1)][size=13px],默认情况下为磁盘。
[color=rgb(1, 1, 1)][size=13px]使用磁盘设备:
[size=13px]CONFIGURE DEFAULT DEVICE TYPE TO DISK;
[color=rgb(1, 1, 1)][size=13px]使用磁带设置:
[size=13px]CONFIGURE DEFAULT DEVICE TYPE TO SBT;
[color=rgb(1, 1, 1)][size=13px]在这里需要注意的一点是:如果[size=13px] [size=13px]IO[color=rgb(1, 1, 1)][size=13px]设备发生变化,相关配置项也需要修改。例如:
[size=13px]RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
[size=13px]4[color=rgb(1, 1, 1)][size=13px]、[size=13px]CONFIGURE CONTROLFILE AUTOBACKUP[size=13px] [color=rgb(1, 1, 1)][size=13px]配置控制文件自动备份
[color=rgb(1, 1, 1)][size=13px]是否自动备份,包含两个状态:[size=13px] [size=13px]OFF[color=rgb(1, 1, 1)][size=13px]和[size=13px]ON
[color=rgb(1, 1, 1)][size=13px]打开自动备份
[size=13px]CONFIGURE CONTROLFILE AUTOBACKUP ON
[color=rgb(1, 1, 1)][size=13px]禁止自动备份
[size=13px]CONFIGURE CONTROLFILE AUTOBACKUP OFF
[color=rgb(1, 1, 1)][size=13px]同时可以通过如下配置指定备份的控制格式,路径。例如:
[size=13px]CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:/backup/%F';
[color=rgb(1, 1, 1)][size=13px]在备份期间,将产生一个控制文件的快照,用于控制文件的读一致性,这个快照可以通过如下配置:
[size=13px]CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:/BACKUP/SNCFJSSWEB.ORA';
[size=13px]CONFIGURE DEVICE TYPE[size=13px] [color=rgb(1, 1, 1)][size=13px]设置并行备份
[size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]支持并行备份与恢复,也可以在配置中指定默认的并行程度。例如:
[size=13px]CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
[color=rgb(1, 1, 1)][size=13px]指定在以后的备份与恢复中,将采用并行度为[size=13px] [size=13px]2[color=rgb(1, 1, 1)][size=13px],同时开启[size=13px]2[color=rgb(1, 1, 1)][size=13px]个通道进行备份与恢复,当然也可以在[size=13px] [size=13px]run[color=rgb(1, 1, 1)][size=13px]中指定通道来决定备份与恢复的并行程度。
[color=rgb(1, 1, 1)][size=13px]并行的数目决定了开启通道的个数。[color=rgb(235, 40, 115)][size=13px]如果指定了通道配置,将采用指定的通道,如果没有指定通道,将采用默认通道配置。
[color=rgb(1, 1, 1)][size=13px]默认情况下,自动分配通道的并行度为[size=13px] [size=13px]1[color=rgb(1, 1, 1)][size=13px],如果你通过设置[size=13px]PARALLELISM[color=rgb(1, 1, 1)][size=13px]设置了并行通道为[size=13px] [size=13px]2[color=rgb(1, 1, 1)][size=13px],那么在[size=13px]run[size=13px] [color=rgb(1, 1, 1)][size=13px]块中,如果你没有单独通过[size=13px] [size=13px]ALLOCATE CHANNEL[color=rgb(1, 1, 1)][size=13px]命令指定通道,它会默认使用[size=13px] [size=13px]2[color=rgb(1, 1, 1)][size=13px]条并行通道,[color=rgb(235, 40, 115)][size=13px]如果你在[size=13px]run[color=rgb(235, 40, 115)][size=13px]命令块中指定了数个 [size=13px]ALLOCATE CHANNEL[color=rgb(235, 40, 115)][size=13px],那么[size=13px]rman[color=rgb(235, 40, 115)][size=13px] 在执行备份命令时会以你设置的 [size=13px]channel[color=rgb(235, 40, 115)][size=13px]为准,而不管[size=13px]configure[color=rgb(235, 40, 115)][size=13px]中配置了多少个并行通道[color=rgb(1, 1, 1)][size=13px]。需要注意的一点是,在[size=13px] [size=13px]backup[color=rgb(1, 1, 1)][size=13px]命令中有一个[size=13px]FILESPERSET[color=rgb(1, 1, 1)][size=13px]参数,该参数是指[size=13px] [size=13px]rman[color=rgb(1, 1, 1)][size=13px]建立的每个备份集中所能包含的备份片段[size=13px] [size=13px]([color=rgb(1, 1, 1)][size=13px]即磁盘文件[size=13px])[color=rgb(1, 1, 1)][size=13px]的最大数,该参数默认值为[size=13px] [size=13px]64[color=rgb(1, 1, 1)][size=13px],如果在执行[size=13px]backup[color=rgb(1, 1, 1)][size=13px]命令时没有指定该参数值,那么[size=13px] [size=13px]rman[color=rgb(1, 1, 1)][size=13px]会仅使用第一个通道来执行备份,其它通道将处于空闲状态。关于通道数与[size=13px] [size=13px]FILESPERSET[color=rgb(1, 1, 1)][size=13px]值之间也有一个大小关系,逻辑稍显复杂这些就不多废话了,总之一条,[size=13px] [size=13px]filesperset[color=rgb(1, 1, 1)][size=13px]值不要小于你设定的通道数。
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)]
[size=13px]CONFIGURE DATAFILE BACKUP COPIES[size=13px] [color=rgb(1, 1, 1)][size=13px]设置备份文件冗余度
[color=rgb(1, 1, 1)]
[size=13px]CONFIGURE MAXSETSIZE[size=13px] [color=rgb(1, 1, 1)][size=13px]配置备份集的最大尺寸
[color=rgb(1, 1, 1)][size=13px]该配置限制通道上备份集的最大尺寸。单位支持[size=13px] [size=13px]bytes,K,M,G[color=rgb(1, 1, 1)][size=13px]。默认值是[size=13px]unlimited[color=rgb(1, 1, 1)][size=13px]。
[color=rgb(1, 1, 1)]
[size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]备份相关的动态性能表
[list]
[*]V$ARCHIVED_LOG[font=Wingdings] :本视图包含了所有归档重做日志文件的创建情况,备份情况以及其他信息。
[*]V$BACKUP_CORRUPTION[font=Wingdings] :这个视图显示了[font=Wingdings] RMAN在哪些备份集中发现了损坏的数据坏。在你使用[font=Wingdings] BACKUP VALIDATE命令对备份集进行检查时如果发现了损坏的数据块,[font=Wingdings] RMAN将在这个视图中写入记录。
[*]V$COPY_CORRUPTIO[font=Wingdings] :本视图显示了哪些镜像复制备份文件已经被损坏。
[*]V$BACKUP_DATAFILE[font=Wingdings] :本视图通常用来获取每个数据文件中非空白数据块的数量,从而帮助你创建出大小基本相等的备份集。另外,在视图中也包含了数据文件中损坏的数据块的信息。
[*]V$BACKUP_REDOLOG[font=Wingdings] :本视图显示了在现有的备份集中有哪些归档重做日志文件。
[*]V$BACKUP_SET[font=Wingdings] :本视图显示了已经创建的备份集的信息。
[*]V$BACKUP_PIECE[font=Wingdings] :本视图显示了已经创建的备份片段的信息。
[color=rgb(1, 1, 1)][size=13px]可以通过如下[size=13px] [size=13px]SQL[color=rgb(1, 1, 1)][size=13px]语句获得正在进行的镜像复制操作的状态信息:
[size=13px]Select[size=13px] [size=13px]sid,
[size=13px] serial#,
[size=13px] [size=13px] [size=13px]context[size=13px],
[size=13px] sofar,
[size=13px] totalwork,
[size=13px] round(sofar / totalwork *[size=13px] [size=13px]100[size=13px],[size=13px] [size=13px]2[size=13px] [size=13px]) "% Complete"
[size=13px] [size=13px] [size=13px]From[size=13px] [size=13px]v$session_longops
[size=13px] [size=13px]where[size=13px] [size=13px]opname[size=13px] [size=13px]like[size=13px] [size=13px]'RMAN:%'
[size=13px] [size=13px] [size=13px]and[size=13px] [size=13px]opname[size=13px] [size=13px]not[size=13px] [size=13px]like[size=13px] [size=13px]'RMAN:aggregate%';
[color=rgb(1, 1, 1)][size=13px]通过如下[size=13px] [size=13px]SQL[color=rgb(1, 1, 1)][size=13px]获得[size=13px]rman[size=13px] [color=rgb(1, 1, 1)][size=13px]用来完成备份操作的服务进程的[size=13px] [size=13px]SID[color=rgb(1, 1, 1)][size=13px]与[size=13px]SPID[size=13px] [color=rgb(1, 1, 1)][size=13px]信息:
[size=13px]Select[size=13px] [size=13px]sid, spid, client_info
[size=13px] [size=13px] [size=13px]from[size=13px] [size=13px]v$process p, v$session s
[size=13px] [size=13px]where[size=13px] [size=13px]p.addr = s.paddr
[size=13px] [size=13px] [size=13px]and[size=13px] [size=13px]client_info[size=13px] [size=13px]like[size=13px] [size=13px]'%id=rman%';
RMAN备份实例1:
1[color=rgb(166, 44, 196)]、每天夜间 1[color=rgb(166, 44, 196)]点执行;
2[color=rgb(166, 44, 196)]、数据库全备,同时备份控制文件及归档日志文件,备份文件保存至: D:\backup\[color=rgb(166, 44, 196)]目录下,并在完成归档日志文件备份后,自动删除已备份的归档日志;
3[color=rgb(166, 44, 196)]、备份保留 7[color=rgb(166, 44, 196)]天,过期则自动删除;
4[color=rgb(166, 44, 196)]、保留操作日志备查;
[color=rgb(166, 44, 196)]
[size=13px]1[color=rgb(1, 1, 1)][size=13px]、编写[size=13px]rman [color=rgb(1, 1, 1)][size=13px]批处理文件
[color=rgb(1, 1, 1)][size=13px]保存至:/home/[size=13px]oracleScript/backup/database_backup_inthdb.rman
[size=13px]RUN {
[size=13px] CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
[size=13px] CONFIGURE CONTROLFILE AUTOBACKUP ON;
[size=13px] CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/backup/%F';
[size=13px] ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT '/home/oracle/backup/%U';
[size=13px] BACKUP DATABASE SKIP INACCESSIBLE FILESPERSET 10
[size=13px] PLUS ARCHIVELOG FILESPERSET 20
[size=13px] DELETE ALL INPUT;
[size=13px] RELEASE CHANNEL CH1;
[size=13px] }
[size=13px] ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
[size=13px] CROSSCHECK BACKUPSET;
[size=13px] DELETE NOPROMPT OBSOLETE;
[size=13px]SKIP INACCESSIBLE[color=rgb(1, 1, 1)][size=13px]:表示跳过不可读的文件。我们知道一些[size=13px] [size=13px]offline[color=rgb(1, 1, 1)][size=13px]的数据文件只要存在于磁盘上就仍然可被读取,但是可能有些文件已经被删除或移到它处造成不可读,加上这个参数就会跳过这些文件;
[size=13px]SKIP OFFLINE[color=rgb(1, 1, 1)][size=13px]:跳过[size=13px] [size=13px]offline[color=rgb(1, 1, 1)][size=13px]的数据文件;
[size=13px]SKIP READONLY[color=rgb(1, 1, 1)][size=13px]:跳过那些所在表空间为[size=13px] [size=13px]read-only[color=rgb(1, 1, 1)][size=13px]的数据文件;
[size=13px]2.编写脚本:
[color=rgb(1, 1, 1)][size=13px]保存至:/home/[size=13px]oracleScript/backup/database_backup_inthdb.sh
[color=rgb(1, 1, 1)][size=13px]设定要备份的数据库[size=13px]sid[color=rgb(1, 1, 1)][size=13px]为[size=13px] [size=13px]inthdb[color=rgb(1, 1, 1)] [color=rgb(1, 1, 1)][size=13px],将日志按照日期输出到[size=13px] /home/[size=13px]oracleScript/backup/logs/[color=rgb(1, 1, 1)] [color=rgb(1, 1, 1)][size=13px]目录。
[size=13px]set oracle_sid=inthdb
[size=13px]rman target / msglog [size=13px]/home/[size=13px]oracleScript/backup/logs/[color=rgb(1, 1, 1)][size=13px]%date:~0,10%.log cmdfile=/home/[size=13px]oracleScript/backup/database_backup_inthdb.rman
[size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]通道:
[size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]通道实质是一个到存储设备的数据流,在[size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]中可以通过手动方式或自动方式分配通道。
[size=13px]1[color=rgb(1, 1, 1)][size=13px]、手工分配通道
[color=rgb(1, 1, 1)][size=13px]在执行[size=13px]BACKUP[size=13px] [color=rgb(1, 1, 1)][size=13px]、[size=13px]RESTORE[color=rgb(1, 1, 1)][size=13px]、[size=13px] [size=13px]DELETE[color=rgb(1, 1, 1)][size=13px]等需要进行磁盘[size=13px]I/O[color=rgb(1, 1, 1)][size=13px]操作的命令时,可以将它们与[size=13px] [size=13px]ALLOCATE CHANNEL[color=rgb(1, 1, 1)][size=13px]命令放在一个[size=13px]RUN[color=rgb(1, 1, 1)][size=13px]的命令块中,利用[size=13px] [size=13px]ALLOCATE CHANNEL[color=rgb(1, 1, 1)][size=13px]为它们分配通道。例如:
[size=13px]RUN{
[size=13px]ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT '/home/backup/%U';
[size=13px]BACKUP DATAFILE 'F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA';
[size=13px]}
[color=rgb(1, 1, 1)][size=13px]需要注意的是,[size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]中执行的每一条[size=13px] [size=13px]BACKUP[color=rgb(1, 1, 1)][size=13px]、[size=13px]DELETE[size=13px] [color=rgb(1, 1, 1)][size=13px]等命令都至少要求使用一个通道,通道数决定了这些操作执行的并行度。
[size=13px]2[color=rgb(1, 1, 1)][size=13px]、自动分配通道
[color=rgb(1, 1, 1)][size=13px]如果没有使用手工分配通道,那么[size=13px] [size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]在执行[size=13px]BACKUP[size=13px] [color=rgb(1, 1, 1)][size=13px]等操作[size=13px]I/O[color=rgb(1, 1, 1)][size=13px]的命令时将会使用预定义配置[size=13px] [size=13px](configure [size=13px])[color=rgb(1, 1, 1)][size=13px]中的设置来自动分配通道。
[color=rgb(1, 1, 1)][size=13px]下列预定义配置命令均可以分配通道:
[list]
[*]CONFIGURE DEVICE TYPE ... PARALLELISM
[*]CONFIGURE DEFAULT DEVICE TYPE
[*]CONFIGURE CHANNEL DEVICE TYPE
[*]CONFIGURE CHANNEL n DEVICE TYPE[font=Wingdings]
[*][font=Wingdings]
RMAN备份类型
[*]利用RMAN进行备份时,可以通过三种方式来对RMAN的备份做分类
[*] 完全备份(Full Backup)与增量备份(Incremental Backup)
[*]全备与增备是针对数据文件而言,控制文件和归档日志文件不能进行增量备份。当然,后两者可以做备份优化。
[*]
[*] 打开备份(Open Backup)或关闭备份(Closed Backup)
[*]数据库打开状态下进行备份即是打开备份,数据库关闭状态下(加载状态)进行的备份即关闭备份。
[*]
[*] 一致备份(Consistent Backup)与不一致备份(Inconsistent Backup)
[*]数据库打开状态或不干净关闭状态(shutdown abort)进行的备份是不一致备份,利用不一致的备份修复数据库后还需要做数据库的恢复。[font=Wingdings]
在数据库干净关闭状态进行的备份是一致备份,利用一致备份修复数据库后不需要做数据库的恢复。[font=Wingdings]
[*]
[*][font=Wingdings]
增量备份的工作机制
所谓增量备份,顾名思义即是每次备份仅操作那些发生了 "变化" 的数据块。 RMAN中增量备份有两种:Differential方式和 Cumulative方式。
backup命令在不显式指定的情况下,默认会选择 Differential.
[*]
[*]
备份集概述
备份集由RMAN 创建的具有特定格式的逻辑备份对象,一个备份集中可能包含多个数据库文件(包括数据文件,控制文件和归档日志文件)。 RMAN中通过BACKUP 命令建立备份集。
一个备份集是由多个备份片段组成,每个备份片段即是一个物理文件。
[*]
RMAN恢复目录(CATALOG)
如果能用恢复目录还是推荐使用恢复目录,恢复目录实际上也是一个数据库,一般独立于目标数据库。因为它自己就是个数据库,所以一个恢复目录可以同时被多个目录数据库使用。
能保留更多的历史备份信息
·一个恢复目录能管理与备份多个目标数据库
·如果没有恢复目录,而且发生了结构上的改变,时间点的恢复需要小心操作
·能存储备份与恢复的脚本
[size=13px]Oracle[color=rgb(1, 1, 1)][size=13px]数据库的恢复实际上包含了两个概念:数据库修复[size=13px] [size=13px](RESTORE)[color=rgb(1, 1, 1)][size=13px]与数据库恢复[size=13px](RECOVER)[color=rgb(1, 1, 1)][size=13px]:
[color=rgb(1, 1, 1)][size=13px] 数据库修复:[color=rgb(1, 1, 1)] [color=rgb(1, 1, 1)][size=13px]是指利用备份的数据库文件来替换已经损坏的数据库文件或者将其恢复到一个新的位置。[size=13px] [size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]在进行修复操作时,会利用恢复目录[size=13px] [size=13px]([color=rgb(1, 1, 1)][size=13px]没有建立恢复目录的话就使用目标数据库的控制文件[size=13px] [size=13px])[color=rgb(1, 1, 1)][size=13px]来获取备份信息,并从中选择最合适的备份进行修复操作。选择备份时有两个原则[size=13px] [size=13px](1[color=rgb(1, 1, 1)][size=13px]、选择距离恢复目录时刻最近;[size=13px] [size=13px]2[color=rgb(1, 1, 1)][size=13px]、优先选择镜像复制,其次才是备份集[size=13px] [size=13px])
[color=rgb(1, 1, 1)][size=13px] 数据库恢复:[color=rgb(1, 1, 1)] [color=rgb(1, 1, 1)][size=13px]是指利用重做日志或增量备份来重建丢失的数据。
[color=rgb(1, 1, 1)][size=13px]在对目标数据库做任何形式的修复或者恢复之前,目标数据库必须处于加载状态,恢复指定数据文件时,也可以在打开状态下恢复.
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)][size=13px]一、对数据库进行完全介质恢复
[color=rgb(1, 1, 1)][size=13px] 过程有三个步骤:
[color=rgb(1, 1, 1)][size=13px] [size=13px] [size=13px]1[color=rgb(1, 1, 1)][size=13px]、启动数据库到加载状态
[size=13px]RMAN> SHUTDOWN IMMEDIATE;
[size=13px]RMAN> STARTUP MOUNT;
[color=rgb(1, 1, 1)][size=13px] [size=13px] [size=13px]2[color=rgb(1, 1, 1)][size=13px]、执行恢复操作[size=13px]([color=rgb(1, 1, 1)][size=13px]记的我们刚说过的,恢复分两步,有先有后的。[size=13px] [size=13px])
[color=rgb(1, 1, 1)][size=13px] [size=13px] [size=13px]RMAN> RESTORE DATABASE;
[color=rgb(1, 1, 1)][size=13px] [size=13px] [size=13px]RMAN> RECOVER DATABASE DELETE ARCHIVELOGS SKIP TABLESPACE TEMP;
[color=rgb(1, 1, 1)][size=13px] 注意:[size=13px] [size=13px]DELETE ARCHIVELOGS[color=rgb(1, 1, 1)][size=13px]和[size=13px]SKIP TABLESPACE[size=13px] [color=rgb(1, 1, 1)][size=13px]两个参数是可选择的,作用如下:
[color=rgb(1, 1, 1)][size=13px] [size=13px] [size=13px]DELETE ARCHIVELOGS[color=rgb(1, 1, 1)][size=13px]:表示[size=13px]RMAN[size=13px] [color=rgb(1, 1, 1)][size=13px]将在完成恢复过程后自动删除那些在恢复过程中修复的归档日志文件。
[color=rgb(1, 1, 1)][size=13px] [size=13px] [size=13px]SKIP TABLESPACE[color=rgb(1, 1, 1)][size=13px]:跳过指定表空间,比如临时表,当然临时表空间即使你不跳过它也不会恢复的。
[color=rgb(1, 1, 1)][size=13px] [size=13px] [size=13px]3[color=rgb(1, 1, 1)][size=13px]、打开数据库
[color=rgb(1, 1, 1)][size=13px] [size=13px] [size=13px]RMAN> ALTER DATABASE OPEN;
[color=rgb(1, 1, 1)][size=13px] 此处需要注意的一点是,如果你的数据库并非处于归档模式,那么必须使用[size=13px] [size=13px]ALTER DATABASE OPEN RESETLOGS[color=rgb(1, 1, 1)][size=13px]来打开数据库,因为[size=13px] [size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]会认为在非归档模式下是一个不一致的备份,执行[size=13px] [size=13px]resetlogs[color=rgb(1, 1, 1)][size=13px]之后,[size=13px]oracle[size=13px] [color=rgb(1, 1, 1)][size=13px]将会把[size=13px]scn[color=rgb(1, 1, 1)][size=13px]重新置为[size=13px] [size=13px]0[color=rgb(1, 1, 1)][size=13px]。
[color=rgb(1, 1, 1)][size=13px]恢复表空间
[color=rgb(1, 1, 1)][size=13px]同样也可以分成三个步骤:
[color=rgb(1, 1, 1)][size=13px] [size=13px] [size=13px]1[color=rgb(1, 1, 1)][size=13px]、启动数据库到加载状态
[size=13px]RMAN> SHUTDOWN IMMEDIATE;
[size=13px]RMAN> STARTUP MOUNT;
[size=13px]2[color=rgb(1, 1, 1)][size=13px]、进行恢复操作,在恢复之前,如果需要被恢复的表空间未处于脱机状态,需要通过[size=13px] [size=13px]alter tablespace ... Offline[color=rgb(1, 1, 1)][size=13px]语句将其置为脱机:
[size=13px]RMAN> SQL 'ALTER TABLESPACE jweb OFFLINE IMMEDIATE';
[size=13px]RMAN> RESTORE TABLESPACE jweb;
[size=13px]RMAN> RECOVER TABLESPACE jweb;
[size=13px]RMAN> SQL 'ALTER TABLESPACE jweb ONLINE';
[color=rgb(1, 1, 1)][size=13px] [size=13px] [size=13px]3[color=rgb(1, 1, 1)][size=13px]、打开数据库
[color=rgb(1, 1, 1)][size=13px] [size=13px] [size=13px]RMAN> ALTER DATABASE OPEN;
[color=rgb(1, 1, 1)][size=13px]恢复数据文件
[color=rgb(1, 1, 1)][size=13px]事实上,恢复表空间实际就是恢复其所对应的数据文件[size=13px] [size=13px]([color=rgb(1, 1, 1)][size=13px]一个表空间可能对应多个数据文件[size=13px] [size=13px])[color=rgb(1, 1, 1)][size=13px],所以步骤与上相似。
[color=rgb(1, 1, 1)][size=13px] [size=13px] [size=13px]1[color=rgb(1, 1, 1)][size=13px]、启动数据库到加载状态
[size=13px]RMAN> SHUTDOWN IMMEDIATE;
[size=13px]RMAN> STARTUP MOUNT;
[size=13px]2[color=rgb(1, 1, 1)][size=13px]、进行恢复操作,在恢复之前,如果需要被恢复的表空间未处于脱机状态,需要通过[size=13px] [size=13px]alter tablespace ... Offline[color=rgb(1, 1, 1)][size=13px]语句将其置为脱机,操作数据文件时可以直接指定数据文件,也可以以数据文件序号代替:
[size=13px]RMAN>SQL 'ALTER DATABASE DATAFILE 10 OFFLINE;
[size=13px]RMAN> RESTORE DATAFILE 10;
[size=13px]RMAN> RECOVER DATAFILE 10;
[size=13px]RMAN>SQL ' ALTER DATABASE DATAFILE 10 ONLINE;
[color=rgb(1, 1, 1)][size=13px] [size=13px] [size=13px]3[color=rgb(1, 1, 1)][size=13px]、打开数据库
[color=rgb(1, 1, 1)][size=13px] [size=13px] [size=13px]RMAN> ALTER DATABASE OPEN;
[color=rgb(1, 1, 1)][size=13px]示例:归档模式下,假设某数据文件丢失,恢复该数据文件:
[color=rgb(1, 1, 1)][size=13px]1.rman全量备份
[color=rgb(1, 1, 1)][size=13px]2.select instance_name,status from v$instance; 看看当前数据库状态,应该是处于[size=13px] [size=13px]mount
[size=13px]3.[color=rgb(1, 1, 1)][size=13px]RMAN>[size=13px] [color=rgb(1, 1, 1)][size=13px]restore datafile 'F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA';
[color=rgb(1, 1, 1)][size=13px]4.RMAN>[size=13px] [color=rgb(1, 1, 1)][size=13px]recover datafile 'F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA';
[color=rgb(1, 1, 1)][size=13px]5.[color=rgb(1, 1, 1)][size=13px]RMAN>[size=13px] [color=rgb(1, 1, 1)][size=13px]alter database open;
[color=rgb(1, 1, 1)][size=13px]用来查询数据文件,临时文件与表空间对应及数据文件序号:
[size=13px]select[size=13px] [size=13px]ts.tablespace_name, df.file_name, df.file_id, tf.file_name [size=13px]from[size=13px] [size=13px]dba_tablespaces ts, dba_data_files df, dba_temp_files tf
[size=13px] [size=13px]where[size=13px] [size=13px]ts.tablespace_name = df.tablespace_name(+)
[size=13px] [size=13px] [size=13px]and[size=13px] [size=13px]ts.tablespace_name = tf.tablespace_name(+);
[color=rgb(1, 1, 1)][size=13px]示例:归档模式下,控制文件丢失情况下的恢复:
[color=rgb(1, 1, 1)]
[color=rgb(1, 1, 1)][size=13px]在应用备份恢复时,必须知道目标数据库的[size=13px] [size=13px]DBID[color=rgb(1, 1, 1)][size=13px],有多种方式可查,比如我们创建自动备份时,如果没有更改其命名方式,文件名中会包含[size=13px] [size=13px]DBID[color=rgb(1, 1, 1)][size=13px];或者查看之前的[size=13px]rman[color=rgb(1, 1, 1)][size=13px]备份日志,其中登陆到[size=13px] [size=13px]rman[color=rgb(1, 1, 1)][size=13px]之后会显示出目标数据库的[size=13px] [size=13px]DBID.
[size=13px]RMAN> [size=13px]set dbid 3391142503
[size=13px]RMAN> [size=13px]restore controlfile from 'd:\backup\C-3391142503-20070718-04';
[size=13px]########[color=rgb(1, 1, 1)][size=13px]如果打开了自动备份,通过[size=13px] [size=13px]restore controlfile from autobackup[size=13px] [color=rgb(1, 1, 1)][size=13px]也可以
[color=rgb(1, 1, 1)]
[size=13px]########[color=rgb(1, 1, 1)][size=13px]不过需要注意,如果以前修改过[size=13px] [size=13px]AUTOBACKUP[color=rgb(1, 1, 1)][size=13px]的格式和路径,那么在恢复之前需要进行重新设置指明自动备份所在路径。不然[size=13px] [size=13px]RMAN[color=rgb(1, 1, 1)][size=13px]有可能会找不着自动备份的文件哟
[color=rgb(1, 1, 1)]
[size=13px]RMAN> [size=13px]sql 'alter database mount';
[size=13px]RMAN> [size=13px]restore database;
[size=13px]RMAN> [size=13px]recover database;
[size=13px]RMAN> [size=13px]sql 'alter database open resetlogs';
[size=13px]######[color=rgb(1, 1, 1)][size=13px]由于使用备份的控制文件恢复,该文件内不包含目标数据库[size=13px] [size=13px]redologs[color=rgb(1, 1, 1)][size=13px]和数据文件头部[size=13px]scn[color=rgb(1, 1, 1)][size=13px]信息,所以必须通过[size=13px] [size=13px]resetlogs[color=rgb(1, 1, 1)][size=13px]方式[size=13px]open[size=13px] [color=rgb(1, 1, 1)][size=13px]。
[color=rgb(1, 1, 1)][size=13px]注意,11g之前的版本恢复之后表忘了重建临时表空间。另外,由于[size=13px] [size=13px]resetlogs[color=rgb(1, 1, 1)][size=13px],建议立即对数据库进行一次完全备份
[color=rgb(1, 1, 1)][size=21px]恢复到异机
[color=rgb(1, 1, 1)][size=13px]准备工作:
[size=13px]1[color=rgb(1, 1, 1)][size=13px]、记录下源数据库的[size=13px]DBID[color=rgb(1, 1, 1)][size=13px],[size=13px] [size=13px]DBID[color=rgb(1, 1, 1)][size=13px]的获取方式上节讲过的。
[size=13px]2[color=rgb(1, 1, 1)][size=13px]、将源数据库的初始化参数文件,拷贝到目标服务器上。
[size=13px]3[color=rgb(1, 1, 1)][size=13px]、确认备份[size=13px]([color=rgb(1, 1, 1)][size=13px]含控制文件,数据文件,归档文件[size=13px] [size=13px])[color=rgb(1, 1, 1)][size=13px]有效,并已拷贝至目标服务器[size=13px] [size=13px]([color=rgb(1, 1, 1)][size=13px]没归档应该也可以,只要能确认数据文件和控制文件是一致备份。[size=13px] [size=13px])
[color=rgb(1, 1, 1)][size=13px]步骤:
[color=rgb(1, 1, 1)][size=13px]1.首先创建源库的全库备份
[color=rgb(1, 1, 1)][size=13px]2.在目标服务器配置[size=13px] [size=13px]oracle_sid
[size=13px]3.[color=rgb(1, 1, 1)] [color=rgb(1, 1, 1)][size=13px]连接到该[size=13px]sid [color=rgb(1, 1, 1)][size=13px]set oracle_sid=mydb
[color=rgb(1, 1, 1)][size=13px]4.rman target /
[color=rgb(1, 1, 1)][size=13px]5.[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]RMAN>[size=13px] [color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]set dbid 2543439098;
[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]6.RMAN> startup nomount;
[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]7.[color=rgb(1, 1, 1)][size=13px]先恢复初始化参数文件
[size=13px]RMAN> [size=13px]restore spfile to pfile 'F:\ORAHOME1\DATABASE\INITMYDB.ORA' from 'd:\backup\mydb\C-2543439098-20070720-02';
[size=13px]8.[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]然后使用刚刚创建的参数文件重新启动到未加载状态 RMAN>[backcolor=rgb(224, 224, 224)][size=13px] [color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]startup force nomount pfile='F:\ORAHOME1\DATABASE\INITMYDB.ORA';
[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]9.恢复控制文件并进入到加载状态 RMAN>[backcolor=rgb(224, 224, 224)][size=13px] [color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]restore controlfile from 'f:\backup\mydb\C-2543439098-20070720-01';
[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]10.RMAN>[backcolor=rgb(224, 224, 224)][size=13px] [color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]alter database mount;
[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]11.RMAN> alter database mount;
[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]12.[size=13px].[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]修复数据库,源路径修复,如果你要恢复的文件地址与源库地址不同的话,需要通过[backcolor=rgb(224, 224, 224)][size=13px] [size=13px]SET NEWNAME FOR DATAFILE[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]命令来为数据文件重新设定路径。
[size=13px]RMAN> [size=13px]restore database;
[size=13px]13.[color=rgb(1, 1, 1)][size=13px]恢复数据库
[size=13px]RMAN> [size=13px]recover database;
[size=13px]14.[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]通过[backcolor=rgb(224, 224, 224)][size=13px] [size=13px]open resetlogs[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]方式打开数据库
[size=13px]RMAN> [size=13px]alter database open resetlogs;
[table=98%]
[td=4,1][color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]各种故障背景下的恢复方法
[color=rgb(1, 1, 1)][size=13px]丢失或损坏的文件[color=rgb(1, 1, 1)][size=13px]归档模式[color=rgb(1, 1, 1)][size=13px]数据库状态[color=rgb(1, 1, 1)][size=13px]恢复方法
[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]一个或多个数据文件[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]不归档模式[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]关闭状态[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]利用一致的完全数据库备份修复整个数据库,自从备份之后发生的所有修改都将丢失;修复数据库后不需要进行恢复,利用[backcolor=rgb(224, 224, 224)][size=13px] [size=13px]RESETLOGS[backcolor=rgb(224, 224, 224)][size=13px] [color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]选项直接打开数据库;
[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]注意:在这种情况下进行恢复时,惟一一种可以不利用[backcolor=rgb(224, 224, 224)][size=13px] [size=13px]RESETLOGS[backcolor=rgb(224, 224, 224)][size=13px] [color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]选项打开数据库的情况就是在执行最近一次备份之后,联机重做日志中的内容没有被覆盖掉。
[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]一个或多个数据文件,以及联机重做日志文件[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]不归档模式[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]关闭状态[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]利用一致的完全数据库备份修复整个数据库,自从备份之后发生的所有修改都将丢失;修复数据库后不需要进行恢复,利用[backcolor=rgb(224, 224, 224)][size=13px] [size=13px]RESETLOGS[backcolor=rgb(224, 224, 224)][size=13px] [color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]选项直接打开数据库。
[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]一个或多个数据文件以及所有的控制文件[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]不归档模式[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]关闭状态[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]利用一致的完全数据库备份修复整个数据库,自从备份之后发生的所有修改都将丢失;修复数据库后不需要进行恢复,利用[backcolor=rgb(224, 224, 224)][size=13px] [size=13px]RESETLOGS[backcolor=rgb(224, 224, 224)][size=13px] [color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]选项直接打开数据库。
[td=4,1][color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]注:以上三种不归档模式下的数据库恢复都需要在数据库关闭状态下进行,并且需要拥有正确的控制文件备份。
[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]一个或多个数据文件[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]归档模式[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]加载状态[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]在数据库打开状态下执行表空间或数据文件恢复操作,首先将表空间或数据文件置为脱机状态,然后利用备份修复它们,对它们进行恢复,最后再将它们重新置为联机状态;任何数据修改都不会丢失,并且在恢复过程中数据库的其他部分仍然是可以访问的。
[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]全部的数据文件[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]归档模式[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]关闭状态[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]利用备份修复数据文件,然后使用控制文件加载数据库,并且执行完全恢复;如果所有的联机重做日志文件都没有丢失或损害,最后可以用正常方式打开数据库(不需要使用[backcolor=rgb(224, 224, 224)][size=13px] [size=13px]RESETLOGS[backcolor=rgb(224, 224, 224)][size=13px] [color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]选项)
[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]一个或多个数据文件以及恢复所需的归档重做日志文件。[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]归档模式[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]加载状态[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]对包含丢失的数据文件的表空间进行基于时间的表空间恢复,将这个表空间恢复到最近的可用归档重做日志所对应的时刻下的状态。
[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]所有的控制文件,还可能包括一个或多个数据文件[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]归档模式[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]未加载状态[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]利用备份修复丢失的控制文件与数据文件,然后对数据文件进行恢复;任何数据修改都不会丢失,但是在恢复过程中数据库将处于不可用状态。
[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]所有的控制文件,还可能包含一个或多个数据文件,以及恢复所需的归档日志文件与联机重做日志文件[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]归档模式[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]未加载状态[color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]利用备份修复丢失的控制文件与数据文件,然后进行不完全恢复,将数据库恢复到最近的可用归档重做日志所对应的时刻下的状态;包含在丢失的日志文件中以及它随后的其它日志文件中的数据修改都将会丢失;最后需要使用[backcolor=rgb(224, 224, 224)][size=13px] [size=13px]RESETLOGS[backcolor=rgb(224, 224, 224)][size=13px] [color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]选项来打开数据库。
[td=4,1][color=rgb(1, 1, 1)][backcolor=rgb(224, 224, 224)][size=13px]注:归档模式下的数据库恢复并不一定要求关闭数据库,其中某些情况要求在加载模式下进行恢复,并且也需要拥有正确的控制文件备份。
[backcolor=rgb(224, 224, 224)][size=13px]
[backcolor=rgb(224, 224, 224)][size=13px]不同备份恢复方式的特点
[backcolor=rgb(224, 224, 224)][size=13px]RMAN方式 自定义方式
[backcolor=rgb(224, 224, 224)][size=13px]在对联机数据文件进行备份时,RMAN将对当前处于不一致状态的数据块进行反复读取,直到读取到一个一致状态的数据块为止;你不将包含数据文件的表空间设置为进入备份模式 必须将包含要进行备份的数据文件的表空间设置为进入备份状态,然后在备份完成后再将表空间设置为退出备份模式;在表空间处于备份模式期间,数据库的性能将会由于频繁的I/O操作而受到严重影响(oracle会将用户修改的数据块先写入联机重做日志文件中)
[backcolor=rgb(224, 224, 224)][size=13px]可以进行增量备份,即仅对那些上一次自动备份以来发生变化的数据块进行备份;可以使用增量备份对数据库进行恢复,这就意味着你可以对运行在不归档模式下的数据库进行恢复;不过当数据库运行在不归档模式时,所做的增量备份也必须是一致的(即完全关闭状态下建立的备份) 在备份时只能对所有的数据块进行备份(复制文件),而不能仅对变化的数据块进行备份;如果数据库运行在不归档模式下,就只能进行数据库修复而不能进行任何恢复操作。
[backcolor=rgb(224, 224, 224)][size=13px]在备份过程中会对复制的每一个数据块进行校验,在利用备份进行修复时也会对数据库的正确性进行检查 在备份和修复过程中都不会对数据块进行任何校验与检查;如果修复所使用的备份中包含损坏的数据块,那么恢复后的数据库中将包含错误的数据
[backcolor=rgb(224, 224, 224)][size=13px]在备份过程中仅会复制那些包含数据的数据块,而并不会复制那些完全空白的数据块,这样得到的备份文件的大小就会大大缩小。 在备份过程中只能完全复制数据文件,无论数据文件中包含了多少实际数据,备份的大小与数据库的大小是相同的。
[backcolor=rgb(224, 224, 224)][size=13px]利用恢复目录来存放与备份和恢复相关的重要信息,包括:
[backcolor=rgb(224, 224, 224)][size=13px] 数据库中包含的模式
[backcolor=rgb(224, 224, 224)][size=13px] 哪些文件需要进行备份
[backcolor=rgb(224, 224, 224)][size=13px] 哪些文件在经过了指定的天数后还没有进行新的备份
[backcolor=rgb(224, 224, 224)][size=13px] 哪些文件由于已经有了更新的备份或者已经无法用户恢复过程而需要删除
[backcolor=rgb(224, 224, 224)][size=13px] 当前RMAN的参数配置等 不会对用户的备份与恢复操作进行任何记录,除非你自己以手工方式进行记录
[backcolor=rgb(224, 224, 224)][size=13px]可以将一系统相关的RMAN命令作为脚本保存在档案库中,在需要时招行这些脚本就可以完成特定的备份或恢复操作 只能将备份或恢复命令保存成操作系统批处理文件,维护起来比较困难。
[backcolor=rgb(224, 224, 224)][size=13px]可以利用RMAN备份轻松地复制出一个与当前数据库一模一样的数据库,你可以利用复制出来的数据库作为测试用数据库或者备用数据库使用 如果要建立测试用数据库或备份数据库,必须按照创建普通数据库的过程来进行复杂的操作。
[backcolor=rgb(224, 224, 224)][size=13px]在进行备份或修复操作时可以自动进行并行操作 必须根据要进行备份或恢复的文件以手工方式并行招行操作系统命令
[backcolor=rgb(224, 224, 224)][size=13px]提供归档日志自动容错功能:如果RMAN发现某个备份中丢失了或损坏一个归档重做日志文件,它会自动利用其它备份中的相同的归档重做文件来进行替换 无法自动提供归档日志的容错替换功能
[backcolor=rgb(224, 224, 224)][size=13px]通过使用介质管理API,RMAN可以与其它第三方的介质管理软件紧密地结合在一起进行工作。 无法与任何第三方介质管理软件直接结合在一起进行工作。
[backcolor=rgb(224, 224, 224)][size=13px]############http://blog.itpub.net/28698327/viewspace-762366/]linux下oracle rman 复制数据库技术(until cancel不完全恢复)[color=rgb(86, 86, 86)] ##########################
[backcolor=rgb(224, 224, 224)][size=13px]source:
$mkdir -p [backcolor=rgb(224, 224, 224)][size=13px]/home/oracle/app/bak
RMAN>backup database format '[backcolor=rgb(224, 224, 224)][size=13px]/home/oracle/app/bak/%d_%s.bak';
cd $ORACLE_HOME/dbs
create pfile from spfile;
scp initinthdb.ora 192.168.30.26:$ORACLE_HOME/dbs
target:
mkdir -p [backcolor=rgb(224, 224, 224)][size=13px]/home/oracle/app/bak
mkdir -p /home/oracle/app/oradata/inthdb
mkdir -p /home/oracle/app/admin/inthdb/{adump,bdump,cdump,dpdump,udump,pfile}
select name from v$archived_log;
[color=rgb(50, 51, 51)][backcolor=rgb(241, 254, 221)]
切换一下日志:alter system switch logfile;
####mkdir -p /home/oracle/app/archive/inthdb
mkdir -p /home/oracle/app/flash_recovery_area/{inthdb,INTHDB,orcl,ORCL}
主库复制rman备份的数据文件和归档日志文件 到备库相应目录下(注意:主库和备库目录必须一致):
[backcolor=rgb(224, 224, 224)][size=13px]source:
cd [backcolor=rgb(224, 224, 224)][size=13px]/home/oracle/app/bak
scp * 192.168.30.26:[backcolor=rgb(224, 224, 224)][size=13px]/home/oracle/app/bak
cd /home/oracle/app/
[backcolor=rgb(224, 224, 224)][size=13px]scp -r flash_recovery_area/ [email]oracle@192.168.30.26[/email]:/home/oracle/app/
[backcolor=rgb(224, 224, 224)][size=13px]target:
[backcolor=rgb(224, 224, 224)][size=13px]mkdir -p /home/oracle/app/oradata/mobile
rman target /
startup nomount;
restore controlfile from '[backcolor=rgb(224, 224, 224)][size=13px]/home/oracle/app/bak/INTHDB_17.bak';
alter database mount;
restore database;
#recover using backup controlfile until cancel;
#alter database open resetlogs;
Recover database using backup controlfile until cancel;
CANCEL
alter database open resetlogs;
[backcolor=rgb(224, 224, 224)][size=13px]############http://blog.itpub.net/28698327/viewspace-762366/]linux下oracle rman 复制数据库技术(until cancel不完全恢复)[color=rgb(86, 86, 86)] ########################