暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

Rman概述

木底木叉 2020-09-16
913


备份datafile (database、tablespace、datafile)controlfile、spfile、archivelog

非归档只能在mount下做冷备,并且只能还原最后一次备份

只备份segment高水位线以下的block,节省空间

备份时自动检查是否有坏块并跳过,rman是oracle block级备份技术

可以做增量备份,可以备份asm(备份asm的方法)

架构

  1. 可以连接target database,auxiliary database,catalog database

  2. disk、tapt(sbt磁带机)

  3. 目标库和存储设备之间备份恢复通道channel默认启动一个,可以启动多个

  4. server process 用于备份恢复的进程

  5. rman元数据记录备份的信息,默认放在目标库controlfile,如果有catalog database则存在该库

  6. catalog database 集中管理、存放备份的元数据,还可以存储备份脚本

  7. MML:media manager layer介质管理层:用于管理磁带机的库文件和驱动

参数

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default--保留策略,二选一,互斥。时间窗口:必能恢复此时间段内任何一个时刻的数据。冗余:规定至少有几个冗余备份。多余的备份会被标记为obsolete
示例:
congigure retention policy to recovery window 7 days;--窗口为7天
configure retention policy to redundancy 2;--保留两份
configure retention policy to none;--此后不会将任何备份集或映像标记为obsolete
configure retention policy to clear;--恢复默认保留策略;


CONFIGURE BACKUP OPTIMIZATION OFF; # default--设置备份优化选项
示例:
configure backup optimization on;--开启优化,只用于归档日志,只读或脱机表空间的数据文件。因为这些文件不会变化。跳过重复备份。

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default--配置默认设备类型DISK或STB

CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default--控制文件是否自动备份off时,备份system表空间时会自动备份控制键和spfile。on时,做任何文件的备份时会自动备份控制文件和spfile,物理结构发生变化时也会备份controlfile。

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
--指定默认控制文件的路径与格式。

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default--指定以后再备份恢复中的并行度为1,即开启一个channel进行备份与恢复。也可以在run{}中指定并行度,会覆盖默认并行度。
影响rman性能的参数
filesperset:每个备份集的最大输入文件数。
maxopenfiles:给定时间内可以打开的最大输入文件数量
maxpiecesize:每个通道的备份片大小
backup duration:增加或减少完成备份的时间
maxsetsize:限制最大备份集大小
示例:RMAN> RUN {2> ALLOCATE CHANNEL c1 DEVICE TYPE sbt;
ALLOCATE CHANNEL c2 DEVICE TYPE sbt;
ALLOCATE CHANNEL c3 DEVICE TYPE sbt;
BACKUP
INCREMENTAL LEVEL = 0
FORMAT '/disk1/backup/df_%d_%s_%p.bak'
(DATAFILE 1,4,5 CHANNEL c1)
(DATAFILE 2,3,9 CHANNEL c2)
(DATAFILE 6,7,8 CHANNEL c3);
ALTER SYSTEM ARCHIVE LOG CURRENT;
}






CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default--配置多路复用,最大4,sbt和disk是独立的,不可以同时复用。如果一定要duplex磁盘和磁带,请使用backup backupset。单独使用rman命令可以覆盖该参数。
示例:backup copies 2 datafile 4 format '/u01/myrman/%s_dbf','/u01/myrman1/%s_dbf';



CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default--归档日志多路复用



CONFIGURE MAXSETSIZE TO UNLIMITED; # default--限制通道上的备份集最大尺寸大小



CONFIGURE ENCRYPTION FOR DATABASE OFF; # default--加密, Transparent encryption 透明的加密,带钱夹, Password encryption:不带钱夹
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default



CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default--压缩,有BZIP2和ZLIB。



CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
--对于归档文件,一般来说,如果你仅是单实例的话(不是 Data Guard 环境), archive file备份完之后就没有什么用处了,可以删除,但很多人不习惯在这里设置参数,更愿意使用脚本删除归档文件。




CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_orcl.f'; # default--rman 控制文件 RMAN存储库与catalog 做全同步的时候,需要建立一个 controlfile 的快照,这个参数指定快照存放位置。

