• Oracle备份之RMAN


    1.备份:物理备份时文件层次的备份,逻辑备份时数据层次的备份,物理备份为主,逻辑备份作为补充。
    物理备份分为用户管理备份和RMAN备份,前者使用SQL命令和OS的cp命令进行文件备份,后者使用RMAN工具份。
    Undo Segment:修改记录过程中,记录修改前的状态会被记录到Undo Segment中,这条记录叫作前镜像(before images)。当需要撤销修改比如执行rollback时,就用这条前镜像覆盖现有记录。对于Insert操作,前镜像就是一个空记录,对于Update,Delete操作,前镜像就是修改之前的状态。
    2.在数据库恢复过程中,日志和Undo Segment是共同起作用的,二者保证了最终恢复的一致状态。对应两个阶段:前滚(rollforward)和(rollback)。在前滚阶段,在文件上重演日志文件,以把文件恢复到数据库关闭时的状态;但是数据库关闭的时可能很多修改没有提交,这些操作需要回滚,这就需要利用Undo Segment的内容了。
    RMAN是一个客户端工具,它本身不能进行真正的恢复工作,真正的工作由服务器上的Server Process完成的,当RMAN连接到数据库,会分配一个Server Process,并由它完成备份恢复操作。备份活动记录可以放在Target Database的控制文件,也可以保存一个单独的数据库catalog,需要考虑catalog数据库备份策略。
    3.RMAN支持备份磁盘和磁带,如果使用磁带库,需要通过厂商提供的介质管理库(Media Management Library,MML)进行操作。

    Flash Recovery Area空间监控:当空间使用达到90%时,会触发自动删除。删除过程会在alert中记录,如果没有空间可以释放,并且空间使用超过85%,就会记录一个warning日志;如果超过97%,会记录一条critical warning日志,这些日志内容可以从DBA_OUTSTANDING_ALERTS视图中看到。Image Copy不能备份到磁带上,只能备份到磁盘上。
    4.备份和恢复:DBA在SCN=100的时刻对数据库做了一个全备份,日志文件(包括归档日志和联机日志文件)中记录了随后的数据库修改操作。在SCN=500的时刻,数据库发生故障,比如因为存储介质故障导致数据文件丢失。这时,就需要从之前的备份中恢复出SCN=500的数据文件,然后在这个文件上重演100--500之间的日志(这些日志在归档日志和联机日志文件中),最后利用UNDO内容对未提交修改进行回滚,最终恢复到SCN=500的一致状态继续对外服务。具体过程如下图:

    Oracle备份之RMAN

    5.配置备份保留策略:基于恢复窗口和基于冗余的策略。
    a.基于恢复窗口的策略:RMAN>configure retention policy to recovery window of 7 days;
    保留的备份文件必须要保证恢复到近7天的任意时间点。
    恢复窗口用来定义数据库能够恢复到的最早时间点。
    假设备份策略是每周执行一次全备,本月1号、14号分作了一次全备,恢复窗口定义是7天,现在日期是23号。对于23号而言,恢复窗口7天就意味着要能确保恢复到7天前(也就是16号)的数据库状态。为了达到这个目的
    必须保留14号的全备份和14号之后的所有归档日志,因此,oracle把1号的备份、1号到14号的归档日志评估为过期(Obsolete)并可以删除,而14号的备份以及14号以后的归档日志就不能删除。
    b.基于冗余的策略:定义每个文件至少保留几份备份
    RMAN>configure retention policy to redundancy 2;
    每个文件至少要保留2份备份,如果有3个备份,则按照时间排序,最早那个备份会被评估为过期(Obsolete),可以删除。
    c.和保留策略相关的其他操作
    (1)查看备份策略:RMAN>show retention policy;
    (2)查看过期的Obsolete文件:RMAN>report obsolete;
    如果没定义备份策略,report obsolete会报错,RMAN>congfigure retention policy to none;
    RMAN>report obsolete;
    RMAN-00571:===============================================
    RMAN-00569:===========ERROR MESSAGE STACK FOLLOWS=========
    RMAN-00571:===============================================
    (3)通过指定Recovery Window:
    RMAN>report obsolete recovery window of 7 days;
    (4)通过指定Redundancy策略:
    RMAN>report obsolete redundancy 2;
    (5)根据保留策略删除过期文件
    RMAN>delete obsolete;
    (6)指定Redundancy备份策略:
    RMAN>delete obsolete redundancy 2;
    (7)指定Recovery Window策略的删除
    RMAN>delete obsolete recovery window of 4 days;
    (8)禁止保留策略:
    禁用备份策略以后,所有的备份都不会被评估为过期(Obsolete)的
    RMAN>configure retention policy to none;
    6.完全备份和增量备份
    如果采用Backup Set方式,全备份就是把数据文件中所有使用到得数据块进行备份;如果采用image copy方式,全备份就是对数据文件一个完整拷贝。而增量备份是把从某一个特定点以来发生变化的数据块做一次备份,这个特定点一般式指上次增量备份的时间点。增量备份产生的文件是backup Set,RMAN只能对数据文件进行增量备份,控制文件,日日志文件不能增量备份。增量备份是在数据块级别上的备份,是对从上次增量备份以来发生变化的数据块进行备份。这个机制有两个优势。其一,介质恢复时,直接用Backup Set中的数据块内容覆盖数据文件中的数据块内容就可以了,而如果使用归档日志进行恢复需要的步骤很多,因此使用增量备份进行恢复要比
    使用归档日志进行恢复快得多;其二,增量备份能够获取NOLOGGING操作的数据变化,而这些操作不会被记录到日志上,因此增量备份比只备份归档日志提供更多的数据保护。
    7.完全备份:
    RMAN>backup database;
    RMAN>backup as compressed backupset database;
    RMAN>backup as copy database;
    例子:先配置控制文件自动备份,然后配置自动备份的控制文件位置在/backup/test/autobackup/,文件格式%F,最后以Image Copy方式对数据库做完全备份,备份文件和数据文件名相同。
    run{
        configure controlfile autobackup on;
        configure controlfile autobackup format for device type disk to '/bakcup/test/autobackup/%F';
        backup as copy db_file_name_convert('+data/wxxrzxm','/backup/test') database;
    }
    在完成数据库备份后,自动备份控制文件,在使用Image Copy方式备份时,通过希望哎指定目录下产生的备份文件和原文件同名,这个可以通过db_file_name_convert参数实现。但注意这个关键字的位置是在datafile或database之前。
    RMAN>backup as copy db_file_name_convert=('+data/wxxrzxm/datafile','/backup/test') database;
    如果想把ASM上的数据文件备份到ASM上,这种方法可能会报错。ORA-15046
    RMAN>BACKUP AS COPY DB_FILE_NAME_CONVERT('+data/wxxrzxm/datafile','+arch/wxxrzxm2/datafile')database;
    ASM是用OMF方式管理数据文件的,OMF方式产生的数据文件名就是tag_name.file_number.incarnation number格式的,其中“incarnation number”是oracle内部产生的用来唯一标识每个文件的数字,这个值不允许手工指定。而上面的命令希望手工指定。因此会报错。
    可以用DBCA创建数据库时指去掉OMF功能,去掉OMF的方法就是选择第2个“Use Common Location for all Database Files”。
    8.增量备份
    a.增量备份只备份发生变化的内容。Oracle是以数据块作为基本存储单位的,每个数据块的块头都有SCN,代表最新的版本号。增量备份通过读取每个数据块头的SCN号,并与上次备份时Checkpoint SCN做比较,如果数据块的SCN大于等于checkponit SCN,就说明这个
    数据块可能发生了变化,RMAN就会对这个数据块做一个拷贝,并放在备份文件中。在以前的版本中,Oracle允许定义多个级别的增量备份,在oracle10g只允许0和1两级了,0级相当于做了一次全备份,但是全完备份不能做增量备份的0级使用。增量备份可以加快恢复速度和减少数据丢失,无论备份文件格式Backup Set还是Image Copy都可以享用增量备份的好处,但是只有image copy才能使用增量恢复备份。(Incrementally Updated Backup)
    b.增量备份种类
    增量备份算法可以分成两类:差异增量备份和累积增量备份
    c.差异增量备份(Differential Incremental Backup)
    备份要点在于,每次备份的内容是从上次0级或1级备份以来发生改变的内容。比如周日做0级备份,周一到周五都是1级备份,则周一备份的是周一当天发生的改变,依次类推。
    差异增量备份的语法:RMAN>backup incremental level=1 database;
    d.累积增量备份(Cumulative Incremental backup)
    重点在于每次备份的是从上次0级或1级备份以来发生的变化。比如周一备份的是周一发生的变化,周二备份的是周一和周二共2天的变化,周三备份的是周一、周二、周三共3天发生的变化。见图如下:

    Oracle备份之RMAN

    累积增量备份语法:RMAN>backup incremental level 1 cumulative database;
    Level 0:
    RMAN>run {
    backup as copy db_file_name_convert('+data/wxxrzxm','/backup/test') incremental level 0 database tag 'full_backup';
    }
    Level 1:
    RMAN>run {
    backup incremental level 1 cumulative for recover of copy with tag 'full_backup' database;
    recover coyp of database with tag 'full_backup';
    }
    9.Block Change Tracing(块改变跟踪)
    a.传统的增量备份为了获得需要备份的数据块,必须对数据文件中的所有数据块进行遍历,虽然增量备份减少了备份文件的体积,但是备份效率并不高。
    oracle提供了一个特殊的文件叫作Block Change Tracing File,每当数据块发生变化时,相关信息同时记录到这个文件中,这样当RMAN进行增量备份时,
    从这个文件就可以获得需要备份的数据块列表,而不必对所有数据块进行遍历,因此提高了增量备份的效率。
    b.启动Block Change Tracing
    Block Change Tracing功能缺省是关闭的,启用这个功能
    SQL>alter database enable block change tracing;
    如果不指定文件名称,Oracle会使用缺省的文件位置,这个文件可以从视图中查看:
    SQL>select * from v$block_change_tracking;
    通过命令手工指定文件位置:
    SQL>alter database enable block change tracking using file '/u04/oradata/ord/changetracking/chg01.dbf';
    启动Block change tracking之后就,Oracle会启动一个ctwr进程负责跟踪数据变化。
    ps -ef|grep ctwr;
    关闭Block Change Tracking
    SQL>alter database disable block change tracking;
    (1)查看是否启用Block change tracking
    SQL>select * from v$block_change_tracking;
    (2)1启动功能,指定文件
    SQL>alter database enable block change tracking using file '/backup/bck';
    (3)确认修改生效
    SQL>select * from v$block_change_tracking;
    (4)关闭功能并确认
    SQL>alter database disable block change tracking;
    select * from v$block_change_tracking;
    10.其他的RMAN命令
    备份数据库:backup database;
    备份归档日志:backup archivelog all;
    备份数据库,归档日志、同时删除归档日志:backup database plus archivelog delete input;
    Oracle 10g的备份命令增加了duration子句,可以明确告诉Oracle在备份过程中允许的资源消耗,比如希望在2个小时内完成备份:
    RMAN>backup duration 2:00 database;
    如果在指定的时间无法完成备份任务,RMAN会跑出错误,ORA-19591说明了错误原因是因为超出了指定的时间范围。
    如果不希望这种结果,可以使用partial关键字,RMAN会备份尽可能多的文件,而没有来得及备份的文件就会取消。使用Partial时,Oracle推荐同时指定fileperset 1参数,这样能保证产生的每个备份文件都对应一个数据文件。
    RMAN>backup duration 0:05 partial database fileperset 1;
    如果在指定的时间内没有完成备份,会把未完成的备份任务取消,而已经完成的保留。
    使用duration语句时,还可以通过关键字minimize load/time指定希望的负载状态。比如minimize load是希望备份消耗的负载最小。
    RMAN>backup duration 0:01 minimize load database;
    minimize time是希望花费时间最小:
    RMAN>backup duration 0:01 minimize time database;
    11.恢复命令
    数据库的恢复命令包括两个阶段restore和recover,分别对应者同名命令。
    在Oracle10g中,restore命令增加了一个preview子命令,这个命令可以用来提前确定RMAN将使用那些设备进行恢复。
    C:/>rman target /
    RMAN>spool log to abc.log;
    RMAN>restore datafile 1 preview;
    RMAN>restore database preview summary;
    RMAN>spool log off;
    RMAN>exit;
    restore datafile 1 preview的输出,可以看出RMAN将选择/backup/test/system01.dbf这个备份文件进行恢复,但是缺少必须的归档日志。
    12.查看、检查、维护备份记录
    RMAN>list backup;
    RMAN>list copy;
    如果是EXPIRED或者是X,则说明这个文件不可用,可能从磁盘上删除了。但是RMAN不会自动进行检查,必须使用crosscheck命令检查。
    RMAN>crosscheck copy; 输出的failed,succeeded表明检查结果,之后用list命令重新查看,这回对应的文件状态都变成了X,也就是说这些磁盘文件不复存在了。
    RMAN>delete expired copy;
    13.通过视图查看备份状态
    Oracle 10g中新增了2个视图:v$rman_output和v$rman_status,从第一个视图中可以查看每个任务的日志,第2个视图可以查看备份任务的完成状态。
    SQL>select output from v$rman_output;
    查看每次备份任务的完成状态:
    select command_id,row_type,operation,status from v$rman_status order by command_id desc

    转自:http://blog.sina.com.cn/s/blog_a32eff2801011fhn.html

  • 相关阅读:
    d3.js了解
    java常用验证码
    连接数据库的配置文件
    MD5加密的使用
    ssm下载文件
    Ajax基于rest风格上传图片
    web常见页面错误整理
    前后端一起用cookie来保存密码
    通用mapper插件
    ssm的maven依赖,直接复制可以使用
  • 原文地址:https://www.cnblogs.com/z-books/p/4109369.html
Copyright © 2020-2023  润新知