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;
}