文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>一步一步学RMAN--1-5篇

一步一步学RMAN--1-5篇

时间:2010-10-12  来源:sdwjian

第一篇 进入RMAN
[君三思] 2007-6-5

哈哈~~~~~

天苍苍野茫茫,三思终于又出场。

要问三思来干啥,来把RMAN讲一讲。

吃喝玩乐 间 学习,心得体会一箩筐。

不管结论对与错,先把过程来分享。

如有异议务必提,共同学习共提高。

en, 写的还挺顺口,俺自满啊~~~~~以后俺要是找不着干dba的工作,俺就到说不得大师的玄幻世界里当吟唱诗人去。

  书归正传,在开始之前俺先强调一点, 通过RMAN的方式不论要备份还是要恢复,都必须先启动实例并加载数据库。 ( 有人在抗议,说这太初级了。俺说明一下,这是一个超级菜鸟摸爬滚打的心路历程,别说初级,连弱智的内容都有,所以俺友情提醒 大虾们务必开启初级内容过滤功能,以妨过多占用您宝贵时间,什么?你不会这一招,哎,我这里有秘制一目十行术,看你是大虾给你打8折,pm我吧 )

  RMAN有两种操作方式,一种是类似dos,通过键盘操作的 命令方式 ,第二种是类似windows通过鼠标操作的 图形化界面方式 。图形化方式操作简单但也因此省略了一些具体过程,你可能成功操作但却不知道oracle究竟做了什么,怎么做的。俺立志也是要做名oracle大虾地,所以第二种方式完全不在考虑之列,最多只是参考。本篇后续内容所做的各项操作也都将以命令方式进行。

一、 连接本地数据库

  通过rman连接本地数据库非常简单,以windows平台为例,进入到命令提示符界面:

    C:\Documents and Settings\Administrator>set oracle_sid=jssweb

    C:\Documents and Settings\Administrator>rman target /

    恢复管理器: 版本9.2.0.1.0 - Production

    Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

    连接到目标数据库: JSSWEB (DBID=3391142503)

    RMAN>

    注:如果本地库只有一个实例,则不需要指定oracle_sid。Rman会自动连接到默认实例。

  当然,你也可以先启动rman,然后再通过connect来连接目标数据库,如下:

    C:\Documents and Settings\Administrator>set oracle_sid=jssweb

    C:\Documents and Settings\Administrator>rman

    恢复管理器: 版本9.2.0.1.0 - Production

    Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

    RMAN> connect target /

    连接到目标数据库: JSSWEB (DBID=3391142503)

    RMAN>

二、 连接远程数据库

  如果要连接的目标数据库是一个远程数据库,那么必须在建立连接时指定一个有效的网络服务名,同时你本地的tnsname.ora文件中也必须已经建立了该网络服务名的正确配置。示例如下:

    C:\Documents and Settings\Administrator>rman target sys/ change_on_install @test db

    恢复管理器: 版本9.2.0.1.0 - Production

    Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

    连接到目标数据库: TEST DB  (DBID=22 2 0 2 62593)

    RMAN>

  当然,在这里你也可以同样先启动rman,再通过connect创建连接。具体示例与上类似,如果再做演示那这个环节不仅是弱,而是超弱,即使坚定如我也承受不了如此强烈的呕吐加鄙视的欲望,所以还是做罢吧。

三、 退出RMAN

  哈哈,退出就太简单啦,敲个EXIT试试~~~~~~

  还有一点各位新友也了解一下,对于以后写rman批处理会有帮助。在启动rman时可以指定日志输出,之前的示例中均没有指定,rman就将执行结果直接打印到屏幕了,如果我们以后写了一堆超长的rman批处理放在后台执行,可能会希望能够把执行日志记录下来备查,这个时候日志输出功能就用上了。这个功能也非常简单,如下:

    C:\Documents and Settings\Administrator>rman target /   log d:\logs\rman_log.txt

  rman 会将执行的结果直接输出到指定的d:\logs\rman_log.txt文件,一旦脚本放入后台执行出现问题,我们可以根据rman_log文件来辅助分析。

第二篇 RMAN命令知多少
[君三思] 2007-6-18

菩萨蛮 · 命令知多少

上一节讲了怎么进,这节开讲知多少

内容虽不多,排列费思量。

RMAN 贵灵活,应用是根本。

无须死硬记,策略定规则。

RMAN 非常有意思,做为一个专业的备份工具,它几乎考虑到了备份及恢复过程中可能遇到的各种操作,由此它也提供了各种各样的命令来为这些操作提供便利。

一、启动、关闭数据库

  在RMAN中执行关闭和启动数据库的命令与SQL环境下一模一样。当然,在执行之前,你需要先连接到目标数据库,如例:

    C:\Documents and Settings\Administrator>rman target /

    恢复管理器: 版本9.2.0.1.0 - Production

    Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

    连接到目标数据库: JSSWEB (DBID=3391142503)

    RMAN> shutdown immediate

    正在使用目标数据库控制文件替代恢复目录

    数据库已关闭

    数据库已卸载

    Oracle  例程已关闭

    RMAN> startup

    已连接到目标数据库 (未启动)

    Oracle  例程已启动

    数据库已加载

    数据库已打开

    系统全局区域总计     143727516 字节

    Fixed Size                      453532  字节

    Variable Size                109051904  字节

    Database Buffers              33554432  字节

    Redo Buffers                    667648  字节

    RMAN>

  当然,你也可以执行startup mount,然后再利用alter database open命令打开数据库以及shutdown normal,shutdown abort等。总之启动和关闭的命令跟SQL环境下相比就仨字儿:完全一模一样。

