首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Oracle 备份之RMAN施用

2013-07-25 
Oracle 备份之RMAN使用RMANRMAN只能在Archive log模式下进行,因为备份模式只能是热备份。 --经测试,非归档

Oracle 备份之RMAN使用

RMANRMAN只能在Archive log模式下进行,因为备份模式只能是热备份。 --经测试,非归档模式在mount 层次下,noarchive也可以备份。但open状态是不可以备份活动数据文件的。RMAN只会备份有用的数据块。通过以下方式连接目标库:C:\Users\anker>rmanRMAN> connect target sys/system@orcl连接到目标数据库: ORCL (DBID=1325028359)备份整个数据库 backup database;备份完成的文件存放在%db_recovery_file_dest%\ORA_SID\BACKUPSET\YYYY-MM-DD\*.bkp备份的内容包括:数据文件(不包括临时文件)控制文件参数文件(SPFILE)--不会备份重做日志文件,因为此三个文件在open时是活动的。所以备份在线重做日志文件没有意义。在备份时打印的文字描述,分配的通道对应Oracle的一个session,也就是一个进程/线程在执行。使用run命令,实现多个功能顺序执行。run{allocate channel cl device type disk;--备份的内容放在磁盘上allocate channel c2 device type disk;--第二个通道也放在磁盘backup as compressed backupset database;--以压缩的方式备份}当多个通道同时备份数据文件时,各个数据文件的scn会不一致。打印的日志如下:可以看出,此次指定的通道算是私有通道,执行之前先把上次的公有通道释放掉。两个私有通道并行执行。通道的执行数量要与磁盘驱动器(磁盘写头)相等,若大于也没有用处。备份完成之后,私有通道也会释放掉。释放的通道: ORA_DISK_1分配的通道: cl通道 cl: sid=158 devtype=DISK分配的通道: c2通道 c2: sid=139 devtype=DISK启动 backup 于 23-6月 -13通道 cl: 启动压缩的全部数据文件备份集通道 cl: 正在指定备份集中的数据文件输入数据文件 fno=00003 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF输入数据文件 fno=00004 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF输入数据文件 fno=00002 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF通道 cl: 正在启动段 1 于 23-6月 -13通道 c2: 启动压缩的全部数据文件备份集通道 c2: 正在指定备份集中的数据文件输入数据文件 fno=00001 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF输入数据文件 fno=00005 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF通道 c2: 正在启动段 1 于 23-6月 -13通道 cl: 已完成段 1 于 23-6月 -13释放的通道: cl释放的通道: c2--查看备份集list backup;--以下是打印的结果,以下信息来自于控制文件BS Key关键字指的Oracle本身产生的ID,标示备份集。Type指的是全量备份(Full)还是增量备份。LV指的增量备份的级别,全量(FUll)默认为空Device Type指的备份机的存放位置Elapsed Tie 指备份时花费的时间。Completion TIme 指备份集完成的时间点。BP Key指的备份片的关键字,一个备份集可以包含多个备份片Status指的备份片状态Compressed指是否备份了。Tag: 用于标示被备份是否是一致性生产的。恢复的时候会用到tagPiece Name指备份文件的名称Ckp SCN指最后checkpoint的 SCN号Ckp TIme 最后的checkpoint SCN对应的时间NAME 备份文件名称BS Key  Type LV Size       Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ------------ -------------------28      Full    104.72M    DISK        00:00:42     2013/06/23 21:28:27        BP Key: 28   Status: AVAILABLE  Compressed: YES  Tag: TAG20130623T212745        Piece Name: F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2013_06_23\O1_MF_NNNDF_TAG20130623T212745_8WF  List of Datafiles in backup set 28  File LV Type Ckp SCN    Ckp Time            Name  ---- -- ---- ---------- ------------------- ----  1       Full 12713208   2013/06/23 21:27:46 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF  5       Full 12713208   2013/06/23 21:27:46 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF--清掉已物理删除的备份集crosscheck backupset;delete expired backupset;--清楚已物理删除的archivelogcrosscheck archivelog all;delete expired archivelog all;--修改rman中,日期显示格式export NLS_DATE_FORMAT='yyyymmdd hh24:mi:ss';set nls_date_format=yyyy/mm/dd hh24:mi:ss--Windows环境设置(此处注意不能有引号)--设置英文模式格式,修改的是环境变量,注册表中也包含此信息set nls_lang=american_--备份恢复的过程--查看备份的文件list backup of database;--备份的数据文件list backup of controlfile;--备份的数据文件list backup of datafile;--备份的数据文件RMAN> restore preview database;--预览oracle指定的恢复文件,默认是使用最近的备份文件。只是针对数据文件RMAN> restore database;--恢复文件,注意若备份时包括多个数据文件,会全部重新覆盖掉。不会恢复控制文件及spfile等。RMAN> recover database; --利用归档日志恢复数据,即可以打开数据库,需要注意的地方。rman恢复会优先使用重做归档日志。RMAN> restore database from tag xxxxxxx;--指定恢复用的备份集文件在rman中执行sql,但不返回结果。sql'select * from table T';--备份表空间backup tablespace users,DW--备份数据文件backup datafile 4,3--备份控制文件,current指的controlfile的状态。backup current controlfile;--备份spfilebackup spfile;--备份归档日志backup archivelog all;--备份所有归档日志。每次备份时,会先切换并归档下当前日志。backup archivelog all not backed up;--备份尚未备份的日志文件。会跳过已备份的文件。backup archivelog all delete all;--备份后,删除重做归档日志。--rman 不能备份临时文件,不能备份在线重做日志文件。--删除所有的备份文件delete backupdelete noprompt backup;--无提示确认直接删除所有的文件删除备份集delete backupset 19;--BS KEYshow all;--显示所有的参数CONFIGURE RETENTION POLICY TO REDUNDANCY 1;--配置保留备份的策略:1report obsolete;--输出所有的废弃的备份集delete obsolete;--删除所有的已废弃的备份集--自动备份数据库,并删除已废弃的备份集,且会自动删除无用的归档日志--备份之后,所有的之前的备份集都变无效了。--切换日志,然后将日志备份run{backup database;delete noprompt obsolete;backup archivelog all;}configure retention policy to recovery window of 7 days;--保留备份策略为7天--我理解的保存7天指的对于当前时间,可以通过备份集最早可以还原到7天之前的数据。CONFIGURE RETENTION POLICY REDUNDANCY 3;--意味着当备份完第三次后,当备份第四次时,第一次的备份结果会被标示为废弃。CONFIGURE RETENTION POLICY CLEAR--可以使用命令恢复策略为默认值。CONFIGURE RETENTION POLICY TO NONE--此时REPORT OBSOLETE和DELETE OBSOLETE将不把任何备份文件视为废弃CONFIGURE BACKUP OPTIMIZATION ON--默认值会为#缺省--备份时,已备份的东西不会再进行备份 list backup of archivelog sequence 344--查看备份的archivelog,指定序号 CONFIGURE DEFAULT DEVICE TYPE TO DISK;--Oracle 备份到磁盘CONFIGURE CONTROLFILE AUTOBACKUP OFF;--默认只要备份涉及system表空间,就会自动备份控制文件和spfile。当设置为on时,不管备份什么,都会备份控制文件和spfile。备份的控制文件和spfile文件会存放在另外一个为AUTOBACKUP的目录里面。CONFIGURE CONTROLFILE AUTOBACKUP CLEAR;--去除配置,还原默认值。CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'--设置控制文件的备份的格式,当指定备份的目录时,此参数才会起作用。比如BACKUP DATABASE FORMAT  'D:\DB_BACKUP\%d_%T_%U.bak'%d=数据库的名称%T=日期时间%U=生成唯一的数字alter system set db_recovery_file_dest='';--当设置为空时,备份时会默认存放在此目录(windows)。F:\oracle\product\10.2.0\db_1\databaseCONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;--默认是启动一个通道去备份CONFIGURE DEVICE TYPE DISK PARALLELISM 2;--修改为2个。那么有两个通道去备份,实际上也是两个线程同时备份。CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO有三个参数COPY 拷贝文件。--选择此类型后,备份的文件会存放在F:\oracle\product\10.2.0\db_1\flash_recovery_area\ORCL\DATAFILE(Windows)下面。BACKUPSET 普通的文件COMPRESSED BACKUPSET 压缩文件COPY的话,相当于生成一个文件备份。下面的copy语句命令:COPY datafile 4 to 'c:\temp\user01.dbf';CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default备份时,生成的备份个数。当设置为2时,进行备份的时候,会遇到下面的错误:ORA-19806: 在恢复区内不能进行双重备份恢复区指的db_recovery_file_dest的目录。当指定其他目录时,不会出现这个错误:backup datafile 4 format 'C:\temp\data_file4_%U_%T.BAK';CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; 针对归档日志的备份份数。CONFIGURE MAXSETSIZE TO UNLIMITED;设置备份集的最大大小。一个数据文件只能存放在一个备份文件,所以此大小要至少比最大的数据文件要大,否则无法备份。当设置此值时,备份的时候会生成多个文件。REPORT SCHEMA显示所有的数据文件和临时文件CONFIGURE ENCRYPTION FOR DATABASE OFF; # defaultCONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default设置备份的加密CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'F:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\SNCFORCL.ORA';控制文件的快照文件备份时,还是要找个控制文件的静止时间,但控制文件需要一直读写中。当备份控制文件时,实际上备份的是备份的控制文件的快照,当备份完之后,再把控制文件与此快照进行下同步。此命令是设置快照控制文件的位置。----------------------------------------------Nocatalog方式 就是用control file作为catalog,每一次备份都要往控制文件里面写好多备份信息,控制文件里面会有越来越多的备份信息。因此,当使用rman nocatalog方式备份时,备份controlfile是非常重要的。由于nocatalog时利用controlfile存放备份信息,建议将Oracle参数文件中的CONTROL_FILE_RECORD_KEEP_TIME值加大(缺省为7天), 参数在$ORACLE_HOME/dbs/initSID.ora中,该参数control_file__record_keep_time设置备份信息保存时间,到规定时间就自动清除以前的备份信息。RMAN的备份的信息是保存在本机的控制文件中。那么当控制文件出现问题后,也就无法使用rman的备份集进行恢复。那么oracle建议把同时要把备份信息放在其他服务器一份。那么当控制文件出现问题,可以从其他服务器进行恢复。备份的数据库成为target DB,另外一个数据库称为catalog DB。在catalog DB中创建用户create user rman identified by rman;grant connect,resourc,recovery_catalog_owner to rman;在target DB上执行,或者catalog db,或者其他DBrman target sys/system@orcl catalog rman/rman@catalogcreate catalog;--在catalog db中创建很多对象(表等等),会把target中的控制信息复制到这些对象中。register database;--将target db中的控制信息放入catalog db--从catalog db中 db表中可以查询到target db的记录select * from rman.db;resync catalog;--重新同步备份信息show parameter control;list backup;--若连接上catalog,则信息直接从catalog中读取,而不是target db的控制文件。--删除控制文件,重建控制文件alter database backup controlfile to trace;--会在udump文件夹中创建控制文件的脚本shutdown immediatestartup nomount--重启到nomount状态,把需要的内容进行创建catalog;(备份文件还在)会把在控制文件中丢失的备份信息,读到catalog中catalog backuppiece 'datafile position'指定要恢复的备份片,在nocatalog模式下,也可以恢复。-----------------------------------------------rman acb;--输入错误显示rman的命令rman cmd.file执行cmd命令文件一个简单的cmd文件例子dbbak.sqlrun{backup as compressed backupset backup;delete noprompt obsolete;backup archivelog all;}创建bat文件,注意文件命名不写成rman.bat。因为有可能会造成死循环。rman target sys/system@orcl cmdfile = 'c:\dbbak.sql' log = 'c:\backup.log' append checksyntaxlog指定日志文件的位置append指定日志是追加的方式checksyntax指检查语法,但并不执行备份。只是确保下语法的正确性。真正备份的命令文件,需要去掉checksyntax。在Oracle RMAN创建执行备份的脚本,此功能只能在catalog模式下才能执行。create script scr1{backup as compressed backupset database;delete noprompt obsolete;backup archivelog all;}list script names;打印目录中存储的脚本列表print script scr1;打印脚本内容run{execute script scr1;}执行脚本scr1print script scr1 to file 'c:\a.txt';把脚本scr1的内容写到c盘a.txt文件中。replace script scr1 from file 'c:\a.txt';将c盘的a.txt文件中的内容替换掉scr1脚本创建全局脚本create global script gsrc1{backup as compressed backupset database;delete noprompt obsolete;backup archivelog all;}全局脚本指当连接到catalog库的target数据库,都能访问到的script查看全局脚本list global script names;run{execute global script gscr1;}delete global script gscr1;删除全局脚本------------------------------------------------rman的增量备份增量备份分两种:Differential versus CumulativeLevel 0:完全备份backup incremental level=0 database;Level 1:增量备份 differentialA differential incremental backup contains all blocks changed since the last incremental backup.backup incremental level=1 database;Level 1c:累积备份 cumulativeA cumulative incremental backup contains all blocks changed since the last level 0 incremental backup.backup incremental level=1 Cumulative database;alter system archive log current;--只能用在归档模式,用于手动归档。alter system switch logfile;--切换日志,在归档模式下,就会立马进行归档。查看增量备份的日志打印,Incr为增量备份,0指的为0级备份.Cumulative与differential从日志打印是看不出的。BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间------- ---- -- ---------- ----------- ------------ ----------77      Incr 0  486.47M    DISK        00:01:05     09-7月 -13        BP 关键字: 79   状态: AVAILABLE  已压缩: NO  标记: TAG20130709T215634段名:F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2013_07_09\O1_MF_NNND0_TAG20130709T215634_8XR5NM4F_.BKP  备份集 77 中的数据文件列表  文件 LV 类型 Ckp SCN    Ckp 时间   名称  ---- -- ---- ---------- ---------- ----  1    0  Incr 13351366   09-7月 -13 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF  5    0  Incr 13351366   09-7月 -13 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF实验,周一插入,增量备份 sys.tt 5实验,周二插入 sys.tt 6周三 累积备份 7周四 增量备份 8list backup of database summary;--只列出备份的统计信息restore 貌似只针对0级备份或全备份的文件,进行恢复数据库。而recover针对当前数据库,使用增量文件或者日志文件进行恢复。相比rman,其他的备份缺点1.需要shutdown或者offline2.热备份,生成的日志特别多。3.需要OS copyrman解决了上面的问题,它使用专用的内部进程去备份。另外一个RMAN的优势,解决数据块的损坏:data block corrupted使用以下命令检查数据文件是否存在损坏的块:dbv file=data file position打印如下:标记为损坏的总页数: 0--标示数据块损坏的个数打印内容包括损坏的块rman中检查坏的数据块:backup validate database;检查后的损坏的块存放在下面的视图中:v$database_block_corruption使用rman恢复损坏的块:blockrecover datafile 4 block 730;--此命令在9i之后才支持当修复后,v$database_block_corruption视图中的数据不会更新,只有重新执行下面的命令backup validate database;当存在corrupt的块时,rman备份此数据文件不会成功,会提示错误。oracle默认0坏块的情况下才能备份。通过以下的命令设置允许存在1个坏块的情况下,进行备份。run{set maxcorrupt for datafile 4 to 1;backup datafile 4;}

?

热点排行