备份分类

  • backupset: 不备份 datafile 里 unallocate 的块(HWM 以上)、可以实现增量备份(可以备份到 disk 和 tape)。如果只启用一个 channel,默认会把所有备份的 datafile 放入到一个 backupset 里,并且生成一个备份片  

  • copy: 实际上和手工 cp 类似的,备份 datafile 所有的数据块,不能作为增量备份的基础(即 0 级增量备份),只能备份到 disk ,不能备份到 tape,因可以省略还原步骤,所有恢复速度快  

备份

备份数据库

backup database format='/u01/myrman/rman_%s.bak' filesperset 3;
backup database plus archivelog delete input;
backup database format '/u01/myrman/%s_bak' plus archivelog delete input skip inaccessible;--backup database 紧接 format 可以使 datafile 的备份片指定到 format 的目的地,archivelog 的备份是根据控制文件中( v$archived_log)中的内容导航的,如果控制文件中记录了而实际归档中又不存在,则会报错, skip inaccessible 的含义是跳过物理上缺失的日志文件,当 delete input 后,控制文件相关信息( v$archived_log)也会被修改。因为有了全备,随时可以还原备份,还原点之前的归档日志一般没有就什么用处了,如果想单独还原归档日志备份可以使用
restore archivelog all;

备份表空间

backup tablespace users format '/u01/myrman/users_%s.bak' tag=userbak;
backup tablespace system plus archivelog delete input;

备份数据文件及其他

backup datafile 3,5 format '/u01/myrman/%d_%s.bak';
backup archivelog all delete input;
backup current controlfile;
backup spfile;
backup recovry area;--备份闪回恢复区
backup backupset 18;--备份备份集,可将disk上的备份一份到tape,注意不产生新的备份集,类似 duplex.
list backup;

 注:RMAN 从不备份联机重做日志文件、临时文件等。它只备份数据文件,控制文件, spfile,归档日志文件。 

image映像文件

copy datafile 4 to '/u01/myrman/users_%s.bak';
backup as copy tablespace 'TEST' fromat='/u01/myrman/%d_test_%s.bak';
list datafilecopy all;
rman可在不执行restore情况下直接使用映像副本,而backupset在recover前必须先restore。rman映像副本备份不包括spfile。 

fast_recovery_area中的obsolete当空间满的时候会自动清理obsolete,但如果放置在其它地方则不会满空间自动清理。

delete backupset命令即删除元数据也物理删除备份文件

差异 (Differential incremental backup )增量和累计(  Cumulative incremental backup  )增量

10g以后增量只有0级和一级,2级以上保留兼容,不推荐使用

0级备份不等同于全备,全备不能作为增量备份的基础备份,也就是说不能作为1级增量的父备份。

如果没有做过0级备份,那么1级备份就当作0级备份。

非归档模式下恢复就只有还原备份一步

startup force mount;
restore database;
alter database open resetlogs;

如果在非归档模式下使用了增量备份,在restore后加上recover database noredo;

  • 定位所有级别未1的累计或差异增量备份并使用他们,

  • 不应用日志

块变更跟踪(block change tracking)

CTWR  启用该进程会浪费性能代价,实际工作中通常在dg物理备库配置。

alter database enable block change tracking using file 'u01/app/oracle/oradata/change_tracking.dbf';
select * from v$block_change_tracking;
backup incremental level 0 format '/u01/backup/%s_.bak' datafile 2;--开始0级增量备份打底
backup incremental level 1 format '/u01/backup/%s.bak' datafile 2;--1级增量备份
alter database disable block change tracking;
backup incremental level 1 format '/u01/backup/%s.bak' datafile 2;--未做0级备份,1级备份代替0级备份

增量更新备份

增量更新特性是以一个image copy(0级或相当于0级)作为基础,将增量备份应用到image copy。image copy是不断累计的,可以保证数据库需要还原时仅需要这个累计的image copy以及随后的imcremental level 1;

run
{
recover copy of database with tag 'incr_update';
backup incremental level 1 fro recovery of copy with tag 'incr_update' datafile 4;
}

数据恢复顾问DRA

