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