二、执行操作系统命令

Rman 支持通过执行host命令暂时退出rman的命令提示符而进入到操作系统的命令环境,如下例:

    RMAN> host;

    Microsoft Windows [ 版本 5.2.3790]

    (C)  版权所有 1985-2003 Microsoft Corp.

    C:\Documents and Settings\Administrator>cd \

    C:\>exit

    主机命令完成

    RMAN>

执行完系统命令后可以再通过执行exit退出到rman命令提示符下。

三、执行SQL语句

在rman中执行sql语句稍嫌复杂。

在RMAN的命令提示符后输入SQL命令,然后在一对单引号(双引号亦可)中输入要执行的SQL语句,例如:

    RMAN>  SQL ¨ALTER SYSTEM ARCHIVE LOG ALL¨ ;

需要注意的一点是, rman 中的sql环境不能执行SELECT语句 ,或者说执行不报错,但你也看不到结果。

其实我们完全可以通过更取巧的方式来实现更强大的SQL操作,比如利用第二项介绍的内容,如下:

    RMAN> host;

    Microsoft Windows [ 版本 5.2.3790]

    (C)  版权所有 1985-2003 Microsoft Corp.

    C:\Documents and Settings\Administrator>sqlplus /nolog

    SQL*Plus: Release 9.2.0.1.0 - Production on  星期四 6月 28 17:40:24 2007

    Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

    SQL> conn / as sysdba

    已连接。

    SQL> select sysdate from dual;

    SYSDATE

    ----------

    28-6 月 -07

    SQL> exit

    从Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

    With the Partitioning, OLAP and Oracle Data Mining options

    JServer Release 9.2.0.1.0 - Production 中断开

    C:\Documents and Settings\Administrator>exit

    主机命令完成

    RMAN>

萝卜青菜各有所爱,大家是爱萝卜还是爱青菜啊,爱萝卜的请选第一种,爱青菜的请选第二种。我爱吃肉,我要找第三种出来~~~~~

四、定义RMAN配置

RMAN 中具有一系列的默认配置,这些配置决定了备份和恢复时的一些选项(此节内容枯燥,眼神不好的同学请自觉跳过),比如:

  • 自动分配通道的配置;
  • 备份保留时间的配置;
  • 备份集大小的限制;
  • 启用或禁用备份优化功能;
  • 镜像复制的备份数量;
  • 是否将某个表空间排队在备份之外。

修改配置是通过 CONFIGURE 命令 ,具体用法非常简单,但由于可供configure的配置非常之多,这里不做详细介绍,在后续实际演练章节中会有体现。当然,有心的朋友也可以通过google搜索一下,更有耐心的新友就等着看俺写的外传。

五、显示RMAN默认配置

Rman 中可以利用show命令来显示当前的配置参数。例如,通过SHOW ALL显示当前所有的配置。

    RMAN> show all;

    RMAN  配置参数为:

    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;

    CONFIGURE BACKUP OPTIMIZATION OFF; # default

    CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

    CONFIGURE CONTROLFILE AUTOBACKUP ON;

    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ¨d:/backup/%F¨;

    CONFIGURE DEVICE TYPE DISK PARALLELISM 1; # default

    CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

    CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

    CONFIGURE MAXSETSIZE TO UNLIMITED; # default

    CONFIGURE SNAPSHOT CONTROLFILE NAME TO ¨F:\ORAHOME1\DATABASE\SNCFJSSWEB.ORA¨; #

    default

    RMAN>

注:配置项后面跟了# default的表示该项仍是初始配置,未被修改过。

该命令使用也相当灵活,其后跟上不同的类型的配置参数,即可以显示不同类型的配置,如:

SHOW CHANNEL;

SHOW DEVICE TYPE;

SHOW DEFAULT DEVICE TYPE;

六、列出备份信息

  LIST 命令用来查看通过RMAN生成的备份信息,照我看来,这个应用应该会非常少,大家了解即可(引申一下,不仅是list,俺基本认为备份这种操作,脚本一次定型,100年不许变,哪有DBA天天干备份恢复的,如果真是这样,那您这库。。。。。。)。例如:

    列出数据库中所有文件的备份信息:

    RMAN> LIST BACKUP OF DATABASE;

    列出指定表空间的备份信息:

    RMAN> LIST COPY OF TABLESPACE ¨SYSTEM¨;

    列出指定数据文件的备份信息:

    RMAN> LIST BACKUP OF DATAFILE ¨F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA¨;