backup tablespace sysaux format '/u01/backup/%d_%s.bak';
shutdown abort;
startup;--报错ORA-01157 ORA-01110
rman target /
list failure;
change failure 202 priority low;
change failure 202 priority high;
list failure;
advise failure;
repair failure;

 CRITICAL 是关键文件损坏的状态,更改 CRITICAL 优先级会出现错误。只能将故障优先级从HIGH 更改为 LOW 或从 LOW 更改为 HIGH。(从 HIGH 更改为 LOW 的一个原因是为了避免该故障在 LIST FAILURE 命令中显示出来)。 

 状态是 OPEN 表示打开了一个故障。待修复故障后,将隐式关闭打开的故障。 

  • 先list failure,再advise failure。次序不能错,修复问题的顺序时list,advise,repair

  • 所有模式下都可以使用DRA,NOMOUNT状态下修复控制文件,MOUNT或OPEN下修复数据文件

  • DRA目前只能在单实例下运行,RAC下不能使用它。

Rman 完全恢复

  • 备份/u01/oradata/orcl/myrman.rcv

run{
allocate channel c1 type disk;
allocate channel c2 type disk;
backup database format '/u01/backup/%d_%s.bak';
}
rman target / @/u01/oradata/orcl/myrman.rcv
select sid,spid,client_info
from v$process p join v$session s on (p.addr=s.paddr)
where client_info like 'rman%';
run
{
sql 'alter database datafile 4 offline';
set newname for datafile 4 to '/u01/oradata/timran11g/dir1/users01.dbf';
restore tablespace users;
switch datafile 4;
recover tablespace users;
sql 'alter database datafile 4 online';
}
--set newname for 告诉 RMAN 还原数据文件的新位置在哪里。这个命令在 restore 前出现。switch datafile 更新 controlfile,记录这个新位置。这个命令要在 recover 前出现。
alter tablespace users offline;
alter tablespace users rename datafile '/u01/oradata/timran11g/dir1/users01.dbf' to
'/u01/oradata/timran11g/users01.dbf';

案例,新建表空间,rman没有备份该表空间

run {
sql 'alter database datafile 3 offline';
restore datafile 3;
recover datafile 3;
sql 'alter database datafile 3 online';
}

Rman 不完全恢复

run {
startup force mount;
allocate channel c1 type disk;
allocate channel c2 type disk;
set until time '2013-01-18 13:47:04 ';
restore database;
recover database;
alter database open resetlogs;
}
--基于 scn 的方法与基于 time 相似,语法是 set until scn 6689163;
--基于日志的方法类似手工恢复的例子,语法是 set until sequence 3;

                                                 手工方法                                            RMAN方法


基于时间 until time XXX                                 set until  time XXX

基于scn  until time XXX set until scn XXX

基于日志 until cancel                                       set until sequence XXXX

案例2 恢复spfile 和controlfile

 select dbid from v$database;
shutdown abort
mv spfiletimran.ora spfiletimran.old
mv inittimran.ora inittimran.old
rman target /
startup nomount; --没有了参数文件, SQL*PLUS 是无法启动实例的,但 RMAN 可以,所以 startup nomount 一定要在 RMAN 下做!!!
set dbid=3416564781;
restore spfile from autobackup;--执行该命令,如果没有找到的话,那可能是文件的路径发生错误.可以通过直接赋予它的物理路径及文件名
restore spfile from
'/u01/flash_recovery_area/TIMRAN11G/autobackup/2013_01_16/o1_mf_s_819894065_8x9y1l8z_.bkp'; --查看在 dbs/目录下已经产生 spfiletimran.ora 文件。证明 spfile 恢复好了。
--控/参两文件恢复方法类似,每个数据库有一个唯一的 dbid,保存在控制文件中(不在参数文件),恢复参/控两文件都要首先 set dbid

 RMAN 的元数据保存在控制文件中,要使用 RMAN 就必须有控制文件, Oracle 设计了自动备份控制文件功能  

 当 CONFIGURE CONTROLFILE AUTOBACKUP ON 时 , 控 制 文 件 将 自 动 保 存 在 指 定 的flash_recovery_area 目录下,以支持恢复时使用: 

restore controlfile from autobackup;

