zoukankan      html  css  js  c++  java
  • RMAN命令总结

    一,RMANR 连接到库 1),连接本地数据库 a,如果本地有多少实例,则需要设置环境变量ORACLE_SID,  windows 平台: set ORACLE_SID= INSTANACE NAME  UNIX/LINX平台: export ORACLE_SID=INSTANCE NAME 8i : $rman target / nocatalog  9i以上的数据库直接 rman target / 就可以了 nocatalog&catalog: 就是连接时,是以控制文件记录还是以恢复目录来记备份信息,这就二种连接的差别,catalog是需要配置的。

    b,如果本地只有一个实例:且设置了环境变量:则无需指定实例了.

    连接进入rman,如果使用操作系统验证,则用 rman target /                              如果没有使用操作系统验证: 则使用 rman target user/passwd 也可以直接rman,再在里面用connect 用户名/密码

    2),连接远程数据库, 1、要确定数据库能够进行远程管理。 2、在本地创建一个到目标数据库的连接,同时给一个网络服务名比如叫做test 3、执行:rman target sys/password@test 4、本地版本要于远端版本一致或高 就可以了,记住@后面一定是网络服务名,rman target sys/密码@test

    3),带日志的连接 rman target / log f: man_log.txt

    4),暂退rman,回到操作系统的命令提示符 rman> host; $sqlplus "/ as sysdba" 这样就可以进入sql环境,退回exit ,exit 就又回到rman提示符

    二,rman命令的执行方式 1),单个执行 rman>backup database;

    2),批处理 rman>rman{ ...... }

    3),运行脚本 a, 用命令行方式调用操作系统中保存的脚本 c: rman target / @backup_db.rman 或 c: rman target / cmdfile = backup_db.rman

    b, 在rman中执行操作系统中保存的脚本文件 rman> @backup_db.rman

    c, 运行存贮在catlog中的脚本(需要首先为rman创建恢复目录) rman > run { execute script backup_whole_db };

    三,简单常见备份类型及解释 1).整库 rman> backup database     整库备份,生成二个备份片段,一个数据文件片段,一个控制文件和spfile,放在oracle 软件的安装目录下 rman> backup database format 'f:ak_u%';     指定备份集的目录  rman> list backup of database;                           查看创建的全库备份

    2).表空间 rman> backup tablespace users;                        表空间的备份,当然也可以format 到指定目录 rman> list backup of tablespace users;            查看users表空间的备份情况,注意如果做过全备份,全备份users表空间的信息也会显示出来 rman> delete backup 10;                                       删除编号为10的备份集

    3),数据文件 rman> backup datafile 'f:users01.dbf';                数据文件的备份 rman> backup datafile n                                         数据文件的备份,n 是数据文件的绝对编号(备份多个数据文件,中间用逗号隔开) rman> list backup of datafile n;                            n是数据文件的编号,通过dba_data_files (显示多个数据文件,编号用逗号隔开)

    4),控制文件 rman> backup current controlfile;                         手工单独备份控制文件 rman> backup database include current controlfile;   备份任何东东的时候都可以包含备份控制文件,当然要加include current controlfile子句 rman> backup current controllfile include current controlfile 这样就可以备份二次控制文件 rman > configure controlfile autobackup on;     只要设置为on后,不管备份什么都会备份控制文件       备到哪里要根据参数决定。当设置为on后,controlfile 会自动备份到$ORACLE_HOME/dbs下, rman > list backup of controlfile                           查看控制文件的备份情况

    5),归挡文件的备份 rman> backup archivelog all;                               备份所有可访问到的归档文件,当然这个all可以由其他关键字眼代替,until, scn, time,sequence                                                                                     来指定要备份的归档区间, rman>backup current controlfile plus archivelog; 当然备份任何东东加上plus archivelog,就可备份归档文件. 这二种备份方式的区别: 通常在线备份的时候,日志文件一直在不断生成,如何做到完全备份归档呢? a, backup archivelog all, 先alter system switch logfile, 立即备份这些归档,对后续生成的归档管不了 b, backup ... plus archivlog, 步骤是: 先switch logfile,backup archivelog all,,再执行备份项目备份,再switch logfile ,再backup archivelog all,     完全备份 rman> delete all input                      备份完后把archivelog 删掉

    6),初始化参数文件的备份 通常在备份控制文件时,会自动备份spfile ,当然也可以专门手动备份 rman>backup spfile;

    7),对备份集进行备份 rman>backup backupset all;                               对以前所有备份再进行备份一次,如果很多,这个过程很膨大 rman>bakcup backupset n;                                 n 指备份集的id号,当然可以指定多个,逗号隔开 rman>delete input 参数;                  删除某个备份集

    呵呵,有以上简单备份的基础,相信写个块应该没问题了!

    四,rman 命令综述 1) . show                                                                注:配置项后面跟了# default的表示该项仍是初始配置,未被修改过。 rman>show all;                                                     太多,检验自已的眼神 ~:~ 哈哈 rman>show controlfile autobackup;                  查看控制文件的配置参数

    2). configure                                                                参考show all里面的参数,根据自身备份特性修改rman的初始参数 rman>configure retention policy to recovery window of n days;              基于时间的保留策略 rman>configure retention policy to redundancy n;                                     基于冗余数量的保留策略 rman>configure retention policy to none;                                                    取消备份保留策略 rman>configure backup optimization on;                                                    启用备份优化 rman>configure backup optimization off;                                                   关闭备份优化 rman>configure default device type to disk;                                                缺省备份设备磁盘 rman>configure default device type to sbt;                         缺省备份设备磁带 rman>configure device type disk parallelism 2;                                         备份通道为2,或并行度2,allocate channel可手工指定; rman>configure controlfile autobackup on;                                                备份任何自动备份控制文件 rman>configure controlfile autobackup off;                                                 自动备份控制文件关 rman>configure controlfile autobackup format for device type disk to ' f:ackup\%F';    自动备份的格式及路径设置 rman>configure snapshot controlfile name to 'f:databasecontrolbak.ora';      在备份期间生在成控制文件的快照 rman>configure database / archivelog backup copies                            设置备份文件冗余度,即备份时生成copy rman>configure maxsetsize =...;                                                                   配置备份集的最大值 rman>configure encryption ....                                                                       设置备份密码,用于安全恢复 rman>configure encryption for database on/off;                                        启用或关闭此密码 rman>configure encryption algorithm 'ASE256';                                        指定加密算法为ASE256, rman>configure archivelog deletion policy to appled on standby;         在rac环境中,standby 端可删备份策略,默认只有primary端可删 rman>configure exclude for tablespace 'users';                备份进排除users表空间不备份 rman> configure ... clear;                                                                                 把更改项恢复到默认参数

    3) .set命令                       我们讲了configure是全局的,那么set就是会话级的更改,牛吧 ! 块外运行的命令 rman>set echo on | off                                    显示或关闭rman显示 rman>set commang id to 'wangzz'              这时你在v$session 视图中,你会发现client_info 列值有id=wangzz的信息,方便你查看备份时状态. rman>set DBID n;                                           只能在nomount模式下执行,指定数据库的标识符 块内运行的命令 rman>run{           allocate channel c1 to device type disk;            set newname for datafile 4 to 'f:123.dbf';              备份时把绝对文件重新命名并指定到新的地方,牛,这样也可以,i 服了u           .....           }

    rman> run{           allocate ....           set until time "to_date('2010-02-01','yyyy-mm-dd');     设置恢复到某个时间点. 太强了,又汗一个.           ...          }

    rman> run{           ...          set backup copies ;                             设定备份片段的冗余数          ...          }

    rman> run{           ...          set archivelog destination to 'f:...';         指定归档文件的备份路径,默认在log_archive_dest_1;                    ...          }

    4) . list rman>list backup;                                                 下面就不作说明了,太简单了 rman>list backup of controfile; rman>list backup of datafile 'f:user01.dbf' rman>list backup of datafile n; rman>list backup of archivelog all; rman>list device type disk backup;                    列出某个设备上的所有信息, rman>list copy of tablespace 'system'             列出系统表空间的(副本)备份信息, rman>list expired backup;                                   列出无效的备份

    5) . delete  rman资料库(rman repository),这是一个逻辑概念,指rman备份恢复需要用到的数据信息,如备份集路径,归档文件路径等, 如果使用了恢复目录,则这部分数据保存于恢复目录中(recovery catalog),否则只会保存在目标数据库的控制文件中。 rman>delete obsolete;                                                     删除过期备份 rman>delete expired backup;                                          先crosscheck检查备份集,再标记失效的备份,再删除 rman>delete expired copy;                                              删除expired 副本 rman>delete backupset 19;                                             删除特定备份集  rman>delete backuppiece 'f:ackupdemo_19.bak'   删除特定备份片 rman>delete backup;                                                         删除所有备份集  rman>delete datafile copy 'f:ackupdemo_19.bak'    删除特定映像副本 rman>delete copy;                                                              删除所有映像副本 rman>backup archivelog all delete input;                      备份归档后删除归档 rman>delete backupset 22 format="f:ackup\%u.bak" delete input 备份备份集22后,删除原备份集的id 22;

    附录:当在delete obsolete 时出现如下错误,主要原因是因为当前的备份设备类型( 如原默认是磁带,现变成磁盘了。用show all查看一下)不一致了。 RMAN-06091 no channel allocated for maintenance (of an appropriate type) 解决方法: 用下列命令组合就可以清除,你会明白意思的! rman> ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK; rman> delete obsolete; rman> allocate channel for maintenance device type 'sbt_tape' PARMS '...'; rman> delete obsolete; rman>allocate channel for maintenance type sbt_tape; rman>allocate channel for maintenance type disk; rman>delete obsolete device type disk;

    6) , report 报表显示:                       就是对前面所有备份的信息进行分析 rman>report schema at time'sysdate-7';                      查看7天前数据库的模式  rman>report need backup;                                              查看所有需要备份的文件 rman>report need backup tablespace system;           查看指定表空间是否需要备份 rman>report obsolete;                                                      查看过期 RMAN> report schema;                           报告目标数据库的物理结构

    7) , crosscheck                                                             检查备份或归档物理文件的状态,如果物理文件存在,并且控制文件或(恢复目录)中                                              有匹配记录,则有效,如果文件不存在,则expired无效. rman>crosscheck archivelog all;                               验证归档日志文件,当nls_lang=simplified chinese_china时,10g有一个bug,当提示                                              验证成功,要小心,这个说明是失败的,当提示验证失败时,反而是成功的。切记                                              当nls_lang=american_america时,就正常显示了 rman>crosscheck bakcup;                                          验证所有备份集

    8) , change 修改状态                      修改备份文件或归档日志文件的状态,不是指物理文件,而是这些文件在控制文件                                              或恢复目录中对应记录的状态,有二种available & unavailable rman>change backupset n unavailable;                 备份集n为不可用 rman>change backup of tablespace user unavailable;      对user 表空间的备份集设为不可用, rman>change archivelog logseq=n unavailable;                  n为归档文件序号,可能通过list archivelog all 或查询v$ARCHIVED_LOG 获取,                                                      当然你也可以指定归档文件的详细路径 rman>change archivelog logseq=n delete;                            序列号为n的归档文件,被更改状态后直接删除

    9),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);

    有了上述基础,维护应该没什么问题了吧!

  • 相关阅读:
    51nod 1087 1 10 100 1000(找规律+递推+stl)
    51nod 1082 与7无关的数 (打表预处理)
    51 nod 1080 两个数的平方和
    1015 水仙花数(水题)
    51 nod 1003 阶乘后面0的数量
    51nod 1002 数塔取数问题
    51 nod 1001 数组中和等于K的数对
    51 nod 1081 子段求和
    51nod 1134 最长递增子序列 (O(nlogn)算法)
    51nod 1174 区间中最大的数(RMQ)
  • 原文地址:https://www.cnblogs.com/SharkXu/p/RMAN.html
Copyright © 2011-2022 走看看