七、删除备份

  用于删除RMAN备份记录及相应的物理文件。当使用RMAN执行备份操作时,会在RMAN资料库中生成RMAN备份记录,并且RMAN备份记录被存放在目标数据库的控制文件中,如果配置了恢复目录,那么该备份记录也会被存放到恢复目录中。

    1 、删除陈旧备份

    当使用RMAN执行备份操作时,RMAN会根据备份冗余策略确定陈旧备份。      

    RMAN>   delete obsolete ;

    2 、删除EXPIRED备份

    执行crosscheck命令核对备份集,那么会将该备份集标记为EXPIRED状态。为了删除相应的备份记录,可以执行delete expired backup命令。      

    RMAN>   delete expired backu p;

    3 、删除EXPIRED副本

    RMAN>   delete expired copy ;

    4 、删除特定备份集

    RMAN>   delete backupset 19 ;

    5 、删除特定备份片

    RMAN>   delete backuppiece ¨d:\backup\DEMO_19.bak¨ ;

    6 、删除所有备份集

    RMAN>   delete backup ;

    7 、删除特定映像副本

    RMAN>   delete datafilecopy ¨d:\backup\DEMO_19.bak¨ ;

    8 、删除所有映像副本

    RMAN>   delete  copy;

    9 、在备份后删除输入对象

    RMAN>   delete archivelog all delete input ;
    RMAN> delete backupset 22 format = ¨¨d:\backup\%u.bak¨¨ delete input;  

八、批处理命令RUN

重头戏来了,大家鼓掌。谢谢大家的掌声,RUN的用法虽然很简单,但run太重要了,是我们后面几乎经常都要遇到的,也正因此我不敢贸然下笔,于是我准备。

第三篇 RMAN备份演练初级篇
[君三思] 2007-6-21

  前面我们已经知道了如何进入rman,以及rman的一些基本命令,相信大家定会觉着rman操作的简单,事实也确实如此,但万不要因此小视rman的强大,简单往往意味着灵活,灵活对于那些有心人则意味着主动权尽在掌握。

一、RMAN备份形式

  1、镜像复制(Image Copies)

  镜像复制实际上就是数据文件、控制文件或归档文件的复制,与用户通过操作系统命令建立的文件复制实质一样,只不过RMAN是利用目标数据库中的服务进程来完成文件复制,而用户则是用操作系统命令。所以镜像复制的方式体现不出RMAN的优势,也并非我们讨论的重点,大家了解一下即可(啥?想知道镜像复制咋用?卡,问村长去~~~~~)。

  2、备份集(Backup Sets)

  备份集是通过RMAN创建的逻辑备份对象。一个备份集中可以包含多个数据文件、控制文件或归档文件。备份集在物理上是由多个备份片段组成,每个备份片段是一个操作系统文件。

二、RMAN命令执行方式

  在进入演练之前,大家还有必要了解运行rman命令的方式,就目前已知的情况,共有4种运行方式。

  1、单个执行(没啥说的,之前的示例都是这种方式)

    RMAN> backup database ;

  2、批处理(呵呵,跳票的补上)

    RMAN> RUN{

    .......................

    .......................

    }

  批处理方式实质是将原来单个执行的命令组合到一起,并放在run{}之间,这种方式最大的好处是所有在run中的命令被视为一个作业,如果作业中任何一条命令执行失败,则整个命令停止执行,即失败命令后的其它命令都不会再被执行。这种方式是最常使用的方式,特别对于后台执行。

  3、运行脚本(又能细分为几种方式如下:)

    C:\ > rman TARGET / @backup_db.rman

    RMAN> @backup_db.rman

    RMAN> RUN { @backup_db.rman }

  运行存储在恢复目录中的脚本(需要首先为rman创建恢复目录)

    RMAN> RUN { EXECUTE SCRIPT backup_whole_db };

  看看,够灵活吧。

  4、操作系统脚本(linux,windows环境下小有差异,但只是操作系统命令的不同)

    C:\ > rman cmdfile=backup_db.rman

  明眼人看的出来,后两种其实是前面两种加上操作系统命令的综合应用。

三、对数据库进行全备

  1、使用backup database命令执行备份

    RMAN> BACKUP DATABASE;

  执行上述命令后将对目标数据库中的所有数据文件进行备份,由于没有显式指定FORMAT参数,rman会自动为每个备份片段命名,并保存在ORACLE_HOME/database目录下。

  当然,也可以通过显式指定format参数来自定义备份片段的命令规则,比如:

    RMAN> BACKUP DATABASE FORMAT ¨D:\BACKUP\%U¨;

  ( 关于%U的格式说明,请参考本篇外传。Ooo,外传好像还没写,没关系没关系,大家表着急,我保证大家在有生之年一定等的到的。)

  2 、通过list命令查看刚刚创建的备份信息:

    RMAN> list backup of database;

    正在使用目标数据库控制文件替代恢复目录

    备份集列表

    ===================

    BS  关键字  类型 LV 大小       设备类型 经过时间 完成时间

    ------- ---- -- ---------- ----------- ------------ ----------

    11      Incr 0  827M       DISK        00:01:30     26-6 月 -07

    BP  关键字: 11   状态: AVAILABLE   标记:TAG20070629T150701

    段名:D:\BACKUP\0CILGG8L_1_1

       备份集 11 中的数据文件列表

       文件 LV 类型 Ckp SCN    Ckp 时间   名称

      ---- -- ---- ---------- ---------- ----

      1    0  Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\SYSTEM01.DBF

      2    0  Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\UNDOTBS01.DBF

      3    0  Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\DRSYS01.DBF

      4    0  Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\EXAMPLE01.DBF

      5    0  Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\INDX01.DBF

      6    0  Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\ODM01.DBF

      7    0  Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\TOOLS01.DBF

      8    0  Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\USERS01.DBF

      9    0  Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\XDB01.DBF

      10   0  Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA;