案例:恢复误删除表空间(已备份),Rman必须通过备份的控制文件(与之配套的老控制文件)进行恢复。

drop tablespace test including contents and datafiles;
tail -f /u01/diag//rdbms/timran11g/timran11g/trace/alert_timran11g.log;
list backup;
shutdown abort;
rm *.ctl;
rm *.dbf;

 1.新增了 3 号备份集,其中的控制文件备份是由于 drop tablespace 这个动作之后产生的,这个控制文件里已经没有 test 表空间的记录了  ;

 2.在恢复控制文件语句 restore controlfile from autobackup 后面加上 until time XXX.给出时间点, RMAN 会找备份集 2,不会使用备份集 3.也就是说 RMAN 会自动选取正确的“老”控制文件恢复  ;

 3.当你 restore 控制文件后,下一步是进入 mount 状态(考点),然后才能做不完全恢复,使用老控制文件,比较一下手工恢复方式, RMAN 里是不使用 using backup controlfile 子句的  

run{
startup nomount;
set dbid=3416564781;
restore controlfile from autobackup until time '2013-01-16 19:39:56';
alter database mount;
set until time '2013-01-16 19:39:56';
restore database;
recover database;
alter database open resetlogs;
}

案例:表空间时间点恢复(TableSpace Point In Time Recovery)

 作为一条基本原则,不完全恢复必须应用到整个数据库,即必须还原整个数据库并运用日志一起向前滚动。TSPITR 是一种对个别表空间执行不完全恢复的技术,一般是针对用户错误的删除(或截断)了表。TSPITR 通过 RMAN 创建一个辅助库,将单个表空间在辅助库上恢复到指定的某个时刻,因为是在辅助库恢复,目标库(生产库)不用停机  

 在一系列准备工作完成后(建立辅助实例,网络连接等),利用 RMAN 同时连接目标数据库和新启动的辅助实例,如  

rman target sys/oracle@timran11g auxiliary sys/oracle@newdb;

前提:

 1)有一套全库备份,因为 TSPITR 这个过程也要在辅助库上恢复目标库的 system 和 undo 表空间  ;控制文件自动备份打开;

create tablespace abcd datafile '/u01/oradata/timran11g/abcd01.dbf' size 5m;
create table scott.t2(c1 date) tablespace abcd;
insert into scott.t2 values(sysdate);
commit;
backup tablespace abcd format '/u01/myrman/abcd_%s.bak';
select sysdate from dual;
drop table scott.t2 purge;
mkdir -p /u01/oradata/timran11g/auxdata;
rman target / --目标库
recover tablespace abcd until time '2013-01-16 22:02:14' auxiliary
destination '/u01/oradata/timran11g/auxdata';--目标库

 TSPITR 是保持在线业务下表空间级的不完全恢复,恢复的表空间要自包含。使用TS_PITR_CHECK 视图查看自包含信息。 

 TSPITR 一般用于将已有的表空间恢复到过去的某个时间点,而 11gR2 版使用可传输表空间和数据泵技术, Oracle 声明可以恢复被删除的表空间。 

 通过 TS_PITR_OBJECTS_TO_BE_DROPPED 视图,查看 creation time 字段可以知道截止恢复时间之后的有哪些新建对象可能丢失了。 

 完成指定表空间的 TSPITR 后,这个表空间之前做的备份就不能再用于以后的 TSPITR。这就是 TSPITR 后的表空间备份操作非常重要的原因  

案例:数据块介质恢复(BMR)

 如果数据文件只是出现部分数据块损坏, RMAN 可以尝试针对坏块进行恢复,就是说不需要恢复整个数据文件,只恢复损坏的数据块。为了保证数据文件的一致性,块介质恢复是一个完全恢复  

介质损坏, Block format incorrect, checksum 无效 逻辑损坏, Oracle internal error, checksum 有效  

发现坏块的方法:

