13.Oracle10g服务器管理恢复--RMAN备份(练习20)
- 格式:pdf
- 大小:187.82 KB
- 文档页数:13
通过RMAN备份Oracle数据库恢复到其他服务器(案例)通过RMAN备份Oracle数据库恢复到其他服务器(案例)本节演示如何通过RMAN创建的备份集,将数据库恢复到其他服务器。
本小节执行的操作较多,一定要有一个清醒的大脑,因此赶紧把脑袋里那堆乱七八糟的东西清除清除,要不你一定会看晕的。
设定环境如下:源库192.168.100.100,SID:orcdb。
目录库192.168.100.101,已安装与源库相同版本的数据库软件(一定要相同版本哟)。
准备工作如下:记录下源数据库的DBID,DBID的获取方式上节已讲过。
创建完整备份集(含控制文件、数据文件、归档文件),源库为非归档模式也可以,只要确保创建的备份是一致备份,然后将备份集复制到目标服务器的相同路径下。
为简单起见,源端与目标端目录结构保持一致。
如果你在测试或正式操作时由于实际原因无法保持源端与目标端结构一致,在恢复过程中注意修改相关路径。
操作步骤如下:注意,下列操作如非特别注明,均是在目标端服务器上进行的。
1.在源库端创建数据库的完整备份Backup database;备份集创建成功之后,将其复制到目录端的相同路径下,强调一点,必须是相同路径。
复制方式灵活多样,Windows环境可以直接通过共享复制,Linux/UNIX下可以通过FTP。
2.在目标服务器上创建OracleService如果是Linux/UNIX环境,不需要执行本步骤,只要在连接数据库时指定ORACLE_SID环境变量即可。
如果是Windows服务器,需要通过ORADIM命令创建一个OracleService,创建的SID要与源库相同,操作如下:1. C:\Documents and Settings\Administrator>ORADIM -NEW -SID orcdb2. Instance created.上述命令创建了一个名为orcdb的OracleService。
1. 检查数据库模式:sqlplus /nologconn /as sysdbaarchive log list (查看数据库是否处于归档模式中)若为非归档,则修改数据库归档模式。
startup mountalter database archivelogalter database open2.连接到target数据库命令:connect target / (connect target system/oracle@ora10g,如果数据库没有起来,也可要直接在rman命令下用startup进行启动数据库)可以连接到target database.(rman 一边连接到target数据库,另外一边连接到control file(nocatalog mode),control file 中存储rman 的备份信息)3.用list backupset 命令查看有没有备份的东西4. 常用备份命令:备份全库:RMAN> backup database plus archivelog delete input; (备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志)备份表空间:RMAN> backup tablespace system plus archivelog delete input; (备份指定表空间及归档的重做日志,并删除旧的归档日志)_备份归档日志:RMAN> backup archivelog all delete input;======================对整个数据库进行备份==================1.对整个数据库进行全备份(full backup)。
只要输入命令: backup database;2.list backupset 查看备份的具体信息List of Backup Sets===================BS Key Type LV Size Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ------------ ---------------1 Full 6.80M DISK 00:00:02 06-DEC-08BP Key: 1 Status: AVAILABLE Compressed: NO Tag: TAG20081206T201041 Piece Name:/home/oracle/flash_recovery_area/ORA10G/backupset/2008_12_06/o1_mf_ncsnf_TAG2 0081206T201041_4mntz78s_.bkpControl File Included: Ckp SCN: 782019 Ckp time: 06-DEC-08SPFILE Included: Modification time: 06-DEC-08BS(backupset), piece是一个文件,一个BS包含多个piece.3.rman中缺省的参数,可以通过show all ;来进行查看(RMAN configuration parameters),我们在使用backup database命令中,可以把这些default value 用固定的值来进行替代.4.我们可以把备份的文件才备份的目录中拷贝到磁带上,然后删除备份目录下面的备份文件,如果下次需要恢复的话,只要把文件重新拷回到用来的备份目录就可以了5.查看control file 文件中的备份信息(因为我们做的备份是在nocatalog模式下),control file 在/u01/oracle/oradata/ora10g目录下,由于control file 是个二进制文件,要查看control file 文件中的内容,用strings control03.ctl,发现control03.ctl中有rman备份的信息了====================0级增量备份===============概念:全备份和0级增量备份。
Oracle数据库备份和恢复利器——RMAN一、引言数据是各类计算机应用系统的基础,不论是普通的企业级应用系统,还是学校、银行等各类网上服务系统,以及政府部门的电子政务系统等,数据永远是应用系统中价值最高、最为核心的内容,因此保证数据的高安全性成为各应用系统持续、不间断运行的基础。
然而,各种突发事件诸如网络威胁、硬件故障、火灾等,都使系统数据的安全性面临着巨大挑战。
为了应对突发事件引起的系统数据破坏,保证数据的安全性和完整性,需要对数据进行定期备份,从而在紧急情况下恢复备份数据使服务快速恢复。
数据备份通常分为逻辑备份和物理备份两种方式。
逻辑备份和物理备份两种方式的原理不同,因此需要不同的备份工具。
目前作为常见数据库之一的Oracle数据库,在数据备份和恢复上提供了多种灵活、方便的备份工具和方法。
逻辑备份工具主要有导入/导出(Import/Export)工具、数据泵等,物理备份工具就是Recover Manager(RMAN)。
对于Oracle数据库来说,目前市场上第三方备份软件都是通过调用RMAN接口实现的。
本文从保障系统数据安全的角度出发,首先分析了Oracle备份和恢复工具——RMAN的特点,然后介绍利用RMAN的功能,并建立合理备份方案,及故障时如何快速恢复数据库系统。
二、RMAN简介及其特点RMAN(Recovery Manager) 是Oracle数据库的一种物理备份和恢复工具,具有占用资源少、备份效率高、恢复速度快、支持在线备份和恢复等特点。
(一)RMAN采用数据块级备份,而不是数据文件级的备份。
块级备份将备份和恢复的最小单位从数据文件降到数据块,这对数据的备份和恢复都会带来明显的好处。
1.对备份而言,块级备份可以带来两个优势以有效减少备份量,提高备份效率。
首先是增量备份技术。
默认情况下Oracle会启动数据块更改跟踪特性,数据变更时,后台进程Change Tracking Writer(CTWR)将发生变化的数据块记录到名为“change tracking file”的文件中[1],这样增量备份无需读取整个数据文件,直接备份变更数据。
ORACLE数据库的备份与恢复差异增量备份就是备份往前第一个备份级别小于或等于当前备份级别开始到现在的变化。
累计增量备份就是备份往前第一个备份级别小于当前备份级别开始到现在的变化。
0级备份也就是全备份,但0级备份可以在此基础之上再进行备份,但全备份就不可以。
Oracle rman 备份一、数据库全备份方法(nocatalog)1 注意rman有两个,要执行db_1/bin下那个(可以通过修改oracle变量来达到)2 在执行ramn之前要确认当前数据库是否处理Archive Mode模式,并处于Enabled下查看方式:如果不是可以通过如下方式打开并修改:SQL>startup mountSQL>alter database archivelogSQL>alter database open3全备份数据库:A先连接数据库HERMINGB查看备份列表中是否有以前备份的文件C执行全数据库备份4备份完之后可以查看一下备份出来的文件信息:5备份文件存放路径为:二、0级数据库备份A 以nocatalog方式使用rmanB连接数据库C执行0级数据库备份注:全备份与0级备份的相同点是都是将数据库全部备份下来。
全备份与0级备份的不同点是全备份不能作为增量备份,而0级可以作为增量备份。
1级备份就在0级备份的基础上进行的。
三、1级增量备份(基于0级备份之上)总结:可以将备份出来的文件考到其他介质上进行保存,并进行删除。
如果要恢复时请将该文件放回到这文件夹下,并要保存文件名不变。
说明:口令文件因为可以重新设置,所以不用备份,重做日志文件不能在非nocatalog中备份。
四、备份archivelog(参数文件+数据文件+控制文件+归档日志文件)先备份完再删除归档备份五、备份表空间A 查看有哪些表空间B备份名为TBS1的表空间六、备份控制文件七、镜像备份说明:5为TBS1表空间的编号,及对TBS1表空间进行镜像备份。
oracle 10g备份与还原总结一.总述1.数据库归档模式:* 非归档模式:当数据库数据只读不会改变时,数据不会改变,数据库适合用非归档模式, 这样提高性能* 归档模式:对于数据库数据经常变动,数据库最好用归档模式,这样可以尽量避免数据库数据丢失,使出现问题时灾害降到最低2.非归档模式与归档模式间的切换(在命令窗口下):@检查当前日志操作模式f:\>sqlplus sys/dba as sysdba连接数据库sql>select log_mode from v$database;@关闭数据库,后装载数据库,只能在mount状态下改变日志操作模式sql>startup mount@改变日志模式sql>alter database achivelog;(变为归档方式,否则为nochivelog)sql>alter database open;3.查看归档模式相关信息:@若采用默认设置,归档日志位置在快速恢复区@配置归档日志位置 log_archive_dest_n (n=[1:10])sql>alter system setlog_archive_dest_1 = 'location =c:\demo\archive [optional]';sql>alter system setlog_archive_dest_2 = 'service =standby [mandatory] [reopen]';其中:location 是本地service 是远程optional 无论归档是否成功,都会覆盖重做日志mandatory只有成功归档才会覆盖重做日志reopen 重新归档时间间隔默认是300s@显示归档信息,即显示显示日志操作模式sql>select name,log_mode from v$database;@显示归档日志信息sql>select name,sequence#,first_change# from v$archive_log;sequence#: 归档序列号first_change# : 起始SCN值@显示归档日志位置sql>select dest_name,destination,status from v$archive_dest;dest_name 归档位置参数名destination 位置@显示日志历史信息sql>select * from v$loghist;threade# : 重做线程号sequence# : 日志序列号first_change# : 起始SCN值first_time : 起始SCN发生时间switch_change : 切换SCN值二.非归档模式下的备份与还原. 日志采用覆盖原有日志的方式存储. 出现介质失败时,只能恢复到过去的完全备份点. 数据库OPEN状态是,不能备份数据库. 必须先关闭数据库,再备份,且必须备份所有数据,控制文件1.备份==冷备份@ 先关闭数据库sql>shutdown immediate@ 拷贝所有数据文件,和控制文件2.恢复* 数据文件出现丢失,但备份以来的重做日志内容尚未被覆盖,此时可以完全恢复@装载数据库sql>startup force mount@复制数据文件备份@恢复数据文件sql>recover datafile 1@打开数据库sql>alter database open;* 备份文件的重做日志内容已经被覆盖,则只能还原到备份点@关闭数据库@复制所有数据和控制备份文件至原位置@装载数据库,执行恢复命令sql>startup mountsql>recover database until cancel提示控制文件不再使用原有重做日志@用resetlogs选项打开数据库sql>alter database open resetlogs;三.归档模式. 可以防止数据丢失. 数据处于OPEN状态时可以进行备份. 当出现介质失败时,除了SYSTEM表空间中的数据文件外其他的都可以在open状态下恢复. 可执行完全恢复,也可以恢复到备份点与失败点之间的某时刻1.备份1)冷备份shutdown后拷贝所需数据文件和控制文件2)热备份@将数据库设置为归档模式@在数据库上发出全局检查点,在所有的数据文件头块上加锁sql>alter database begin backup ;@备份数据文件及控制文件数据文件直接拷贝至其他目录控制文件需使用alter database backup controlfilesql>alter database backup controlfile to 'd:\backup\demo.ctl';@结束数据备份,为确保数据文件备份的同步性,还应该归档当前日志组sql>alter database end backup;sql>alter system archive log cuurent;3)备份表空间*脱机备份(表空间处于OFFLINE状态,SYSTEM表空间和正在使用的UNDO空间不能脱机)@确定表空间包涵的数据文件,如空间USERSsql>select file_name from dba_data_fileswhere tablespace_name = 'users';@设置表空间为脱机状态sql>alter tablespace users offline;@复制数据文件@设置表空间联机sql>alter tablespace users online;*联机备份@确定对应关系@设置表空间为备份模式sql>alter tablespace users begin backup ;@复制数据文件@设置表空间为正常模式sql>alter tablespace users end backup ;*处理联机备份失败当执行联机备份时,若出现例程失败,再次打开数据库时,如果数据文件仍处于备份状态,则会出错,此时需要结束备份@装载数据库sql>startup force mount@查看处于联机备份状态的所有数据文件sql>select file# from v$backup where status = 'active';@结束联机备份状态sql>alter tablespace end backup或alter tablespace datafile backup;或recover datafile 序号@打开数据库sql>alter database open;2.还原1)完全恢复相关命令:recover database :恢复数据库的多个数据文件(在MOUNT状态下运行)recover tadaspace :恢复多个表空间的所有数据文件(在open状态下运行)recover datafile :恢复一个或多个数据文件(在mount,open 状态下都可)*在mount状态下恢复数据文件(用于SYSTEM表空间恢复)@装载数据库 mount状态@确定需要恢复的数据文件sql>select file#,error from v$recover_file@拷贝备份至原位置@恢复数据库 recover..上述命令@打开数据库 alter database open;*在open状态下恢复关闭后意外对视的数据文件,此时数据库将无法打开@装载数据库 mount@确定需要恢复的数据文件@使相应的数据文件脱机sql>alter database datafile 4 offline;@打开数据库sql>alter database open@复制数据备份文件@恢复数据文件@是数据文件联机 alter database datafile 4 online; *在open状态下恢复打开时意外丢失的数据文件@确定要恢复的数据文件@使数据文件脱机@复制数据文件@恢复相应的表空间或数据文件@使相应的表空间或数据文件联机*在open状态下恢复未备份的数据文件(要求在归档模式下,新建数据文件,其从简历开始的所有归档日志必须全部存在)@装载数据库@确定要恢复的数据文件@是数据文件脱机@打开数据库@重新建立数据文件sql>alter database create datafile 'd:\demo\users01.dbf';@恢复数据文件@使数据文件联机2)不完全恢复使用已备份的数据文件,归档日志,和重做日志,将数据库恢复到备份点与失败点之间某个时刻的状态*恢复分类基于时间的恢复:误删除表,误截断表,提交了错误的数据基于取笑恢复:恢复到某个日志序列号之前的状态基于SCN的恢复:恢复到特定SCN值的状态基于备份控制文件恢复:表空间被意外删除,或所有控制文件全部损坏*不完全恢复指令recover database until timerecover database until changerecover database until cancelrecover database .. using backup controlfile*基于时间的恢复@关闭数据库(为防止备份失败,应备份当前数据库所有文件 @装载数据库 startup mount@复制所有备份数据文件,并确定备份文件的时间点sql>select file#,to_char(time,'yyyy-mm-dd hh24:mi:ss)from v$recover_file;@执行recover database until timesql>recover database until time "2006-09-26 16:40:33'@以resetlogs方式打开数据库,并检查恢复结果sql>alter database open resetlogs;@备份数据库所有数据文件和控制文件,因为当以resetlogs方式打开数据库后会重新建立重做日志,清空原有重做日志的所有内容,并将日志序列号复位为1sql>select name from v$datafile;sql>alter database begin backup;拷贝数据文件sql>alter database end backup;sql>alter database backup controlfileto 'd:\backup\demo.ctl' reuse;sql>alter system archive log cuurent;*基于SCN恢复@关闭数据库@装载数据库 mount@复制所有备份数据文件,确定备份文件SCN值sql>select file#,change#, from v$recover_file; @执行recover database until changesql>recover database until change 675978;@以resetlogs方式打开数据库@备份数据库所有数据文件和控制文件*基于取消恢复@关闭数据库@装载数据库@复制所有备份的数据文件,确定备份文件的SCN值sql>select file#,change# from v$recover_file; @执行recover database until canclesql>recover database until cancel@以resetlogs方式打开数据库@备份所有数据文件和控制文件*基于备份控制文件的恢复@通过查看alert文件,确定误操作时间@关闭数据库@复制所有备份的数据文件,控制文件@装载数据库@执行recover database ing backup controlfile sql>recover database until time '2004-09-26 19:51:06'using backup controlfile@以resetlogs 方式打开数据库@备份所有数据文件和控制文件。
Oracle 10g系统备份恢复方案一、备份策略为了保证系统在出现故障时快速恢复,我们的备份策略包括两个部分,逻辑备份,物理备份。
1 .1物理备份数据库按归档方式运行归档方式和非归档方式运行方式优点和缺点比较:1.归档方式:●优点●可以执行联机备份,保证数据库7*24不间断运行●宕机时,能够实现数据的完全恢复●缺点●在检查点发生之后,重做日志归档完成之前,重做日志不能重新使用●需足够的空间资源来保存归档重做日志文件2.非归档方式:●优点●重做日志文件可在检查点发生之后立即重新使用●简化管理,节省空间●缺点●无法执行联机备份●宕机时,会丢失上一次完全备份之后的所有数据一般从系统考虑采用归档方式更为合适,可以在线备份,一旦系统出现问题时,可以恢复到故障以前的任何时间点。
保证系统出现故障时能够回滚恢复。
1.1.1物理备份实现归档方式的配置:●关闭数据库,对数据库进行备份。
●修改初试化参数,使能自动存档修改(添加)初始化文件init[SID].ora参数:log_archive_start=true #启动自动归档log_archive_format=ARC%T%S.arc #归档文件格式log_archive_dest=/arch12/arch #归档路径●启动数据库到MOUNT状态下,使用如下语句alter database archivelog; 然后打开数据库:alter database open;RMAN备份脚本说明run{allocate channel c1 type 'sbt_tape'parms = 'SBT_LIBRARY=/ca/BABoraagt/libobk.so.2.64_5';allocate channel c2 type 'sbt_tape'parms = 'SBT_LIBRARY=/ca/BABoraagt/libobk.so.2.64_5';sql 'alter system archive log current';backup archivelog all format 'log_%s_%t_%p' delete input;release channel c1;release channel c2;}该脚本是数据库的归档日志备份脚本。
Oracle10g RMAN之nocatalog备份与还原1.做RMAN备份的准备工作。
1Oracle10G的RMAN备份机制一共有三种方式,第一种:将Target Database(主数据库)备份到Auxiliary database(从数据库)。
第二种:将Target Database(主数据库)备份到catalog database(备份数据库)。
第三种:就是本文将要提到的nocatalog方式备份。
Nocatalog方式备份,就是将Targetdatabase控制信息保存在controlfile中,然后将物理备份文件存放到DISK (磁盘空间)或者SBT TAPE(磁带空间)中。
2.这里讲一下oracle 10g中关于数据备份,都需要备份些什么东西。
图上半部分可以不用看,下半部分除了口令文件以及重做日志文件以外,(口令文件可以在数据库中添加所以不用备份,重做日志文件不能被备份所以不用备份。
)其他包括数据库的参数文件,数据文件,控制文件,归档日志文件等这些内容都是需要备份的,以便将来可以恢复。
3我们打开Oracle 10G的web控制台,就可以在他的管理页面中看到他的控制文件,表空间文件,数据文件,以及归档日志文件。
45这个是控制文件。
67这个是表空间文件89这些是数据文件。
10这些是归档日志文件。
11进入SQLPLUS 。
在dos命令行中输入SQLPLUS /NOLOG。
12输入conn /as sysdba连接数据库。
13输入archive log list检查数据库状态。
如果数据库日志模式为非存档模式,这样的状态是不能够做rman备份的,因为归档日志不生效。
14输入show parameter db_recovery。
检查备份文件保存大小以及备份文件存放路径。
15输入Shutdown immediate,强制停止数据库以及oracle例程。
16输入connect /as sysdba,重新连接空闲例程。
Oracle10g数据库备份与恢复操作⼿册Oracle 10g数据库备份与恢复操作⼿册⽬录Oracle 10g数据库备份与恢复操作⼿册 (1)前⾔ (5)⽂档⽬的 (5)⽂档范围 (5)⽬标读者 (5)其他说明 (5)1冷备份 (6)1.1冷备份概述 (6)1.2备份步骤 (6)1.3恢复测试 (6)1.4结论 (7)2热备份 (7)2.1热备份特点 (7)2.2备份操作 (7)2.2.1数据⽂件备份 (8)2.2.2在线备份控制⽂件 (9)3热备份下的完全恢复 (9)3.1⾮ system表空间数据⽂件受损 (9)3.2 system表空间数据⽂件或⼤量数据⽂件受损 (10)3.3回滚数据⽂件损坏恢复 (11)3.4临时表空间⽂件损坏的恢复 (11)3.5控制⽂件损坏的恢复 (12)3.5.1单个控制⽂件被破坏 (12)3.5.2所有控制⽂件被破坏 (12)3.6⽇志⽂件损坏的恢复 (13)3.6.1正常关机情况下⾮当前联机⽇志⽂件被破坏 (13)3.6.2正常关机情况下当前联机⽇志损坏 (14)3.6.3数据库运⾏时或⾮正常关机情况下已归档⽇志 active⽇志⽂件被破坏 (15)3.6.4有备份的情况下数据库运⾏时或⾮正常关机情况下未归档active或 current⽇志⽂件被破坏173.6.5⽆备份的情况下数据库运⾏时或⾮正常关机情况下未归档active或 current⽇志⽂件被破坏194恢复不完全恢复 (20)4.1时间的恢复 (20)4.1.1概述 (20)4.1.2操作步骤 (21)4.2基于SCN的恢复 (22)4.2.1概述 (22)4.2.1操作步骤 (22)5 RMAN备份与恢复 (23)5.1 RMAN概述 (23)5.2 RMAN服务器和⽬标服务器的配置 (24)5.3 RMAN配置 (25)5.4备份集操作 (26)5.5 RMAN备份与恢复 (26)5.5.1全库备份与恢复 (26)5.5.2表空间备份与恢复 (27)5.5.3表空间备份与恢复 (28)5.5.4控制⽂件备份与恢复 (28)5.5.5归档⽂件备份与恢复 (29)5.5.6 RMAN脚本 (29)5.5.7 RMAN增量备份与恢复 (30)6逻辑备份(export/import) (31)6.1概述 (31)6.2简单导出、导⼊数据 (31)6.2.1简单导出 (31)6.2.2简单导⼊ (32)6.3增量导出导⼊ (32)6.3.1增量导出 (32)6.3.2导⼊ (33)7 Flashback. 337.1概述 (33)7.2 Flashback配置步骤 (33)7.3⾏级闪回操作步骤 (35)7.4表级闪回操作步骤 (36)7.5库级闪回操作步骤 (38)8 LogMiner.. 398.1概述 (39)8.2系统配置 (39)8.3操作步骤 (40)⽬录前⾔⽂档⽬的 备份与恢复是数据库管理中最重要的⽅⾯之⼀。
ORACLE RMAN备份及还原RMAN可以进行增量备份:数据库,表空间,数据文件只有使用过的block可以被备份成backup set表空间与数据文件对应关系:dba_data_files / v$datafile_header在noarchivelog模式下,可以使用RMAN备份read-only和offline的表空间ORACLE RMAN停机备份:备份RMAN连接上ORACLE,WINDOWS下在命令模式下RMAN TARGET /连接本地数据库用的是本地认证模式。
RMAN连接数据库必须在dedicate模式下。
因此在share模式下的数据库应配置一个dedicate 的连接用于RMAN连接。
如果要把控制文件、参数文件也一起备份configure controfile autobackup on;//打开autobackupconfigure controfile autobackup off;//关闭autobackup关闭数据库RMAN>shutdown immediatemount 数据库RMAN的备份必须在MOUNT模式下,这也就是控制文件备份的重要。
RMAN>startup mount最简单的备份RMAN>backup database这样的备份,备份集在数据库默认位置。
%oracle_home%/ora92/database当然你也可以用run来灵活的定义你的备份。
RMAN>run{>allocate chennel d1 type disk; //分配通道>backup full database //全备份数据库>include current controlfile //包括当前的controlfile>format 'e:\oracle\orders\db_%d_%s_%p_%t_%T'; //备份文件位置和文件名格式>release channel d1;//释放通道恢复1、数据文件损坏,而控制文件是好,或者已经恢复RMAN连上数据库startup mountrestore databaserecover database noredo;alter database open resetlogs;recover database noredo该命令指示RMAN执行最后的恢复操作以准备打开这个数据库。
将 10g RAC库用 rman 的方式备份并恢复到异机 -- 刚试验通过与大家分享主 RAC 库:2个节点 rac1(192.168.218.168,rac2(192.168.218.168 采用ASM+RAW备机 standby(192.168.218.188 文件系统一。
在 rac 库备份:rac1-> crs_stat -tName Type Target State Host------------------------------------------------------------ora....SM1.asm application ONLINE ONLINE rac1ora....C1.lsnr application ONLINE ONLINE rac1ora.rac1.gsd application ONLINE ONLINE rac1ora.rac1.ons application ONLINE ONLINE rac1ora.rac1.vip application ONLINE ONLINE rac1ora....SM2.asm application ONLINE ONLINE rac2ora....C2.lsnr application ONLINE ONLINE rac2ora.rac2.gsd application ONLINE ONLINE rac2ora.rac2.ons application ONLINE ONLINE rac2ora.rac2.vip application ONLINE ONLINE rac2ora.racdb.db application ONLINE ONLINE rac1ora....b1.inst application ONLINE ONLINE rac1ora....b2.inst application ONLINE ONLINE rac2rac1->rac1-> export ORACLE_SID=racdb1rac1-> rman target / nocatalogRMAN> run{2> allocate CHANNEL ch00 type DISK CONNECT 'sys/oracle@racdb1';3> allocate CHANNEL ch01 type DISK CONNECT 'sys/oracle@racdb2';4> backup database format '/rmanset/racdb_full_%d%t%s%p' tag 'fullbackup'; 5> BACKUP FORMAT '/rmanset/%d_arch_%s_%p_%h' ARCHIVELOG ALL;6> backup format '/rmanset/cf_%d_%s_%p'7> (current controlfile;8> RELEASE CHANNEL ch00;9> RELEASE CHANNEL ch01;10> }allocated channel: ch00channel ch00: sid=148 instance=racdb1 devtype=DISKallocated channel: ch01channel ch01: sid=148 instance=racdb2 devtype=DISKStarting backup at 02-NOV-08channel ch00: starting full datafile backupsetchannel ch00: specifying datafile(s in backupsetinput datafile fno=00001 name=+RACDATA/racdb/datafile/system.259.669487425 input datafile fno=00005 name=+RACDATA/racdb/datafile/users.264.669487561input datafile fno=00004name=+RACDATA/racdb/datafile/undotbs2.263.669487539 channel ch00: starting piece 1 at 02-NOV-08channel ch01: starting full datafile backupsetchannel ch01: specifying datafile(s in backupsetinput datafile fno=00003 name=+RACDATA/racdb/datafile/sysaux.261.669487497input datafile fno=00002name=+RACDATA/racdb/datafile/undotbs1.260.669487479 channel ch01: starting piece 1 at 02-NOV-08channel ch00: finished piece 1 at 02-NOV-08piece handle=/rmanset/racdb_full_RACDB669769770931 tag=FULLBACKUP comment=NONEchannel ch00: backup set complete, elapsed time: 00:02:19channel ch00: starting full datafile backupsetchannel ch00: specifying datafile(s in backupsetincluding current control file in backupsetchannel ch00: starting piece 1 at 02-NOV-08channel ch01: finished piece 1 at 02-NOV-08piece handle=/rmanset/racdb_full_RACDB669769784941 tag=FULLBACKUP comment=NONEchannel ch01: backup set complete, elapsed time: 00:02:28channel ch01: starting full datafile backupsetchannel ch01: specifying datafile(s in backupsetincluding current SPFILE in backupsetchannel ch01: starting piece 1 at 02-NOV-08channel ch00: finished piece 1 at 02-NOV-08piece handle=/rmanset/racdb_full_RACDB669769914951 tag=FULLBACKUP comment=NONEchannel ch00: backup set complete, elapsed time: 00:00:11channel ch01: finished piece 1 at 02-NOV-08piece handle=/rmanset/racdb_full_RACDB669769933961 tag=FULLBACKUP comment=NONEchannel ch01: backup set complete, elapsed time: 00:00:05Finished backup at 02-NOV-08Starting backup at 02-NOV-08current log archivedchannel ch00: starting archive log backupsetchannel ch00: specifying archive log(s in backup setinput archive log thread=1 sequence=42 recid=141 stamp=669603048 input archive log thread=1 sequence=44 recid=149 stamp=669640424 input archive log thread=1 sequence=45 recid=151 stamp=669675778 input archive log thread=1 sequence=46 recid=152 stamp=669679426 input archive log thread=1 sequence=47 recid=156 stamp=669690456 channel ch00: starting piece 1 at 02-NOV-08channel ch01: starting archive log backupsetchannel ch01: specifying archive log(s in backup setinput archive log thread=1 sequence=53 recid=170 stamp=669767346 input archive log thread=1 sequence=54 recid=172 stamp=669769357 input archive log thread=2 sequence=44 recid=165 stamp=669764276 input archive log thread=2 sequence=45 recid=167 stamp=669765472 input archive log thread=2 sequence=46 recid=168 stamp=669765474 input archive log thread=2 sequence=47 recid=169 stamp=669767345 input archive log thread=2 sequence=48 recid=171 stamp=669769352 input archive log thread=2 sequence=49 recid=175 stamp=669769944channel ch01: starting piece 1 at 02-NOV-08channel ch01: finished piece 1 at 02-NOV-08piece handle=/rmanset/RACDB_arch_98_1_2 tag=TAG20081102T231211 comment=NONE channel ch01: backup set complete, elapsed time: 00:00:04channel ch00: finished piece 1 at 02-NOV-08piece handle=/rmanset/RACDB_arch_97_1_1 tag=TAG20081102T231211 comment=NONE channel ch00: backup set complete, elapsed time: 00:00:11channel ch00: starting archive log backupsetchannel ch00: specifying archive log(s in backup setinput archive log thread=1 sequence=48 recid=158 stamp=669690550input archive log thread=1 sequence=49 recid=160 stamp=669691146input archive log thread=1 sequence=50 recid=162 stamp=669755973input archive log thread=1 sequence=51 recid=163 stamp=669757116input archive log thread=1 sequence=52 recid=166 stamp=669764278input archive log thread=1 sequence=55 recid=173 stamp=669769375input archive log thread=1 sequence=56 recid=174 stamp=669769928channel ch00: starting piece 1 at 02-NOV-08channel ch00: finished piece 1 at 02-NOV-08piece handle=/rmanset/RACDB_arch_99_1_1 tag=TAG20081102T231211 comment=NONE channel ch00: backup set complete, elapsed time: 00:00:08Finished backup at 02-NOV-08Starting backup at 02-NOV-08channel ch00: starting full datafile backupsetchannel ch00: specifying datafile(s in backupsetincluding current control file in backupsetchannel ch00: starting piece 1 at 02-NOV-08channel ch00: finished piece 1 at 02-NOV-08piece handle=/rmanset/cf_RACDB_100_1 tag=TAG20081102T231235 comment=NONEchannel ch00: backup set complete, elapsed time: 00:00:07Finished backup at 02-NOV-08released channel: ch00released channel: ch012. 在 rac 库上创建 pfileSQL> create pfile='/rmanset/initracdb.ora' from spfile;将 rac1,rac2上的备份出来的 rman 文件和 pfile ftp 至 standby 主机二: standby 主机做恢复的过程:0. 修改 ftp 过来的 pfile ,主要是 rac 中一些参数去掉:#*.cluster_database_instances=2*.cluster_database=false#racdb2.instance_number=2#racdb1.instance_number=1#racdb2.thread=2#racdb1.thread=1#racdb2.undo_tablespace='UNDOTBS2'#*.db_file_name_convert='+RACDATA/racdb/datafile/','/oradata/racdb/'#*.fal_client='RACDB'#*.fal_server='STANDBY'#*.log_archive_config='DG_CONFIG=(racdb,standby'#racdb2.log_archive_dest_1='LOCATION=/racdb2_archVALID_FOR=(ALL_LOGFILES,ALL_ROLES DB_UNIQUE_NAME=racdb'#*.log_archive_dest_2='SERVICE=standby LGWR ASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLEDB_UNIQUE_NAME=standby'#*.log_archive_dest_state_2='ENABLE'#*.log_file_name_convert='+RACDATA/racdb/onlinelog/','/oradata/racdb/'#*.remote_listener='LISTENERS_RACDB'#*.standby_file_management='AUTO'1. 数据库启动到 nomount2.restore controlfile3.restore archivelog4.recover database5. 改变 logfile 的位置,重新建 redo6.drop 一个 undo tablespace.7.add a temp tablespace8. 配 tnsnames.ora 和 listener .ora下为操作的过程:standby-> rman target /Recovery Manager: Release 10.2.0.1.0 - Production on Sun Nov 2 14:22:39 2008 Copyright (c 1982, 2005, Oracle. All rights reserved.connected to target database: racdb (not mounted--恢复 controlfileRMAN> restore controlfile from '/rmanset/cf_RACDB_100_1';Starting restore at 02-NOV-08using channel ORA_DISK_1channel ORA_DISK_1: restoring control filechannel ORA_DISK_1: restore complete, elapsed time: 00:00:05output filename=/oradata/racdb/control01.ctlFinished restore at 02-NOV-08---restore datafile and archive logRMAN> sql 'alter database mount';sql statement: alter database mountreleased channel: ORA_DISK_1RMAN> run{2> set until sequence 57 thread 1;3> set newname for datafile 1 to '/oradata/racdb/system01.dbf';4> set newname for datafile 2 to '/oradata/racdb/undotbs01.dbf';5> set newname for datafile 3 to '/oradata/racdb/sysaux01.dbf';6> set newname for datafile 4 to '/oradata/racdb/users01.dbf';7> set newname for datafile 5 to '/oradata/racdb/undotbs02.dbf';8> restore database;9> switch datafile all;10> }executing command: SET until clauseexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEStarting restore at 02-NOV-08allocated channel: ORA_DISK_1channel ORA_DISK_1: sid=155 devtype=DISKchannel ORA_DISK_1: starting datafile backupset restorechannel ORA_DISK_1: specifying datafile(s to restore from backup setrestoring datafile 00001 to /oradata/racdb/system01.dbfrestoring datafile 00004 to /oradata/racdb/users01.dbfrestoring datafile 00005 to /oradata/racdb/undotbs02.dbfchannel ORA_DISK_1: reading from backup piece/rmanset/racdb_full_RACDB669769770931channel ORA_DISK_1: restored backup piece 1piece handle=/rmanset/racdb_full_RACDB669769770931 tag=FULLBACKUP channel ORA_DISK_1: restore complete, elapsed time: 00:00:36channel ORA_DISK_1: starting datafile backupset restorechannel ORA_DISK_1: specifying datafile(s to restore from backup setrestoring datafile 00002 to /oradata/racdb/undotbs01.dbfrestoring datafile 00003 to /oradata/racdb/sysaux01.dbfchannel ORA_DISK_1: reading from backup piece/rmanset/racdb_full_RACDB669769784941channel ORA_DISK_1: restored backup piece 1piece handle=/rmanset/racdb_full_RACDB669769784941 tag=FULLBACKUPchannel ORA_DISK_1: restore complete, elapsed time: 00:00:35Finished restore at 02-NOV-08datafile 1 switched to datafile copyinput datafile copy recid=10 stamp=669738296filename=/oradata/racdb/system01.dbf datafile 2 switched to datafile copyinput datafile copy recid=11 stamp=669738296filename=/oradata/racdb/undotbs01.dbf datafile 3 switched to datafile copyinput datafile copy recid=12 stamp=669738296filename=/oradata/racdb/sysaux01.dbf datafile 4 switched to datafile copyinput datafile copy recid=13 stamp=669738297 filename=/oradata/racdb/users01.dbf datafile 5 switched to datafile copyinput datafile copy recid=14 stamp=669738297filename=/oradata/racdb/undotbs02.dbf RMAN>--列出备份的 archivelog:RMAN> list backup of archivelog all;using target database control file instead of recovery catalogList of Backup Sets===================BS Key Size Device Type Elapsed Time Completion Time------- ---------- ----------- ------------ ---------------89 2.44M DISK 00:00:03 02-NOV-08BP Key: 89 Status: AVAILABLE Compressed: NO Tag: TAG20081102T231211 Piece Name: /rmanset/RACDB_arch_98_1_2List of Archived Logs in backup set 89Thrd Seq Low SCN Low Time Next SCN Next Time---- ------- ---------- --------- ---------- ---------1 53 356353 02-NOV-08 396535 02-NOV-081 54 396535 02-NOV-08 398232 02-NOV-082 44 350717 02-NOV-08 356350 02-NOV-082 45 356350 02-NOV-08 376487 02-NOV-082 46 376487 02-NOV-08 396536 02-NOV-082 47 396536 02-NOV-08 397820 02-NOV-082 48 397820 02-NOV-08 398228 02-NOV-082 49 398228 02-NOV-08 398963 02-NOV-08BS Key Size Device Type Elapsed Time Completion Time------- ---------- ----------- ------------ ---------------90 17.42M DISK 00:00:07 02-NOV-08BP Key: 90 Status: AVAILABLE Compressed: NO Tag: TAG20081102T231211Piece Name: /rmanset/RACDB_arch_97_1_1List of Archived Logs in backup set 90Thrd Seq Low SCN Low Time Next SCN Next Time---- ------- ---------- --------- ---------- ---------1 42 285767 01-NOV-08 285925 01-NOV-081 44 286441 01-NOV-08 286516 01-NOV-081 45 286516 01-NOV-08 308174 01-NOV-081 46 308174 01-NOV-08 312441 01-NOV-081 47 312441 01-NOV-08 324657 02-NOV-08BS Key Size Device Type Elapsed Time Completion Time------- ---------- ----------- ------------ ---------------91 9.69M DISK 00:00:04 02-NOV-08BP Key: 91 Status: AVAILABLE Compressed: NO Tag: TAG20081102T231211 Piece Name: /rmanset/RACDB_arch_99_1_1List of Archived Logs in backup set 91Thrd Seq Low SCN Low Time Next SCN Next Time---- ------- ---------- --------- ---------- ---------1 48 324657 02-NOV-08 324727 02-NOV-081 49 324727 02-NOV-08 325613 02-NOV-081 50 325613 02-NOV-08 349040 02-NOV-081 51 349040 02-NOV-08 350714 02-NOV-081 52 350714 02-NOV-08 356353 02-NOV-081 55 398232 02-NOV-08 398433 02-NOV-081 56 398433 02-NOV-08 398960 02-NOV-08--restore archivelog and recover database.RMAN>RMAN> run{2> set archivelog destination to '/racdb_arch';3> restore archivelog from sequence 49 thread 2;}4>executing command: SET ARCHIVELOG DESTINATIONStarting restore at 02-NOV-08using channel ORA_DISK_1channel ORA_DISK_1: starting archive log restore to user-specified destination archive log destination=/racdb_archchannel ORA_DISK_1: restoring archive logarchive log thread=2 sequence=49channel ORA_DISK_1: reading from backup piece /rmanset/RACDB_arch_98_1_2 channel ORA_DISK_1: restored backup piece 1piece handle=/rmanset/RACDB_arch_98_1_2 tag=TAG20081102T231211channel ORA_DISK_1: restore complete, elapsed time: 00:00:02Finished restore at 02-NOV-08RMAN>RMAN>RMAN> run{2> set archivelog destination to '/racdb_arch';3> restore archivelog from sequence 44 thread 2;4> }executing command: SET ARCHIVELOG DESTINATIONStarting restore at 02-NOV-08using channel ORA_DISK_1archive log thread 2 sequence 49 is already on disk as file/racdb_arch/2_49_669487401.dbf channel ORA_DISK_1: starting archive log restore to user-specified destinationarchive log destination=/racdb_archchannel ORA_DISK_1: restoring archive logarchive log thread=2 sequence=44channel ORA_DISK_1: restoring archive logarchive log thread=2 sequence=45channel ORA_DISK_1: restoring archive logarchive log thread=2 sequence=46channel ORA_DISK_1: restoring archive logarchive log thread=2 sequence=47channel ORA_DISK_1: restoring archive logarchive log thread=2 sequence=48channel ORA_DISK_1: reading from backup piece /rmanset/RACDB_arch_98_1_2 channel ORA_DISK_1: restored backup piece 1piece handle=/rmanset/RACDB_arch_98_1_2 tag=TAG20081102T231211 channel ORA_DISK_1: restore complete, elapsed time: 00:00:02Finished restore at 02-NOV-08RMAN> run{2> set until sequence 57 thread 1;3> recover database;4> }executing command: SET until clauseStarting recover at 02-NOV-08using channel ORA_DISK_1starting media recoveryarchive log thread 2 sequence 49 is already on disk as file/racdb_arch/2_49_669487401.dbf channel ORA_DISK_1: starting archive log restore to default destinationchannel ORA_DISK_1: restoring archive logarchive log thread=1 sequence=56channel ORA_DISK_1: reading from backup piece /rmanset/RACDB_arch_99_1_1channel ORA_DISK_1: restored backup piece 1piece handle=/rmanset/RACDB_arch_99_1_1 tag=TAG20081102T231211channel ORA_DISK_1: restore complete, elapsed time: 00:00:02archive log filename=/racdb_arch/1_56_669487401.dbf thread=1 sequence=56archive log filename=/racdb_arch/2_49_669487401.dbf thread=2 sequence=49media recovery complete, elapsed time: 00:00:01Finished recover at 02-NOV-08--对 redo 作修改:alter database rename file '+RACDATA/racdb/onlinelog/group_1.257.669487411' to '/oradata/racdb/redo1';alter database rename file '+RACDATA/racdb/onlinelog/group_2.258.669487419' to '/oradata/racdb/redo2';alter database rename file '+RACDATA/racdb/onlinelog/group_3.265.669489319' to '/oradata/racdb/redo3';alter database rename file '+RACDATA/racdb/onlinelog/group_4.266.669489327' to '/oradata/racdb/redo4';SQL> select member from v$logfile;MEMBER--------------------------------------------------------------------------------+RACDATA/racdb/onlinelog/group_1.257.669487411+RACDATA/racdb/onlinelog/group_2.258.669487419+RACDATA/racdb/onlinelog/group_3.265.669489319+RACDATA/racdb/onlinelog/group_4.266.669489327SQL> alter database rename file'+RACDATA/racdb/onlinelog/group_1.257.669487411' to '/oradata/racdb/redo1';Database altered.SQL> alter database rename file'+RACDATA/racdb/onlinelog/group_2.258.669487419' to '/oradata/racdb/redo2';alter database rename file '+RACDATA/racdb/onlinelog/group_3.265.669489319' to '/oradata/racdb/redo3';alter database rename file '+RACDATA/racdb/onlinelog/group_4.266.669489327' to '/oradata/racdb/redo4';Database altered.SQL>Database altered.SQL>Database altered.SQL> alter database open resetlogs;Database altered.SQL>SQL>SQL>SQL> select THREAD#, STATUS, ENABLED from v$thread;THREAD# STATUS ENABLED---------- ------ --------1 OPEN PUBLIC2 CLOSED PUBLICSQL>SQL> select group# from v$log where THREAD#=2;GROUP#----------34SQL> alter database disable thread 2;Database altered.SQL> alter database drop logfile group 4;alter database drop logfile group 4*ERROR at line 1:ORA-00350: log 4 of instance racdb2 (thread 2 needs to be archived ORA-00312: online log 4 thread 2: '/oradata/racdb/redo4'SQL> alter database clear unarchived logfile group 3;Database altered.SQL> alter database drop logfile group 3;Database altered.SQL> alter database drop logfile group 4;alter database drop logfile group 4*ERROR at line 1:ORA-00350: log 4 of instance racdb2 (thread 2 needs to be archived ORA-00312: online log 4 thread 2: '/oradata/racdb/redo4'SQL> alter database clear unarchived logfile group 4;Database altered.SQL> alter database drop logfile group 4;Database altered.SQL> select group#,member from v$logfile;GROUP#----------MEMBER-------------------------------------------------------------------------------- 1/oradata/racdb/redo12/oradata/racdb/redo2SQL> select THREAD#, STATUS, ENABLED from v$thread;THREAD# STATUS ENABLED---------- ------ --------1 OPEN PUBLIC对 undo 的处理:SQL> show parameter undoNAME TYPE VALUE------------------------------------ ----------- ------------------------------undo_management string AUTOundo_retention integer 900undo_tablespace string UNDOTBS1SQL> select tablespace_name from dba_tablespaces where contents='UNDO'; TABLESPACE_NAME------------------------------UNDOTBS1UNDOTBS2SQL> drop tablespace UNDOTBS2 including contents and datafiles;T ablespace dropped.SQL> select tablespace_name from dba_tablespaces where contents='UNDO'; TABLESPACE_NAME------------------------------UNDOTBS1SQL>对 temp 的处理:create temporary tablespace TEMP1 tempfile '/oradata/racdb/temp01.dbf' size 50M autoextend off;SQL> select name from v$tempfile;NAME---------------------------------------------------------------------------------------------------------------------------------------------/oradata/racdb/RACDB/datafile/o1_mf_temp_4jtl9yfl_.tmpSQL>SQL>SQL> select tablespace_name from dba_tablespaces wherecontents='TEMPORARY';TABLESPACE_NAME------------------------------TEMPSQL> create temporary tablespace TEMP12 tempfile '/oradata/racdb/temp01.dbf'3 size 50M autoextend off;T ablespace created.SQL> alter database default temporary tablespace TEMP1; Database altered. SQL> drop tablespace TEMP including contents and datafiles; T ablespace dropped. SQL>再配上 tnsnames.ora 及 listener.ora。
oracle10g使用RMAN和flash_recovery_area进行自动备份恢复oracle 10g使用RMAN和flash_recovery_area进行自动备份恢复文章分类:数据库本文摘自互联网,经过自己实际检测应用,并做了详细修改。
1.配置控制文件自动备份从9i开始,可以用rman来配置控制文件的自动备份,默认备份到$ORACLE_HOME/dbs目录下,如果是10g且使用了闪回区(flash_recovery_area),则备份到闪回区。
使用rman配置控制文件自动备份,前提是一定要设置数据库为归档模式,否则不生效。
1.1环境用下面的命令查看SQL> select * from v$version;SQL> archive log listSQL> show parameter recovery;NAME TYPE VALUE------------------------------------ -----------------------------------------db_recovery_file_dest string /oracle10/flash_reco very_area db_recovery_file_dest_size big integer 1048Mrecovery_parallelism integer 01.2配置控制文件自动备份$ rman target /RMAN> configure controlfile autobackup on;old RMAN configuration parameters:CONFIGURE CONTROLFILE AUTOBACKUP OFF;new RMAN configuration parameters:CONFIGURE CONTROLFILE AUTOBACKUP ON;new RMAN configuration parameters are successfully stored RMAN>RMAN> show controlfile autobackup;RMAN configuration parameters are:CONFIGURE CONTROLFILE AUTOBACKUP ON;RMAN>1.3 测试1.3.1 创建1个新的表空间(在数据库结构发生变化时,就会自动备份控制文件)$ sqlplus / as sysdbaSQL> create tablespace tbs_test datafile'/oracle10/oradata/ora10g/tbs_test_01.dbf' size 10M;Tablespace created.1.3.2观察alert_ora10g ($ORACLE_BASE/admin/$ORACLE_SID/bdump)日志文件,发现发生了控制文件的自动备份Tue Jan 8 20:52:15 2008create tablespace tbs_test datafile'/oracle10/oradata/ora10g/tbs_test_01.dbf' size 10MTue Jan 8 20:52:19 2008Starting control autobackupControl autobackup written to DISK devicehandle'/oracle10/flash_recovery_area/ORA10G/autobackup/2008_ 01_08/o1_mf_s_6 43495940_3r6wj9j1_.bkp'Completed: create tablespace tbs_test datafile'/oracle10/oradata/ora10g/tbs_test_01.dbf' size 10MPS:其实控制文件和spfile同时被自动备份了1.3.3观察闪回区的文件cd[oracle10@seagull ~]$ cd/oracle10/flash_recovery_area/ORA10G/autobackup/2008_0 1_08/[oracle10@seagull 2008_01_08]$ ls -ltotal 6988-rw-r----- 1 oracle10 oinstall 7143424 Jan 8 20:52o1_mf_s_643495940_3r6wj9j1_.bkp1.4恢复控制文件和spfile1.4.1恢复控制文件到一个临时目录下RMAN> restore controlfile to '/tmp/control01.ctl' from autobackup; 文件默认从最近的一个备份进行回复,可以把生成的文件copy到原始的控制文件存放目录/$ORACLE_BASE/product/oradata/[instance]/control01.ctlPS:如果数据库没有mount,则此操作会报错,可以采用set dbid 命令或者恢复时指定自动备份集(restore controlfile to 'xx' from 'xxxx')。
RMAN备份(一)在手工备份恢复的操作中,介绍了如何使用操作系统命令拷贝整个文件,拷贝的文件包括数据文件、控制文件和归档日志文件,然后使用这些文件还原并恢复PRACTICE 数据库。
在操作过程中,用户必须自己管理备份和恢复操作,必须创建需要拷贝和还原的数据库文件清单。
在本练习中,我们介绍RMAN如何使用服务器相关组件替用户处理备份的细节,当使用RMAN进行数据库备份时,RMAN知道需要对哪些文件进行操作。
用户管理与服务器管理的备份与恢复之间的根本不同之处就是:对于用于管理操作DBA必须知道需要备份什么以及需要还原与恢复什么;而对于服务器管理的操作,RMAN 将通过一个简单的接口决定需要备份什么以及需要还原与恢复什么,大部分管理任务被省略或简单化了。
例如:在前面描述的打开数据库备份,如果是用户管理备份,则在拷贝数据库数据文件之前,必须为每一个表空间创建清单并将表空间置于备份模式,并产生额外的重做;而RMAN备份打开数据库时,并不自动产生额外的重做。
RMAN处理的数据文件备份与用户管理有什么不同?RMAN智能化程度很高,对要备份的数据文件中任何更改的数据块的SCN保持跟踪记录,通过数据库的活动可以对备份文件的更改继续进行。
在恢复阶段,RMAN将自动应用需要的重做并使文件处于一致的状态。
在备份期间,有可能出现RMAN拷贝的数据块没有被DBW(数据库写入器)进程完全写入到磁盘的现象,从而导致数据块头部与尾部不一致,这种现象称之为“断裂”或“破碎”块,当检测到这样的数据库时,RMAN将重新读取该块,直到完成完整的拷贝。
因此,RMAN可以以最小的性能降低为代价对打开的数据库进行备份。
恢复管理器为数据库的备份提供了三种不同的方法:备份、映像拷贝以及代理拷贝。
尽管三种方法都能提供恢复或数据库失效时所需要的数据库备份结果,但每种方法都有其优缺点:一、 备份RMAN备份在选择的备份介质上以自己的格式创建一个或多个物理文件,这些物理文件称为“备份片”,备份可以由数据库、选择的表空间、数据文件、控制文件、归档重做日志或多种混合体组成。
z数据文件和控制文件可以合并在同一备份中;z归档日志文件必须与数据文件和控制文件分开备份。
RMAN创建的备份文件(备份片)不能被其他任何工具读取,因此只能用RMAN还原,为了解这些备份是如何创建,需要理解如下基本术语:z通道:通道是从目标数据库到备份介质的通信途径,这个通道类型可以是磁盘或者是“SBT_TAPE”(SBT代表系统备份到磁带),并且通道可以设置许多参数来规定备份片的大小、同时打开的文件数以及文件读取的速度。
在实际使用备份开始之前至少要分配一个通道,当然也可以使用多个通道;z备份集:备份集就是当运行备份命令时生成的物理文件的逻辑组合,至少要为一个备份创建一个备份集,但通常使用多个备份集,参数filesperset参数用来控制一个备份集中备份的文件,参数setsize设置每个备份集的最大尺寸。
如果分配了多个通道,RMAN将为每个通道创建一个备份集,并对备份集中的备份文件进行分隔,这样每个备份集大小相近;z备份片:备份片是RMAN在备份期间创建的物理文件,该文件将包含来自目标数据文件、控制文件和归档中作日志得到的实际数据块,每个备份集至少包含一个备份片,但也可以包含多个,一个数据文件可以跨越多个备份片;z格式(format):格式是备份期间赋予生成备份片的文件名,当备份到磁盘时需要提供备份片的全路径;z标记(tag):标记是用于标记一个备份的一个有意义的名称。
例如,Sunday Level 0备份或许意味着Sun-Lev0,RMAN可以直接使用这个标记从一个指定的备份中重建文件,标记文件最大长度为30个字符,而且一个标记可以用于多个备份;z备份键值:RMAN创建的每个备份都赋予了确定身份的一个唯一序列号。
当执行backup命令时,请考虑如下问题:1)备份时数据库处于什么状态?(数据库状态)2)RMAN备份需要保存到什么地方?(设置目的地)3)需要备份的是数据库的那些部分?(数据库文件)4)需要拷贝数据库文件的哪些数据块?(增量级别)下面将讨论备份时需要考虑的这些问题:1、确定备份集数据库状态:首先,RMAN可以在两种不同的数据库状态之间进行备份,这两种状态分别是数据库关闭和打开时进行备份。
z关闭数据库备份:类似于用户管理的关闭数据库的备份,目标数据库没有打开,但不同于用户管理的备份,RMAN期望数据库处于加载状态,RMAN在关闭数据库备份时必须访问目标数据库控制文件以获取结构信息;z打开数据库备份:类似于用户管理的打开数据库的备份,目标数据库处于打开状态,但RMAN不同之处是:在备份期间没有将表空间置于备份模式,不会产生额外的重做。
2、确定备份集目的地:接着,当执行RMAN备份命令时,RMAN将生成一个或多个文件(备份片),这些文件除了备份的数据块之外还存储了RMAN的控制信息,为RMAN创建的备份片赋予有意义的名称可以避免无人知道磁盘或磁带上的文件来历或内容。
下面是一些可用的格式变量:z%d 数据库名称;z%n 为数据库名增加1个或多个x字母使长度达到8个字符;z%s 备份集编号,这些编号来源于目标控制文件,从1开始每次递增为1,如果控制文件重新生成,则该编号回到1重新开始;z%p 备份集内备份片的编号,第一个备份片的号码是1,而且在同一备份集中每个新的备份片递增量为1;z%t 备份的时间值,该值是从以前某个参考时间开始到现在的秒数;z%u 一个8位字符的值,来自于备份集数字和备份的时间;z%c 备份集中的备份片的拷贝数,除非指定为双备份外,否则该值一直是1;z%U 生成一个唯一的由%u_%p_%c组成的文件名,如果没有指定备份文件的格式,默认值为%U。
下表列出一些使用这些格式变量的示例,如果备份到磁盘必须指定路径名和文件名,如果没有制定路径名,备份通常情况存储到$ORACLE_HOME/dbs指定的格式示例结果dbinc0_%d_%s_%p_%t dbinc0_PROD_21_1_447001901 tbsUSERS_%U tbsUSERS_08ade506_1_1 al_%n_%t_%s_%p al_PRODXXXX_44157468_41_3 3、确定备份集数据库文件:下一步,定义属于RMAN备份范围的属于,在执行一个单独的backup命令时,需要制定包含在备份集中的数据文件,这些文件包括数据文件、控制文件和归档日志文件。
可以应用如下备份选项:z整体数据库备份:备份集中包含了目标数据库中所有的数据文件和控制文件的数据块,在备份命令之后关键字DATABASE指定进行整体数据库备份,例如BACKUP(DATABASE);z表空间备份:指定表空间所有数据文件的数据块拷贝到备份集中,在备份命令后,用关键字TABLESPACE指定进行表空间备份,例如:BACKUP(TABLESPACE SYSTEM,USER);z数据文件备份:用备份命令后用关键字DATAFILE指定进行数据文件备份,例如:BACKUP (DATAFILE 1,2,3,4);z控制文件备份:数据库控制文件中的所有数据块拷贝到备份集中,在备份命令之后用关键字CONTROLFILE指定进行控制文件备份。
例如:BACKUP CURRENT CONTROLFILE。
当对系统表空间进行备份时,控制文件自动包含在备份中,因此一个完全的数据库备份包含在当前的控制文件;z归档日志文件备份:每个归档日志文件的所有数据块都拷贝到备份集中,在备份命令之后用关键字ARCHIVELOG指定进行归档日志备份,尽管可以用同样的备份命令备份数据文件、控制文件和归档日志,但RMAN将为归档日志创建一个独立的备份集,例如:BACKUP(ARCHIVELOG ALL)。
4、确定备份集的级别:数据文件由数据块组成,每个块都在更新时赋予一个系统更改号,当进行备份时,每个块从数据文件读出,只有符合备份级别条件的数据块才拷贝到备份集中。
因为归档日志文件和控制文件中所有的数据块都将复制,所以备份级别只属于数据文件备份,RMAN不从数据库文件中拷贝空的数据块到备份集中,只有进行映像拷贝时才拷贝空的数据块。
二、 压缩备份RMAN进行备份数据文件时,有两种模式的操作:增量式和完全式。
1、增量式备份(Ineremental Backup):采用增量式备份策略可以只备份上次增量备份之后更改的数据块,这样可以大大减少备份的数据量,并因此可以减少进行备份和还原所需要的时间和空间。
增量备份有备份级别的概念,级别是0到4之间的整数,当进行增量备份时,数据检查点SCN存储在目标控制文件中,随后的增量备份决定了需要拷贝那些SCN之后的数据块。
备份级别0是全集备份级别,在级别为0的备份中,要备份选中数据文件所有使用过的数据块。
增量备份有两种类型:z差异型:差异型备份拷贝最近进行的同级或低级增量备份以来所有改变的数据块。
例如,在级别为1的差异型增量备份时,所有最近级别为1的备份的数据将被拷贝;如果以前没有进行过级别为1的备份,则所有最新级别为0的备份以来的数据块都要拷贝,当备份命中使用incremental关键字时,则差异备份是RMAN默认的增量备份类型;z累积型:累积型备份拷贝最新级别增量备份以来的所有更改过的数据块。
例如,在级别为2的累积增量备份中,自从上次级别为1的增量备份以来的所有数据块都要拷贝。
如果没有进行过级别为1的备份,则自上次级别为0的增量备份以来的所有数据块都要拷贝。
上图给出了不同增量备份的一个基线,一个星期的每一天为数据文件生成一个备份集,实施这些备份的描述如下:z星期天进行级别为0的增量备份,数据块#2、#3、#4、#5和#6拷贝到备份集120中,这些块组成了选为备份的数据文件中的所有使用过的数据块。
级别为0的增量备份既不是累积型也不是差异型,这是作为增量备份策略的一个基准;z星期一进行级别为2的差异增量备份,自从星期天备份以来,数据文件中更改的块是#7,因此这个数据块是唯一拷贝到备份集121中的;z星期二进行级别为2的差异增量备份,自从星期一的备份以来,数据块#2中的一行数据更新了。
因为这个数据块是唯一被更新的,所以只有这个数据块被拷贝到备份集122中;z星期三进行级别为2的差异增量备份,自从星期二的备份以来,数据块#8插入了一行数据。
因为这个数据块是唯一更新的,所以只有这个数据块拷贝到备份集123中;z星期四进行级别为1的差异增量备份,自从最近一次的级别为1或更低级的备份以来,向备份集123拷贝所有更改过的数据块。
自从级别0的备份以来,没有进行级别为1的备份,因此自星期天0级备份以来所有更改的数据块都包含在这个备份集124中(#2、#3、#4);z星期五因为自从星期四的级别1的备份以来,数据增加到数据块#9,所以级别为2的增量备份将#2拷贝到备份集125中;z星期六因为自从星期五级别2的备份以来,数据块#2中数据更改,所有级别为2的增量备份将#2拷贝到备份集126中;z星期天进行级别为0的增量备份将所有使用过的数据块拷贝到备份集127中,又开始新一轮的循环备份。