四、备份表空间

  只要实例启动并处于加载状态,不论数据库是否打开,都可以在rman中对表空间进行备份,而且不需要像手动备份那样先¨ALTER TABLESPACE ... BEGIN BACKUP¨。例如:

    RMAN> backup tablespace jweb;

    启动 backup 于  26 - 6 月 -07

    使用通道 ORA_DISK_1

    通道 ORA_DISK_1: 正在启动 full 数据文件备份集

    通道 ORA_DISK_1: 正在指定备份集中的数据文件

    输入数据文件 fno=00010 name=F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA

    通道 ORA_DISK_1: 正在启动段 1 于  26 - 6 月 -07

    通道 ORA_DISK_1: 已完成段 1 于  26 - 6 月 -07

    段 handle=F:\ORAHOME1\DATABASE\0JIM0BBV_1_1 comment=NONE

    通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:15

    完成 backup 于  26 - 6 月 -07

    启动 Control File and SPFILE Autobackup 于  26 - 6 月 -07

    段 handle=D:\BACKUP\C-3391142503-20070704-00 comment=NONE

    完成 Control File and SPFILE Autobackup 于  26 - 6 月 -07

  同样,我们在使用backup tablespace也可以通过显式指定format参数自定义备份片段名称。

  我们再通过LIST BACKUP 查看一下备份:

    RMAN>  LIST BACKUP OF TABLESPACE JWEB ;

  发现有两份备份片段,复习一下2章的内容,删除其中一个备份(删除的方法非常多,下例使用删除backupset,有心的朋友不妨自己尝试一下通过其它方式删除指定备份片段)。

    RMAN>  DELETE BACKUPSET 18 ;

五、备份指定数据文件

  首先可以先通过数据字典DBA_DATA_FILES查询出表空间对应的数据文件及其序号,例如:

  select  file_name,file_id,tablespace_name  from  dba_data_files

  然后再通过BACKUP DATAFILE 备份指定序号的数据文件,例如:

    RMAN>  BACKUP DATAFILE n;

  如果要查看指定数据文件的备份,可以用:

    RMAN>  LIST BACKUP OF DATAFILE n;

  注:n=指定的的数据文件序号,如果需要备份的数据文件有多个,n=多个序号,中间以逗号分隔即可。

六、备份控制文件

  控制文件在ORACLE中的重要性是毋庸置疑的,你看,连RMAN都给予特殊的照顾,在RMAN中备份控制文件的方式是最多的。

  1. 最简单的方式,通过CONFIGURE命令将CONTROLFILE AUTOBACKUP置为ON。

    RMAN>  CONFIGURE CONTROLFILE AUTOBACKUP ON;

  然后你再通过rman做任何备份操作的同时,都会自动对控制文件做备份。

  2. 在自动备份打开的情况下,备份任意表空间操作时,RMAN均会自动对控制文件做备份。

  3. 手动执行备份命令。

    RMAN>  BACKUP CURRENT CONTROLFILE;

  4. 执行BACKUP时指定INCLUDE CURRENT CONTROLFILE参数,例如:

    RMAN>  BACKUP DATABASE INCLUDE CURRENT CONTROLFILE;

  如果要查看备份的控制文件,可以通过:

    RMAN>  LIST BACKUP OF CONTROLFILE;

七、备份归档日志文件

  归档日志对于数据库介质恢复相当关键,其虽然不像控制文件那样一旦损坏则数据库马上崩溃但重要性丝毫不减。归档日志文件能确保我们将数据库恢复到备份之前的任意时刻。在RMAN中备份归档日志有两种方式:

  1 、利用BACKUP ARCHIVELOG命令备份

    RMAN>  BACKUP ARCHIVELOG ALL;

  2 、在BACKUP过程中利用PLUS ARCHIVELOG参数备份,例如:

    RMAN>  BACKUP DATABASE PLUS ARCHIVELOG;

    则在备份数据库的同时自动对所有归档文件进行备份。这种方式与上种有什么区别呢,区别太明显了,BACKUP.....PLUS ARCHIVELOG命令在备份过程中会依次执行下列步骤:

    1>. 运行ALTER SYSTEM ARCHIVE LOG CURRENT语句对当前redolog进行归档。

    2>. 执行BACKUP ARCHIVELOG ALL命令备份所有已归档日志。

    3>. 执行BACKUP命令对指定项进行备份。

    4>. 再次运行ALTER SYSTEM ARCHIVE LOG CURRENT对当前redolog归档。

    5>. 对新生成的尚未备份的归档文件进行备份。

  在完成归档日志文件备份后,我们通过需要删除已备份过的归档文件(归档文件记录下了数据库进行过的所有操作,如果您的数据库操作频繁而且量大,那归档文件大小也是相当恐怖,备份后删除释放存储空间是相当有必要地)。RMAN提供了DELETE ALL INPUT参数,加在BACKUP命令后,则会在完成备份后自动删除归档目录中已备份的归档日志。

  完成备份之后,可以通过下列命令查看已备份的归档日志片段:

    RMAN>  LIST BACKUP OF ARCHIVELOG ALL;

  综述:上述示例中出现的命令格式较多,但细细看来是否能发现些格式上的规律?比如查看备份基本都是LIST BACKUP OF备份项名称,如果想自定义片段的话则在备份命令后加上FORMAT参数(后三项没有列举加format参的示例,大家千万表以为是不可以哟,俺都说乐rman是超灵活地泥,大家一定要多多尝试,反正执行的是备份操作不是删除,又搞不坏目标数据库,你还有啥可担心的泥)。