A. ANALYZE operationsB. dbvC. SQL queries that access the potentially corrupt blockD. DBMS_REPAIRF. RMAN  


 通过设置参数,当对块读写时进行检查DB_BLOCK_CHECKSUM 检查 disk I/O 讹误,缺省 TYPICAL。DB_BLOCK_CHECKING 防止 memory 和 data 讹误,缺省 FALSE。DB_LOST_WRITE_PROTECT lost write 与 standy database 的延迟永久写有关,缺省 TYPICAL。11g 新出了一个参数,顶替了上面三个参数,它就是 DB_ULTRA_SAFE(考点)。该参数可选项:OFF(缺省) |DATA_ONLY|DATA_AND_INDEX  

 RMAN 在 BACKUP 时 , 可 以 监 测 到 损 坏 的 数 据 块 , 并 且 自 动 将 坏 块 记 录V$database_block_currption 中。 

 如果是某个查询会话击中了坏块,可能会有下面的报错:ORA-01578: ORACLE DATA BLOCK CURRPTED(FILE #5,BLOCK #21)  

blockrecover device type disk datafile 5 block 21;--对应坏块恢复命令

11g新特性

backup validate database;
recover corruption list;
--BACKUP VALIDATE DATABAE 不生成备份集,它只是检查坏块,并确认所有数据文件在正确的位置存在, 这条命令会在 v$backup_corruption 和 v$database_block_corruption 视图中填充检测到的所有讹误数据块
 BACKUP CORRUPTION LIST UNITL TIME SYSDATE - 7;

 注意:RMAN 的块恢复是完全恢复,这里的 UNTIL 表示的是要使用一周前的备份做还原,它不代表不完全恢复  

 1) BMR 是 RMAN 的一个功能,它是针对物理损坏的 block 进行的完全恢复,要求数据库是ARCHIVELOG 模式。2) RMAN 是块级备份,备份时自动检测坏块,缺省下碰到坏块就会中断备份,除非 setmaxcorrupt3)做 BMR 有两点前提:一个是数据库要在 mount 或 open 下, 另一个是要有坏块所在的数据文件 incremental level 0 备份。4)闪回日志也可以帮助恢复坏块。 

desc V$DATABASE_BLOCK_CORRUPTION;
recover corruption list;

案例:归档备份

 概念:在 Oracle 11g 中,可以使用 backup … keep 命令保留比 RMAN 备份保留策略所指定的时间更长的备份。它可以构造能保留数年的备份(不被 obsolete),归档备份之所能使备份长久保存,关键是使用 keep 选项覆盖掉了 RMAN 中缺省的保留策略。 

BACKUP ... KEEP {FOREVER|UNTIL TIME 'date_expt'} [RESOTRE POINT rename];
--KEEP FOREVER 永不过期(需要 catalog)在 Oracle 11g 中
--KEEP UNTIL TIME 跟一个时间长度,如表示一年, 'sysdate+365'
--RESOTRE POINT 是将备份后的 SCN 保存在控制文件中。以便恢复时的数据一致性。

backup datafile 4 format '/u01/myrman/%s_%t.bak'keep until time 'sysdate+30'restore point timranbak;
list restore point all;

 归档备份不受 retention 策略影响,也不会由 delete obsolete 命令自动删除掉。 

 归档备份是包含一切的备份,共四种类型:数据文件备份, spfile 备份, control 备份和归档日志备份。 

目录和辅助库

 如果没有 catalog, RMAN 的存储库(元数据)保存在目标库的控制文件里,这样可能存在如下隐患1)目标库上的控制文件损坏,造成该目标库上 RMAN 元数据丢失。尽管你做了数据备份,但如果没有 autobackup, RMAN 就很难找那些备份集了。2) RMAN 元数据受控制文件参数 control_file_record_keep_time 限制,缺省是 7 天,超时可能被覆盖,即造成老化的元数据丢失  

catalog数据库优点

1)它多了一份目标库的 RMAN 元数据副本。2)它不受时间限制,不会被覆盖,理论上是无限期的存储 rman 元数据历史信息。3)使用一个 catalog 目录库就可以管理许多目标库,所谓集中管理多个目标库,这些目标库可以是不同平台,不同版本。4)它可以使用脚本 catalog script 这是 catalog 独有的功能,使 RMAN 的备份与恢复更加灵活,自动化  

 create tablespace rman_ts datafile 'E:\rman.dbf' size 50m;
