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:\rman_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:\bak_u%'; 指定备份集的目录
rman> list backup of datab

ase;
查看创建的全库备份
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>confi

gure controlfile autobackup on;
备份任何自动备份控制文件
rman>configure controlfile autobackup off;
自动备份控制文件关
rman>configure controlfile autobackup format for device type
disk to ' f:\backup\%F'; 自动备份的格式及路径设置
rman>configure snapshot controlfile name to
'f:\database\controlbak.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:\backup\demo_19.bak' 删除特定备份片
rman>delete backup;
删除所有备份集
rman>delete datafile copy 'f:\backup\demo_19.bak' 删除特定映像副本
rman>delete copy;


删除所有映像副本
rman>backup archivelog all delete input;
备份归档后删除归档
rman>delete backupset 22 format="f:\backup\%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 bakc

up;
验证所有备份集
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);
有了上述基础,维护应该没什么问题了吧!





相关文档
最新文档