第四篇 RMAN备份演练进阶篇
[君三思] 2007-6-28

忽悠

人间自有正义在,处处盛开自由花

三思也来玩布道,忽悠一 家 是一 家

  前篇介绍了通过rman进行各种备份,进阶篇则主要是rman的一些功能扩展和增加功能,利用前篇你已经完全可以完成数据库的备份,而通过本篇你可以更好更方便的完成数据库的备份。

一、建立增量备份

  如果数据库运行于不归档模式下,那么你只能在数据库干净关闭的情况下(以NORMAL、IMMEDIATE、TRANSACTIONAL方式关闭)才能进行一致性的增量备份,如果数据库运行于归档模式下,那即可以在数据库关闭状态进行,也可以在数据库打开状态进行备份。再次说明了打开归档模式的优势,归档日志也就是多占些磁盘空间,好处不是一些是很多,可是也相当于又给数据库加了层保险啊。

  建立增量备份也是相当简单,实质就是一个参数INCREMENTAL LEVEL=n,在执行BACKUP命令时加上即可,例如,建立一个增量级别0的全库备份:

    RMAN>  BACKUP INCREMENTAL LEVEL=0 DATABASE;

  再例如,建立一个增量级别1的users01.dbf数据文件备份

    RMAN>  BACKUP INCREMENTAL LEVEL=1 TABLESPACE SYSTEM DATAFILE ¨ F:\ORAHOME1\ORADATA\JSSWEB\ USERS01 . DBF¨;

  注:Rman默认创建的增量备份是Differential方式,如果要建立Cumulative方式的增量备份,在执行BACKUP命令时显式指定即可,例如:

    RMAN>  BACKUP INCREMENTAL LEVEL=2 CUMULATIVE DATABASE;

  关于增量备份概念性解释,比如Differential与Cumulative两种方式间的区别请参考本篇外传,括弧,外传整理中,如果您看到本篇的时候外传还没出,这个。。。。表着急,耐心等候,面包牛奶都会有的。

二、建立镜像复制

  首先大家需要明了这个概念,rman中的镜像复制实质与通过操作系统copy命令备份相同,甚至连命令的格式都相似,只不过直接应用操作系统的copy命令复制数据文件时,只是文件拷贝,而rman的copy则能够在复制的同时,验证数据的有效性。

  个人认为rman中的镜像复制应用有限,而且也体现不出rman的优势,所以俺也只是大致了解了概念,没有进行过实际操作,感兴趣的朋友可以自己做做试验,这里就不多做介绍了。

三、建立冗余备份

  RMAN 提供了一种更谨慎的备份策略: Duplexed 方式备份 ,其实质即是在生成备份集的同时,向指定位置生成指定份数(最大不超过4份)的备份集复制,以避免在灾难性事故时数据库损坏和备份丢失的情况下导致完全崩溃,提高备份可用性。当然,这是人类美好的愿意,对于那些没有异机异地备份条件的,假如机房发生火灾、地震之类大灾难,就算dba把备份文件复制了100份也照样玩完,上述是个假设,万勿对号入座,火灾、地震也不是哪都会发生地,大家好好活着,别害怕。

  RMAN 中提供了三种方式实现Duplexed方式备份:

  1 、在RMAN中执行BACKUP命令时显式指定COPIES参数。例如:

    RMAN>  BACKUP COPIES 3 DATABASE;

  上述命令将会在全库备份的同时,自动生成当前备份集的2份拷贝到默认备份目录。

  2 、在RUN{}命令块中利用SET BACKUP COPIES命令为该命令块中所有的BACKUP命令设置Duplexed方式,例如:

    RMAN>  RUN{

    2>SET BACKUP COPIES 2;

    3>BACKUP DEVICE TYPE DISK FORMAT ¨D:\BACKUP1\%U¨,¨D:\BACKUP2\%U¨ 

    4>TABLESPACE USERS,SALES;

    5>}

  上述命令将生成两份备份集,分别存储到d:\backup1和d:\backup2目录。

3 、通过CONFIGURE ..... BACKUP COPIES命令设置预定义的备份Duplexed方式。

  CONFIGURE ... BACKUP COPIES 命令可以为指定的设备类型设置默认的备份拷贝数量。这个配置仅适用于数据文件与归档重做日志文件和备份,并且,只有在使用自动分配的通道时才能够使用CONFIGURE ... BACKUP COPIES命令设置的配置。例如:

    RMAN>  CONFIGURE DEFAULT DEVICE TYPE TO DISK;

    RMAN>  CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE disk TO 2;

    RMAN>  CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE disk TO 2;

  上述命令将disk设置上数据文件与归档文件的拷备数量设置为2,当再执行BACKUP DATABASE备份时,即会自动生成2份数据文件的备份集。