create user rman identified by rman default tablespace rman_ts;
grant resource,recovery_catalog_owner to rman;
rman target sys/system@timran11g catalog rman/rman@orcl;
create catalog tablespace rman_ts;--创建catalog目录(创建一大堆表)
register database;--注册目标数据库
RESYNC CATALOG;--同步数据库

 一般而言,每次连接 target 和 catalog 时 target 库的控制文件都会自动刷新到 Catalog 库。但如果 target 库结构有改变,或在备份期间有大量 online 日志归档, Catalog 这边可能没有自动更新,必要时做一下手动同步。这种同步是整体的刷新,也叫 full resync.  

 catalog 连接 targe 方法  

  • ,在连接 catalog 时同时连接 target  

  • 先进入 RMAN,再分别 connect target|catalog  

  • 先进入 catalog,然后再使用 connect target 命令连接 target  

rman catalog rman/rman@orcl;
connect target sys/system@timran11g;
connect target sys/system@orcl;-- catalog 一次只能连一个 target(考点)
connect target sys/system@orcl;
register database;

rman catalog的存储脚本

run{
backup database plus archivelog delete all input;
delete obsolet;
}--非catalog的rman脚本可以作为操作系统文件存储
rman target / catalog rman/rman@orcl @timran.rcv
create [global] scriptreplace [global] script
print [global] script
list [global] script name
exectue [global] script
delete [global] script

导入catalog database

connect catalog rman/rman@rman11;
import catalog rman1/rman1@rman10;
import catalog rman1/rman1@rman10 dbid=123456,1234557;

catalog command

CATALOG DATAFILECOPY '/disk1/old_datafiles/01_01_2003/users01.dbf';
CATALOG ARCHIVELOG '/disk1/arch_logs/archive1_731.dbf','/disk1/arch_logs/archive1_732.dbf';
CATALOG BACKUPPIECE '/disk1/backups/backup_820.bkp';
CATALOG START WITH '/disk1/backups/';

案例

backup as copy datafile 4 format '/u01/myrman/%s.dbf';
select file#,name from v$datafile;
rm /u01/oradata/timran11g/users01.dbf;
RMAN> sql 'alter database datafile 4 offline';
RMAN> switch datafile 4 to copy;--switch 命令更改了控制文件相关信息并触发 resync catalog。
recover datafile 4;
RMAN> sql 'alter database datafile 4 online';
alter tablespace users offline;
cp /u01/myrman/3.dbf /u01/oradata/timran11g/users01.dbf;
alter tablespace users rename datafile '/u01/myrman/3.dbf' to'/u01/oradata/timran11g/users01.dbf';
alter tablespace users online;
  • 到目标库的 RMAN 连接通常是 SYS 用户,因为一般需要在 RMAN 里发出启动或关闭数据库,但是不需要指定 AS SYSDBA  

  • 创建 catalog 目录的版本必须高于或等于任何目标库的数据库版本,因此可以创建单个版本为 11.1.0.6 的目录加补丁集 6  

  • 使用 create script 建立本地脚本,它只让你连接单个目标库,使用 create global script命令创建全局存储脚本,它适用于所有目标库, 但不能同时对多个目标库执行命令。本地脚本和全局脚本都保存在 RMAN catalog 里。 

  • 迁移过来的 global script 如果有重名出现, RMAN 会重命名它们。 

  • 使用 exectue去执行脚本,它必须包含在 RUN{}。 

虚拟专用目录

 一个 catalog 可以注册你单位的所有数据库的详细信息,当 target 服务器比较多,如果让某个 DBA 只能查看 CATALOG 中某些元数据,那么可以利用 Oracle11 提供的虚拟专用目录(virtual private catalog),你可以通过只授予 CATALOG 目录中某个元数据子集的访问权,严格限制对 CATALOG 目录的访问。与虚拟专用目录(virtual private catalog)概念相关的是基恢复目录( base recovery catalog)。使用虚拟专用目录的前提是必须有基目录。这两种类型的目录差别只是虚拟专用目录拥用只能访问他们有访问权限的那些数据库,而基目录拥有者可以访问所有注册的数据库。 

