我参照网上的一篇文章做rman备份,已经做的工作如下:
C:\Documents and Settings\Administrator>sqlplus / as sysdba
SQL>shutdown immediate
SQL>startup mount
SQL>alter database archivelog;
SQL>alter database open;
SQL>archive log list;
根据需要更改日志的存放路径(前提是使用了spfile方式启动)
SQL>alter system set log_archive_dest_1='location=e:\oralce\oradata\backup' scope=spfile;
恢复目录的配置
创建恢复目录表空间
C:\Documents and Settings\Administrator>sqlplus / as sysdba
SQL>create tablespace rman_ts1 datafile 'd:/oracle/oradata/rman_ts1.ora' size 100M;
创建恢复目录User,及赋予权限:
SQL>create user rmanuser1 identified by rmanuser1 default tablespace rman_ts1 temporary 
tablespace temp;
SQL>grant connect,resource ,recovery_catalog_owner to rmanuser1;
SQL>exit;
为恢复目录创建对象:
C:\Documents and Settings\Administrator>rman catalog rmanuser1/rmanuser1
RMAN>create catalog tablespace rman_ts1;
RMAN>exit;
注册目标数据库:
C:\Documents and Settings\Administrator>rman catalog rmanuser1/rmanuser1 target 
system/system@oradb
RMAN> register database;
RMAN>exit;请问以后的数据备份应该怎样写啊?还有数据恢复应该怎样做啊?
请大家不吝赐教,小弟初次接触备份这事,时间紧,任务重,大家帮忙 啊