四、设置RMAN备份的保存策略

  策略,啧啧,想不到咱也能说出这么专业的词儿啊,人家说专家就是能把任何事务都描述的很专业,我一定要再多学几个类似的词,要让自己离专家的距离更近一些,或者,我直接搬到eygle他们家床头边上住去~~~~

  如果你的数据库非常大,并且备份执行也比较频繁(废话,不大不频繁也得这么干,优秀的dba一定要拥有对应其身份的良好的工作习惯),有必要对你这些备份文件的保存制订合理的策略。该挪的挪,该搬的搬,该删除的删,合理释放,最大化利用有限的磁盘空间嘛。

  在通过RMAN创建的备份片段中,由于备份文件也是由rman创建和维护,所以手工删除并不明智,并且RMAN也提供了备份保留策略,合理制订,由RMAN自动删除过旧的备份文件更加安全也更加方便。

  RMAN 中提供了两种备份保留策略: 基于时间 和 基于冗余数量 

  为RMAN设置了备份保留策略之后,RMAN会自动判断哪些备份集或镜像复制文件不必再保留。这些备份文件将会被标记为“废弃(Obsolete)”,可以通过REPORT OBSOLETE命令查看当前处于废弃状态的备份文件,或者通过DELETE OBSOLETE命令删除这些废弃的备份。例如:

    RMAN>  report obsolete;

    正在使用目标数据库控制文件替代恢复目录

    RMAN  保留策略将应用于该命令

    将 RMAN 保留策略设置为 3 天的恢复窗口

    已废弃的备份和副本报表

    类型                 关键字 完成时间           文件名/句柄

    -------------------- ------ ------------------ --------------------

    备份集               21     04-7月 -07

    备份段       21     04-7月 -07         D:\BACKUP\C-3391142503-20070704-01

    RMAN> delete obsolete;

    RMAN  保留策略将应用于该命令

    将 RMAN 保留策略设置为 3 天的恢复窗口

    分配的通道: ORA_DISK_1

    通道 ORA_DISK_1: sid=14 devtype=DISK

    删除以下已废弃的备份和副本:

    类型                 关键字 完成时间           文件名/句柄

    -------------------- ------ ------------------ --------------------

    备份集               21     04-7月 -07

    备份段       21     04-7月 -07         D:\BACKUP\C-3391142503-20070704-01

    是否确定要删除以上对象 (输入 YES 或 NO)? y

    已删除备份段

    备份段 handle=D:\BACKUP\C-3391142503-20070704-01 recid=21 stamp=627061645

    1  对象已删除

    在执行删除命令时有两点需要了解:

  • 如果被判断为废弃的备份是一个单独数据文件的镜像复制,那么在执行DELETE命令时将直接删除这个镜像复制文件。
  • 如果被判断为废弃的备份是一个备份集中的一部分,则必须等到整个备份集中所有其它文件都被废弃之后,才能删除这个备份集。

    提示:

    注意这里oracle对于obsolete和expired的定义与我们常规理解是相反的。Oracle的定义是这样的,对于手工删除的文件,物理上已经不存在了的,在执行了crosscheck之后,oracle将其标记为expired,而对于那些超出了备份保留策略的备份集备份片,则标记为obsolete。

    1 、基于时间的备份保留策略。

    说的简单些,就是你希望数据库最早能恢复到几天前。比如将恢复时间段设置为7,那么RMAN所保留的备份即是可以保证你将数据库恢复到一周内任何时刻下那些文件。

    设置基于时间的备份保留策略可以通过CONFIGURE命令,例如:

      RMAN>  CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n DAYS;

    注:n=大于0的正整数

    执行该命令后,RMAN将始终保留那些将数据库恢复到n天前的状态时需要用到的备份,比如,恢复时间段被设置为7天,那么各个数据文件的备份必须满足如下条件:

    SYSDATE-(SELECT CHECKPOINT_TIME FROM V$DATAFILE)>=7

    任何不满足上述条件的备份都将被RMAN废弃并可通过DELETE OBSOLETE命令删除。Ok,基本知识讲完了,下面考验你的时刻到了, 提问 :如果满足条件的备份你也想删,咋整?啥?DEL?D你个大头鬼,再回去看看第二章。

    2 、基于冗余数量的备份保留策略

    基于冗余数量实质即某个数据文件以各种形式(包括备份集和镜像复制)存在的备份的数量。如果某个数据文件的冗余备份数量超出了指定数量,RMAN将废弃最旧的备份。

    同样,基于数量的备份保留策略也是通过CONFIGURE命令设置,例如:

      RMAN>  CONFIGURE RETENTION POLICY TO  REDUNDANCY n ;

    同上:n=大于0的正整数

    你也可以通过下列命令设置成不采用任何备份保留策略:

      RMAN>  CONFIGURE RETENTION POLICY TO NONE;