GRANT recovery_catalog_owner TO vpc1;
CONNECT CATALOG catowner/password@catdb;
G CONNECT CATALOG vpc1/password@catdb;
RANT CATALOG FOR DATABASE prod1 TO vpc1;
CREATE VIRTUAL CATALOG;

复制数据库 Duplicate Database

 Duplicate Database 有手工方法和 RMAN 方法, RMAN Duplicate 可以有两个用途: 

  • TEST 用途的 Database  

    就是 source host 的一个 copy, RMAN 通过不完全恢复复制出来一个 new host,如果 source和 new host 都在一个平台上,文件路径命名不能相同,如果是两个平台(不支持异构),文件路径命名可同也可不同。无论如何 new host 有唯一的 DBID。 

  • Standby 用途 Database  

 典型的就是 Data Guard, Standby Database 的主要功能是可以提供 Failover, 所以 Primarydatabase 会将 log 输送到 Standy Database.使其不断更新数据。 

RMAN 使用 Duplicate 命令两种模式:

  • Backup-Based Duplication  

  • Active Database Duplication  

一般步骤

  1. 将辅助库上安装数据库软件,建立 Oracle Home

  2. 为辅助库建立口令文件, Active 方式下与源数据库口令相同。

  3. 确保到辅助实例的网络连通性 (建立静态监听)

  4. 为辅助实例创建参数文件

  5. 以 nomount 方式启动辅助实例 (启动静态监听)

  6. 在 mount 或 open 模式下启动目标数据库

  7. 创建备份或将备份和归档日志文件复制到辅助库实例可以访问的某个位置,除非正在使用活动( active)数据库复制

  8. 如果有必要分配辅助通道

  9. 运行 rman duplicate 命令

  10. 使用 resetlogs 打开辅助数据库 (体现了 duplicate 是个不完全恢复)  

案例  Duplicating to a Host with the Same Directory Structure (Active)  

DUPLICATE TARGET DATABASE TO dupdb
FROM ACTIVE DATABASE
PASSWORD FILE
SPFILE
NOFILENAMECHECK;

 基于网络的复制数据库,此例是 Active 方式, source host 和 new host 需要同样的一个PASSWORD FILE, SPFILE 是复制过去的(没有任何参数修改)。new host 和 source host 是同样的目录结构及文件命名。NOFILENAMECHECK 的意思是不检查文件是否重名,因为 new host和 source host 不是一个平台  

案例  Duplicating a Database Without a Target and Recovery Catalog Connection(Backup-Based)  

DUPLICATE DATABASE TO dupdb
UNTIL TIME "TO_DATE('11/01/2007 14:00:00', 'MM/DD/YYYY HH24:MI:SS')"
SPFILE
BACKUP LOCATION '/prod_backups'
NOFILENAMECHECK;

 基于备份的复制数据库,此例 RMAN 只连接了 new host(dupdb), source host 的备份已经放在 new host 能找的到的/prod_backups 目录下。 

案例  Duplicating a Standby Database to a Host with the Different DirectoryStructure (Active)  

DUPLICATE TARGET DATABASE
FOR STANDBY
FROM ACTIVE DATABASE
PASSWORD FILE
SPFILE
PARAMETER_VALUE_CONVERT '/disk1', '/disk2'
SET DB_UNIQUE_NAME 'dup1'
SET DB_FILE_NAME_CONVERT '/disk1','/disk2'SET LOG_FILE_NAME_CONVERT '/disk1','/disk2'
SET SGA_MAX_SIZE 200M
SET SGA_TARGET 125M;

 基于网络的复制Standby数据库, RMAN并不是简单复制source host的spfile到new host,它通过 spfile 子句做了一些参数指定及修改, new host 这边必须指定一个新的DB_UNIQUE_NAME 以区别 source host(因为它们的 db_name 是相同的), new host 使用新的spfile启动实例,然后通过网络(active方式)复制source host所有的datafile,archivelog到 new host 的新的路径下。 

  • duplicate 目前还不支持跨平台的复制,如 windows--linux 就是两个平台。(windows32位和 64 位算是一个平台)

  • 必须保证 RMAN 的备份能使 new host 访问到(除非 active 方式)。 

  • Active 模式要保证 source hos 和 new host 两端有同样的 sys 口令文件  

  • 如果是复制 database, Oracle 依靠不同的 DBID 区别 source host 和 new host。如果是复制 standby database, Oracle 依靠 db_unqiue_name 区分 primary host 和standby host  

  • 如果是 active 模式,使用 source host 端 target channel 工作,要求 source database是归档模式的。 

  • 如果是 backup 模式,需要有 new host 端的 auxiliary channel 工作。

  •    初始化参数 DB_FILE_NAME_CONVERT 指定数据文件和临时文件的映射名称。初始化参数 LOG_FILE_NAME_CONVERT 指定联机重做日志文件的映射名称。 

  • 也可以通过 duplicate database 中的 spfile 子句指定上面两个参数。 