解决方案 »

  1.   

    通常来说 catalog数据库都应该建立在其他的node上面.不过对于学习来说无所谓了.rman target / catalog  rman/rman@rman;
    backup database format '';
      

  2.   


    通常来说 catalog数据库都应该建立在其他的node上面. 很经验
      

  3.   

    RMAN 备份与恢复 实例 
    http://user.qzone.qq.com/251097186/blog/1247982062
    RMAN 备份1. 检查数据库模式:
       sqlplus /nolog 
       conn /as sysdba
       archive log list (查看数据库是否处于归档模式中)   若为非归档,则修改数据库归档模式。
       startup mount
       alter database archivelog
       alter 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-08      
            BP Key: 1   Status: AVAILABLE  Compressed: NO  Tag: TAG20081206T201041
            Piece Name: /home/oracle/flash_recovery_area/ORA10G/backupset/2008_12_06/o1_mf_ncsnf_TAG20081206T201041_4mntz78s_.bkp
      Control File Included: Ckp SCN: 782019       Ckp time: 06-DEC-08
      SPFILE 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级增量备份。全备份和0级增量备份几乎是一样的。唯一的区别,0级增量备份能作为增量备份的基础,而全备份不能作为增量备份的基础。其它方面完全一致1.backup incremental level=0(leve 0) database;(增量为0的备份)
    2.backup incremental level 1(level=1) database;(增量为1的备份)
     
    在上面的备份中,我们备份了datafile,controlfile和parameter file.没有备份的文件有归档日志,重做日志和口令文件没有备份.口令文件不需要备份,我们用orapw来创建一个新的口令文件.rman 在nocatalog模式下,不能够对redo log file 进行备份
    ===================备份archivelog 在nocatalog模式下=================命令:backup database plus archivelog delete input(delete input的意思在备份完成后,删除 archivelog文件,这个选项可要可不要,这个命令也可以用 backup incremental level=0(1,2...)来进行备份)
    =======================备份表空间====================backup tablespace tablespacename如果我们不知道tablespace的名字,在rman中,可要通过report schema命令,来查看表空间的名字MAN> report schema;
    Report of database schemaList of Permanent Datafiles
    ===========================
    File Size(MB) Tablespace           RB segs Datafile Name
    ---- -------- -------------------- ------- ------------------------
    1    480      SYSTEM               ***     /home/oracle/oradata/ora10g/system01.dbf
    2    25       UNDOTBS1             ***     /home/oracle/oradata/ora10g/undotbs01.dbf
    3    250      SYSAUX               ***     /home/oracle/oradata/ora10g/sysaux01.dbf
    4    5        USERS                ***     /home/oracle/oradata/ora10g/users01.dbf
    5    200      PERFSTAT             ***     /home/oracle/oradata/ora10g/perfstat.dbfList of Temporary Files
    =======================
    File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
    ---- -------- -------------------- ----------- --------------------
    1    20       TEMP                 32767       /home/oracle/oradata/ora10g/temp01.dbf ========================备份控制文件====================backup current controlfilebackup database include current controlfile ========================备份镜像========================在rman的备份中有两种方式:备份集(backupset)和备份镜像(image copies).镜像备份主要是文件的拷贝:copy datafile ... to ...我们在rman>report schema;Report of database schemaList of Permanent Datafiles
    ===========================
    File Size(MB) Tablespace           RB segs Datafile Name
    ---- -------- -------------------- ------- ------------------------
    1    480      SYSTEM               ***     /home/oracle/oradata/ora10g/system01.dbf
    2    25       UNDOTBS1             ***     /home/oracle/oradata/ora10g/undotbs01.dbf
    3    250      SYSAUX               ***     /home/oracle/oradata/ora10g/sysaux01.dbf
    4    5        USERS                ***     /home/oracle/oradata/ora10g/users01.dbf
    5    200      PERFSTAT             ***     /home/oracle/oradata/ora10g/perfstat.dbfList of Temporary Files
    =======================
    File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
    ---- -------- -------------------- ----------- --------------------
    1    20       TEMP                 32767       /home/oracle/oradata/ora10g/temp01.dbf rman>copy datafile 5 to '/u01/rmanbak/tbso1bak.dbf';(copy 5 对应的schme:perfstat.dbf) 它会把tbs作为一个拷贝。我们用list backupset来看,不能够查看我们刚备份的 tbs01bak.dbf',因为它不是backupset. 我们用list copy 就能够查看我们刚才刚刚备份的文件 
    =======================单命令与批命令=================单命令: backup database;批命令:rman> run{
     2> allocate channel cha1 type disk;
     3> backup
     4> format '/u01/rmanbak/full_%t'
     5> tag full-backup //标签可以顺便起,没关系
     6> database;
     7> release channel cha1;
     8>}这个run中有3条命令,分别用分号来进行分割.format:
    %c:备份片的拷贝数(从1开始编号);
    %d:数据库名称;
    %D:位于该月中的天数(DD);
    %M:位于该年中的月份(MM);
    %F:一个基于DBID唯一的名称,这个格式的形式为c-xxx-YYYYMMDD-QQ,其中xxx位该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列;
    %n:数据库名称,并且会在右侧用x字符进行填充,使其保持长度为8;
    %u:是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集产生一个唯一的名称;
    %p:表示备份集中的备份片的编号,从1开始编号;
    %U:是%u_%p_%c的简写形式,利用它可以为每一个备份片段(既磁盘文件)生成一个唯一的名称,这是最常用的命名方式;
    %t:备份集时间戳;
    %T:年月日格式(YYYYMMDD);channel的概念:一个channel是rman于目标数据库之间的一个连接,"allocate channel"命令在目标数据库启动一个服务器进程,同时必须定义服务器进程执行备份和恢复操作使用的I/O类型通道控制命令可以用来:
          控制rman使用的OS资源
          影响并行度
          指定I/O带宽的限制值(设置 limit read rate 参数)
          指定备份片大小的限制(设置 limit kbytes)
          指定当前打开文件的限制值(设置 limit maxopenfiles) 
    =================================RMAN一周典型备份方案============================1.星期天晚上      -level 0 backup performed(全备份)
    2.星期一晚上      -level 2 backup performed
    3.星期二晚上      -level 2 backup performed
    4.星期三晚上      -level 1 backup performed
    5.星期四晚上      -level 2 backup performed
    6.星期五晚上      -level 2 backup performed
    7.星期六晚上      -level 2 backup performed 
    如果星期二需要恢复的话,只需要1+2,
    如果星期四需要恢复的话,只需要1+4,
    如果星期五需要恢复的话,只需要1+4+5,
    如果星期六需要恢复的话,只需要1+4+5+6. 自动备份:备份脚本+crontab
     bakl0
     bakl1
     bakl2执行脚本:
    rman target / msglog=bakl0.log cmdfile=bakl0 (/表示需要连接的目标数据库,msglog表示日志文件,cmdfile表示的是脚本文件)
    rman target / msglog=bakl1.log cmdfile=bakl1
    rman target / msglog=bakl2.log cmdfile=bakl2实例:rman target system/oracle@ora10g(/) msglog=/u01/rmanbak/bakl1.log cmdfile=/u01/rmanbak/bakl0 
    完整的命令:/u01/oracle/product/10.2.0/bin/rman target system/oracle@ora10g(/) msglog=/u01/rmanbak/bakl1.log cmdfile=/u01/rmanbak/bakl0  
    把备份脚本放到/u01/rmanbak/script目录下面,vi bakl0,bakl0的内容为:run{
        allocate channel cha1 type disk;
        backup
        incremental level  0
        format '/u01/rmanbak/inc0_%u_%T'(u表示唯一的ID,大T是日期,小t是时间)
        tag monday_inc0 //标签可以顺便起,没关系
        database;
        release channel cha1;
        }
    ,类似就可以写出bakl1,bakl2相应的脚本. 
    自动备份
    crontab
    crontab -e -u oracle(改命令的意思是编辑oracle用户的定时执行(-e,edit -u oracle,oracle用户))分  时  日 月 星期(0代表星期天)
    45 23  *  *    0    rman target / msglog=bakl0.log cmdfile=bakl0(星期天的23:45会以oracle用户的身份来执行命令)
    45 23  *  *    1    rman target / msglog=bakl2.log cmdfile=bakl2
    45 23  *  *    2    rman target / msglog=bakl2.log cmdfile=bakl2
    45 23  *  *    3    rman target / msglog=bakl1.log cmdfile=bakl1
    45 23  *  *    4    rman target / msglog=bakl2.log cmdfile=bakl2
    45 23  *  *    5    rman target / msglog=bakl2.log cmdfile=bakl2
    45 23  *  *    6    rman target / msglog=bakl2.log cmdfile=bakl2 然后启动crontab ,启动crontab的命令:
    root> service crond restart