RMAN catalog 设置

一 相关术语解释
1)Backup sets 备份集
备份集顾名思义就是一次备份的集合,它包含本次备份的所有备份片,以oracle专有的格式保存。一个备份集根据备份的类型不同,可能构成一个完全备份或增量备份。
2)Backup pieces 备份片
一个备份集由若干个备份片组成。每个备份片是一个单独的输出文件。一个备份片的大小是有限制的;如果没有大小的限制, 备份集就只由一个备份片构成。备份片的大小不能大于你的文件系统所支持的文件长度的最大值。
3)Image copies 映像备份
映像备份不压缩、不打包、直接COPY 独立文件(数据文件、归档日志、控制文件),类似操作系统级的文件备份。而且只能COPY 到磁盘,不能到磁带。可以作为增量备份的0级,一般用来备份控制文件。
4)Full backup 全备份
全备份是指对数据文件中使用过的数据块进行备份,没有使用过的数据块是不做备份的,也就是说,RMAN 进行备份是进行压缩的。
5)Incremental backup 增量备份
增量备份是指备份数据文件中自从上一次同一级别的或更低级别的备份以来被修改过的数据块。与完全备份相同,增量备份也进行压缩。增量备份虽然概念很好,备份也很简单,但恢复起来却是另外一回事,不仅麻烦而且容易出错,所以实际中越来越少使用,到了Oracle 9i已经建议不再使用,以后版本会逐渐取消对增量备份的支持。
6)Recovery catalog 恢复目录
恢复目录用于记录RMAN 使用过程中的控制信息,恢复目录应该经常被同步(这在后面会讲到)。尽管我们可以使用nocatalog 方式来使用RMAN,此时控制信息记录在目标数据库的控制文件中,但这样毕竟不安全,因为一旦目标数据库的控制文件损坏就意味着所有的RMAN 备份失效。同样的道理恢复目录应该建立在另外一个数据库中,在下面的例子中我们称作“目录数据库”。


二 关于恢复目录创建和删除

1.用dbca或者命令创建恢复目录数据库test

2.建立一个存储恢复目录的表空间(RMAN)和一个做Rman备份和恢复的用户(rman):

SQL> CREATE TABLESPACE RMAN DATAFILE 'C:\oracle\product\10.2.0\oradata\rman01.dbf' SIZE 50M EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

表空间已创建。

SQL> create user rman identified by rman default tablespace rman temporary tablespace temp quota unlimited on rman quota 0m on system;

用户已创建

3.给Rman用户授予connect,resource,Recovery_Catalog_Owner权限和角色:

SQL> grant connect,resource,Recovery_Catalog_Owner to rman;
授权成功。


4.连接到恢复目录数据库:

C:\>rman catalog rman/rman@test target sys/sys@mydb
 
恢复管理器: Release 10.2.0.3.0 - Production on 星期五 8月 21 09:53:52 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到目标数据库: MYDB (DBID=2610320843)

连接到恢复目录数据库

4.如果 3. 中提示未创建恢复目录, 需要创建恢复目录:

RMAN> create catalog
恢复目录已创建

注册数据库
 

RMAN> register database;

注册在恢复目录中的数据库
正在启动全部恢复目录的 resync
完成全部 resync

由于redo log和archive log的信息不会自动更新到恢复目录,所以需要定期的同步恢复目录。

恢复目录同步
 

RMAN> resync catalog;

正在启动全部恢复目录的 resync
完成全部 resync

 

从恢复目录中注销已注册的数据库
要点:
1.       使用DBMS_RCVCAT 包实现;
2.       一旦注销,该目标数据库保存在这个恢复目录中的备份集就不可用了;
3.       注销数据库必须知道目标数据库的标识码(DB_ID)和数据库键值(DB_KEY);

操作:
1.       目标数据库的标识码(DB_ID)需要在连接时查看:
2.       数据库键值(DB_KEY)按照如下方法查看:

SQL>  select db_key,rpad(to_char(db_id),12) "DB_ID_NUMBER" from db where db_id='1749233635'

    DB_KEY DB_ID_NUMBER
---------- ------------------------
         1 1749233635


(因为db表示rman用户的对象,所以必须以rman用户连接)

3.       注销数据库:

SQL> execute dbms_rcvcat.unregisterdatabase(1,1749233635);

PL/SQL 过程已成功完成。

注:Oracle 10g中,通过一条简单的命令unregister database就可以注销数据库。

你可能感兴趣的:(oracle,sql,C++,c,C#)