Rman维护

list命令

list backup;
list backup of tablespace users;
list backup of datafile 2;
list backup of controlfile;
list backup of archivelog all;
list backup of archivelog until time ='sysdate -1';
list backupset 56;
list datafilecopy all;
list copy of tablespace users;
list copy of datafile 1;
list datafilecopy 67;
list copy of controlfile;
list expired backup;

corsscheck

 用于检测备份状态( AVAILABLE:可用;UNAVAILABLE:不可用;EXPIRED:过期(RMAN 元数据还记录着,但 OS 上物理备份已经被删除了)  

CHANGE BACKUPSET 1 UNAVAILABLE;-- AVAILABLE/UNAVAILABLE 的转换使用 change 命令  
crosscheck backup;--是否 EXPIRED 要经过 crosscheck 命令才能看到。
crosscheck copy;--对于 EXPIRED 状态的产生,与 crosscheck 命令是密切相关的, RMAN 通过 crosscheck 命令检查备份是否存在于备份介质上,如果不存在,则状态由 AVAILABLE 改为 EXPIRED( duplex 一个道理)。
delete expired backup;--//删除所有过期的备份。
change backuppiece 11 uncatalog;--元数据有而实际备份没有,这叫 expired,也可以反过来,让备份有而元数据没有。
catalog backuppiece '/u01/myrman/xxx.bak';--将 11 号备份片又登记到 RMAN元数据中了

 DELETE EXPIRED 命令不删除任何文件,它只更新 RMAN 存储库(元数据) , DELETE OBSOLETE 命令将删除文件并更新存储库  

report命令

report schema;--查看目标库物理结构
REPORT schema at time|scn|sequence;--at 子句必须在 catalog 里使用
REPORT need backup;--根据当前备份保留策略,列出哪些数据文件需要备份
REPORT NEED BACKUP DAYS n;--使 N 天取代当前备份保留策略,列出哪些数据文件需要备份
REPORT obsolete; --根据备份冗余策略来判断,那些备份是陈旧的(obsolete)
REPORT NEED BACKUP incremental 3;--三天以来尚未进行备份的文件
REPORT NEED BACKUP redundancy 2;--如果不具有两个或更多个备份则需要进行备份
REPORT NEED BACKUP recovery window of 3 days;--需要进行备份以恢复到三天前的数据状态
REPORT OBSOLETE REDUNDANCY 2;--如果需要的备份副本不多于两个,列出作废的恢复文件
REPORT UNRECOVERABLE DATABASE;--备份文件中的表 , 采用了nologging 属性,那么该数据文件是不能恢复的


REPORT NEED BACKUP //按照保留策略出报告
REPORT NEED BACKUP DAYS n //按照 N 天出报告

REPORT OBSOLETE 根据保留策略计算出那些备份集是废弃的。
REPORT UNRECOVERABLE DATABASE--如果一个文件做过备份,其后在这个文件上创建的表采用了 nologging 属性,表插入数据没有记日志,那么是不能恢复的,这个表所在的文件就是 report unrecoverable database 要列出来的文件

delete命令

delete backup of datafile 2;
delete backup of tablespace system;
delete backupset ;
delete backupset 30,32;
delete backup of controlfile;
delete noprompt backup of controlfile;
delete datafilecopy all;
delete copy of datafile 10;
delete copy of tablespace users;
delete expired backup;
delete expired copy;
delete obsolete;
delete noprompt obsolete;



文章转载自木底木叉,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论