五、备份优化

  RMAN 中的备份优化(Backup Optimization)是指在备份过程中,如果满足特定条件,RMAN将自动跳过某些文件而不将它们包含在备份集中以节省时间和空间。说的直白些就是能不备的它就不备了,不像原来甭管文件有没有备份过统统再备一遍。由上可知,优化就是偷懒嘛,en,我也要优化的干活:)

  话说回来,这个懒也不是什么时候都能偷的,ooo,说错了,是优化。通常必须满足如下几个条件的情况下,才能够启用备份优化的功能:

  • CONFIGURE BACKUP OPTIMIZATION 参数置为on;
  • 执行的BACKUP DATABASE或BACKUP ARCHIVELOG命令中带有ALL或LIKE参数。
  • 分配的通道仅使用了一种设备类型,也就是没有同时分配使用sbt与disk的多个通道。(我知道我知道,通道还没讲,你也等着看外传吧。不过在这儿可以简单描述一下我的理解,In my opinion,sbt与disk就像一条是公路,一条是海路,而通道则相当于你选择了走公路之后,还得选择是走北三环,还是走北五环,还是两条一块走)

  打开备份优化设置通过如下命令:

    RMAN>  CONFIGURE BACKUP OPTIMIZATION ON;

  那么在进行备份优化时,RMAN是如何判断要备份的文件是否需要被优化呢,这个算法就相当复杂了,而且可能影响优化算法的因素也非常多,假如某库在上午9点被执行过一次全库备份,等下午3点再次执行全库备份时,备份的文件没有变动而且也已经被备份过时,才会跳过这部分文件。所以理论上备份优化仅对于只读表空间或offline表空间起作用。当然对于已经备份过的archivelog文件,它也会跳过(注:上述言论出自yangtingkun大牛,哎,我说老yang你能不能再多说两句,再给我们来一段20W字左右的简短发言呗,哎,你别走啊,你跑什么呀。。。。。。。)。

第五篇 RMAN基础知识补充 一
[君三思] 2007-7-6

  注:以下文字多数摘抄自网络,如有错误纯属正常(出处我就不注明了,我也确实没找着出处);如有侵权,这个。。。千万别来找俺打版权官司。。。三思现在穷的底儿掉,您要再给我来这么一把,我。。。我非拖家带口上你们家噌吃噌喝去。。。。。。。。。

  另外,对于这部分内容,我一项不主张死记硬背的,还是要多尝试,理解着去记忆。

一、FORMAT字符串替代变量

    使用FORMAT参数时可使用的各种替换变量,如下:

    %c :备份片的拷贝数(从1开始编号);

    %d :数据库名称;

    %D :位于该月中的天数 (DD);

    %M :位于该年中的月份 (MM);

    %F :一个基于DBID 唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 为该数据库的DBID,YYYYMMDD 为日期,QQ 是一个1-256 的序列;

    %n :数据库名称,并且会在右侧用x字符进行填充,使其保持长度为8;

    %u :是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集生成一个唯一的名称;

    %p :表示备份集中备份片段的编号,从1 开始编号;

    %U :是%u_%p_%c的简写形式,利用它可以为每一个备份片段(即磁盘文件)生成一个唯一名称,这是最常用的命名方式;

    %s :备份集的号;

    %t :备份集时间戳;

    %T :年月日格式(YYYYMMDD);s

    注:如果在BACKUP命令中没有指定FORMAT选项,则RMAN默认使用%U为备份片段命名。

