DB-hub Technology Oracle RMAN catalog

RMAN catalog

1.catalog和nocatalog

nocatalog就是用controlfile作为catalog,RMAN的备份信息写在本地控制文件里面, 每一次备份都要往控制文件里面写备份信息,控制文件里面会有越来越多的备份信息。
catalog就是先创建catalog数据库,建立恢复目录,数据库的备份信息写到catalog数据库里。

当通过rman nocatalog方式备份Oracle数据库时,Oracle使用controlfile存放RMAN的备份信息。因此,使用nocatalog方式备份数据库时,一定要记得备份controlfile。

初始化参数control_file__record_keep_time设置备份信息保存时间,到规定时间就自动清除以前的备份信息:

SQL> alter sysem set control_file_record_keep_time=7 scope=spfile;

当使用nocatalog恢复时,数据库必须处于“mount”状态,即一定要先加载控制文件,不然RMAN找不到记录的备份信息。而Oracle startup mount的前提条件是control file必须存在。因此,你必须在恢复datafile之前先恢复controlfile。使用catalog方式时,可以startup nomount然后restore controlfile;但使用nocatalog时,必须先用文件方式恢复controlfile。

nocatalog恢复:

1) 建立oracle运行环境(包括init或sp文件)

2) 文件方式恢复controlfile到init文件指定的位置

3) startup mount

4) RMAN恢复datafile

5) alter database open resetlogs

catalog恢复

1) 建立oracle运行环境(包括init或sp文件)

2) RMAN restore controfile

3) alter database mount

4) RMAN restore datafile

5) alter database open resetlogs

nocatalog时利用controlfile存放备份信息,建议将Oracle参数文件中的CONTROL_FILE_RECORD_KEEP_TIME值加大(缺省为7天)。

2.创建catalog

  • 创建catalog数据库(或使用已存在的数据库)
  • 创建catalog owner
  • 创建catalog

创建表空间

create tablespace tbs_rman datafile '/u01/app/oracle/oradata/catadb/tbs_rman01.dbf'
size 200m autoextend on;

创建rman 用户

create user rman identified by rman
temporary tablespace temp
default tablespace tbs_rman
quota unlimited on tbs_rman;

grant recovery_catalog_owner to rman;
conn rman/rman
select * from session_privs;

PRIVILEGE
----------------------------------------
CREATE SESSION
ALTER SESSION
CREATE TABLE
CREATE CLUSTER
CREATE SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE DATABASE LINK
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE

select * from session_roles;
ROLE
------------------------------
RECOVERY_CATALOG_OWNER

连接到catalog

connect catalog rman/rman@catadb
connected to recovery catalog database

创建catalog

create catalog tablespace tbs_rman;
recovery catalog created

连接到目标数据库及catalog

rman target sys/redhat@orcl catalog rman/rman@catadb

connected to target database: ORCL (DBID=1260850162)
connected to recovery catalog database

将目标数据库注册到catalog

register database;
database registered in recovery catalog
starting full resync of recovery catalog
full resync complete

3.备份

查看相关信息

RMAN> list incarnation;
List of Database Incarnations
DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time

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

1       8       ORCL     1260850162       PARENT  1          30-JUN-05

1       2       ORCL     1260850162       CURRENT 446075     22-OCT-10

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

RMAN> crosscheck copy;         --校验copy

RMAN> delete expired copy;     --删除过期的copy

全备

RMAN> run{
allocate channel ch1 device type disk;
backup as compressed backupset
database plus archivelog delete input
format='/u01/app/oracle/bk/rmbk/Whole_%d_%U'
tag='Whole_bak';
release channel ch1;
}

增量备份(0级)

RMAN> run{
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
backup as compressed backupset
incremental level 0
database plus archivelog delete input
format='/u01/app/oracle/bk/rmbk/Inc_0_%d_%U'
tag='Inc_0';
release channel ch1;
release channel ch2;
}


RMAN> list backup summary;

增量备份(1级)

RMAN> run{
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
backup as compressed backupset
incremental level 1 database
format='/u01/app/oracle/bk/rmbk/Inc_1_%d_%U'
tag='Inc_1';
release channel ch1;
release channel ch2;}

RMAN> list backup by file;

累计增量备份(1级)

RMAN> run{
allocate channel ch1 device type disk;
backup as compressed backupset
incremental level 1 cumulative database
format '/u01/app/oracle/bk/rmbk/Cum_1_%d_%U'
tag='Cum_1';
release channel ch1;
}


备份表空间

RMAN> run{
allocate channel ch1 device type disk;
backup as compressed backupset
tablespace users,example
format='/u01/app/oracle/bk/rmbk/tbs_%d_%U'
tag='tbs';


RMAN> list backupset tag=tbs;

备份数据文件

RMAN> run{
allocate channel ch1 device type disk;
backup as compressed backupset
datafile 3
format='/u01/app/oracle/bk/rmbk/df_%d_%U'
tag='df';
release channel ch1;}

备份归档日志
备份归档日志前,建议先使用crosscheck校验一下

RMAN> crosscheck archivelog all;
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=148 devtype=DISK
validation succeeded for archived log
archive log filename=/u01/app/oracle/oradata/orcl/arch/log_1_117_733069427.arc recid=111 stamp=733171369
Crosschecked 1 objects

RMAN> sql 'alter system switch logfile';
sql statement: alter system switch logfile

RMAN> sql 'alter system switch logfile';
sql statement: alter system switch logfile

RMAN> list archivelog all;

List of Archived Log Copies
Key     Thrd Seq     S Low Time  Name
------- ---- ------- - --------- ----
465     1    117     A 22-OCT-10 /u01/app/oracle/oradata/orcl/arch/log_1_117_733069427.arc
553     1    118     A 23-OCT-10 /u01/app/oracle/oradata/orcl/arch/log_1_118_733069427.arc
569     1    119     A 23-OCT-10 /u01/app/oracle/oradata/orcl/arch/log_1_119_733069427.arc

基于SCN来备份归档日志

RMAN> run{
allocate channel ch1 device type disk;
backup as compressed backupset
archivelog from scn 848043
format='/u01/app/oracle/bk/rmbk/arc_%d_%U'
tag='arc';
release channel ch1;
}

镜像备份

RMAN> run{
allocate channel ch1 device type disk;
backup as copy datafile 1,4
format '/u01/app/oracle/bk/rmbk/df_%d_%U'
tag 'copybak';
release channel ch1;
}

Leave a Reply

您的邮箱地址不会被公开。 必填项已用 * 标注

Related Post