二、CONFIGURE配置项介绍

  首先,我们先来查看一下当前配置,通过SHOW ALL命令:

    连接到目标数据库: JSSWEB (DBID=3391142503)

    RMAN>  show all ;

    正在使用目标数据库控制文件替代恢复目录

    RMAN  配置参数为:

    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;

    CONFIGURE BACKUP OPTIMIZATION OFF; # default

    CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

    CONFIGURE CONTROLFILE AUTOBACKUP ON;

    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ¨d:/backup/%F¨;

    CONFIGURE DEVICE TYPE DISK PARALLELISM 1; # default

    CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

    CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

    CONFIGURE MAXSETSIZE TO UNLIMITED; # default

    CONFIGURE SNAPSHOT CONTROLFILE NAME TO ¨F:\ORAHOME1\DATABASE\SNCFJSSWEB.ORA¨; #

    default

    RMAN>

  Show 命令在RMAN命令篇简单介绍过,同时我们也已经知道后跟#default表示该条配置仍然是初始的默认配置,如果我们想把某条更改过的配置再置为初始应该怎么办呢,很简单,用如下命令: CONFIGURE ... CLEAR ; 例如:

    RMAN>  CONFIGURE RETENTION POLICY CLEAR ;

    旧的 RMAN 配置参数:

    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;

    RMAN  配置参数已成功重置为默认值

    上述的各项配置,我们在前面章节中有一些已经有所体现,下面我们再逐条过一遍。

    1 、 CONFIGURE RETENTION POLICY 配置备份保留策略

    第4章节我们详细讲过关于备份保留策略,也知道了它有两种保留策略:

    基于时间:

    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF  n  DAYS;

    基于冗余数量:

    CONFIGURE RETENTION POLICY TO REDUNDANCY  n ;

    也可以取消备份保留策略:

    CONFIGURE RETENTION POLICY TO NONE;

    2 、 CONFIGURE BACKUP OPTIMIZATION 配置备份优化

    也是第4章节提到的内容,备份优化,包括OFF和ON两个状态

    打开备份优化:

    CONFIGURE BACKUP OPTIMIZATION ON;

    关闭备份优化:

    CONFIGURE BACKUP OPTIMIZATION O FF ;

    3 、 CONFIGURE DEFAULT DEVICE TYPE  配置IO设备类型

    RMAN 支持的IO设备类型有两种:磁盘(DISK)和磁带(SBT),默认情况下为磁盘。

    使用磁盘设备:

    CONFIGURE DEFAULT DEVICE TYPE TO DISK;

    使用磁带设置:

    CONFIGURE DEFAULT DEVICE TYPE TO SBT;

    在这里需要注意的一点是:如果IO设备发生变化,相关配置项也需要修改。例如:

    RMAN> CONFIGURE DEVICE TYPE  DISK  PARALLELISM 2;

    4 、 CONFIGURE CONTROLFILE AUTOBACKUP 配置控制文件自动备份

    是否自动备份,包含两个状态:OFF和ON

    打开自动备份

    CONFIGURE CONTROLFILE AUTOBACKUP  ON

    禁止自动备份

    CONFIGURE CONTROLFILE AUTOBACKUP  OFF

    同时可以通过如下配置指定备份的控制格式,路径。例如:

    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE  TYPE   DISK TO ¨d:/backup/%F¨;

    在备份期间,将产生一个控制文件的快照,用于控制文件的读一致性,这个快照可以通过如下配置:

    CONFIGURE SNAPSHOT CONTROLFILE NAME TO ¨ D:/BACKUP/ SNCFJSSWEB.ORA¨;

    5 、 CONFIGURE DEVICE TYPE  设置并行备份

    RMAN 支持并行备份与恢复,也可以在配置中指定默认的并行程度。例如:

    CONFIGURE DEVICE TYPE DISK PARALLELISM 2;

    指定在以后的备份与恢复中,将采用并行度为2,同时开启2个通道进行备份与恢复,当然也可以在run中指定通道来决定备份与恢复的并行程度。

    并行的数目决定了开启通道的个数。如果指定了通道配置,将采用指定的通道,如果没有指定通道,将采用默认通道配置。有点儿绕是吧,我来给你白话一把。

    默认情况下,自动分配通道的并行度为1,如果你通过设置PARALLELISM设置了并行通道为2,那么在run块中,如果你没有单独通过ALLOCATE CHANNEL命令指定通道,它会默认使用2条并行通道,如果你在run命令块中指定了数个ALLOCATE CHANNEL,那么rman在执行备份命令时会以你设置的channel为准,而不管configure中配置了多少个并行通道。需要注意的一点是,在backup命令中有一个FILESPERSET参数,该参数是指rman建立的每个备份集中所能包含的备份片段(即磁盘文件)的最大数,该参数默认值为64,如果在执行backup命令时没有指定该参数值,那么rman会仅使用第一个通道来执行备份,其它通道将处于空闲状态。关于通道数与FILESPERSET值之间也有一个大小关系,逻辑稍显复杂这些就不多废话了,总之一条,filesperset值不要小于你设定的通道数。

    6 、 CONFIGURE DATAFILE BACKUP COPIES  设置备份文件冗余度

    4 章也讲过,应该也还有印象吧,不记的了就赶紧回去翻翻。

    7 、 CONFIGURE MAXSETSIZE  配置备份集的最大尺寸

    该配置限制通道上备份集的最大尺寸。单位支持bytes,K,M,G。默认值是unlimited。相信应该也不会有什么人改它吧,我花了整整20秒时间思考,然后确认,我应该用不着它,OK,跳过。

三、RMAN备份相关的动态性能表

  • V$ARCHIVED_LOG :本视图包含了所有归档重做日志文件的创建情况,备份情况以及其他信息。
  • V$BACKUP_CORRUPTION :这个视图显示了RMAN在哪些备份集中发现了损坏的数据坏。在你使用BACKUP VALIDATE命令对备份集进行检查时如果发现了损坏的数据块,RMAN将在这个视图中写入记录。
  • V$COPY_CORRUPTIO :本视图显示了哪些镜像复制备份文件已经被损坏。
  • V$BACKUP_DATAFILE :本视图通常用来获取每个数据文件中非空白数据块的数量,从而帮助你创建出大小基本相等的备份集。另外,在视图中也包含了数据文件中损坏的数据块的信息。
  • V$BACKUP_REDOLOG :本视图显示了在现有的备份集中饮食有哪些归档重做日志文件。
  • V$BACKUP_SET :本视图显示了已经创建的备份集的信息。
  • V$BACKUP_PIECE :本视图显示了已经创建的备份片段的信息。

    可以通过如下SQL语句获得正在进行的镜像复制操作的状态信息:

    Select  sid,
           serial#,
           context ,
           sofar,
           totalwork,
           round(sofar / totalwork *  100 ,  2 ) "% Complete"
       From  v$session_longops
      where  opname  like   ¨RMAN:%¨
        and  opname  not   like   ¨RMAN:aggregate%¨

    通过如下SQL获得rman用来完成备份操作的服务进程的SID与SPID信息:

    Select  sid, spid, client_info
       from  v$process p, v$session s
      where  p.addr = s.paddr
        and  client_info  like   ¨%id=rman%¨

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载