暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

使用Catalog(目录)数据库并对目标数据库进行备份

原创 eygle 2019-11-21
1772

使用Catalog数据库

使用Catalog数据库,首先需要确定一个数据库作为目录数据库,然后需要执行一系列的操作配置环境等。
创建恢复目录可以通过以下步骤完成。

(1)创建表空间。

尽管创建一个独立的表空间不是必须的,但是我们仍然推荐创建一个独立的表空间用于RMAN的恢复目录,以方便管理和备份。

SQL> CREATE TABLESPACE rman 
  2  DATAFILE '/opt/oracle9/oradata/testora9/rman01.dbf' SIZE 50 m
  3  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128 k;
Tablespace created.

(2)创建用户并授权。需要为RMAN创建一个管理用户,并授予相应的权限。

SQL> CREATE  USER rman IDENTIFIED BY rmanbak
  2  DEFAULT TABLESPACE rman
  3  TEMPORARY TABLESPACE temp
  4  QUOTA UNLIMITED ON rman
  5  /
User created. 
SQL> GRANT CONNECT,RESOURCE,RECOVERY_CATALOG_OWNER TO rman;
Grant succeeded.

注意RECOVERY_CATALOG_OWNER角色是RMAN恢复目录专用角色,在Oracle9iR2种包含以下权限:

SQL> select * from dba_sys_privs where grantee='RECOVERY_CATALOG_OWNER';
GRANTEE                        PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
RECOVERY_CATALOG_OWNER         CREATE VIEW                              NO
RECOVERY_CATALOG_OWNER         CREATE TABLE                             NO
RECOVERY_CATALOG_OWNER         ALTER SESSION                            NO
RECOVERY_CATALOG_OWNER         CREATE CLUSTER                           NO
RECOVERY_CATALOG_OWNER         CREATE SESSION                           NO
RECOVERY_CATALOG_OWNER         CREATE SYNONYM                           NO
RECOVERY_CATALOG_OWNER         CREATE TRIGGER                           NO
RECOVERY_CATALOG_OWNER         CREATE SEQUENCE                          NO
RECOVERY_CATALOG_OWNER         CREATE PROCEDURE                         NO
RECOVERY_CATALOG_OWNER         CREATE DATABASE LINK                     NO
10 rows selected.

在不同版本中,这个角色的权限略有不同。

(3)创建恢复目录。

通过如下方式连接到目录数据库并创建恢复目录:

bash-2.03$ rman catalog rman/rmanbak

Recovery Manager: Release 9.2.0.4.0 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

connected to recovery catalog database
recovery catalog is not installed

RMAN> create catalog;
recovery catalog created

恢复目录创建的对象可以通过SQL*Plus连接到数据库中进行查询。在进行数据库备份之前,还需要在Catalog数据库中注册目标数据库。注册数据库需要同时连接到目标(Target)数据库和目录(Catalog)数据库:

 bash-2.03$ rman catalog rman/rmanbak target eygle/eygle@eygle

Recovery Manager: Release 9.2.0.4.0 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

connected to target database: EYGLE (DBID=1407686520)
connected to recovery catalog database
然后发出register database命令即可:
RMAN> register database;

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

如果要从恢复目录中注销已注册的数据库,可以通过系统包DBMS_RCVCAT来实现,注销数据库需要注意,一旦注销,该目标数据库保存在这个恢复目录中的备份集就不再可用了。注销数据库必须知道目标数据库的标识码(DB_ID)和数据库键值(DB_KEY),这可以通过目录数据库查询获得:

SQL> connect rman/rmanbak
Connected.
SQL> select * from db; 
    DB_KEY      DB_ID HIGH_CONF_RECID LAST_KCCDIVTS CURR_DBINC_KEY
---------- ---------- --------------- ------------- --------------
         1 1407686520               1     598554496              2 

执行如下命令即可注销数据库:

SQL> execute dbms_rcvcat.unregisterdatabase(1, 1407686520); 
PL/SQL 过程已成功完成。 

注意:在Oracle 10g中,Oracle终于简化了这个操作,现在通过一条简单的命令unregister database就可以注销数据库:

$ rman catalog rman/rman target eygle/eygle@eygle

Recovery Manager: Release 10.2.0.1.0 - Production on Thu Mar 8 16:32:01 2007
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: EYGLE (DBID=1034439893)
connected to recovery catalog database

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

RMAN> unregister database;
database name is "EYGLE" and DBID is 1034439893

Do you really want to unregister the database (enter YES or NO)? YES
database unregistered from the recovery catalog

使用Catalog数据库对目标数据库进行备份

使用Catalog的另外一个好处是,可以在数据库中存储备份脚本,这样在反复执行备份时就可以通过简化的命令来执行。先看一下脚本的存储:

bash-2.03$ rman catalog rman/rmanbak target eygle/eygle@eygle

Recovery Manager: Release 9.2.0.4.0 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

connected to target database: EYGLE (DBID=1407686520)
connected to recovery catalog database

RMAN> create script fullbk {
2> backup full tag 'eygle' database
3> include current controlfile 
4> format '/opt/oracle/backup/eyglefull_%d_%T_%s'
5> plus archivelog 
6> format '/opt/oracle/backup/eyglearch_%d_%T_%s' 
7> delete all input;
8> }

created script fullbk

调用这个脚本执行备份则很简单:

RMAN> run {execute script fullbk;}      
executing script: fullbk

Starting backup at 08-MAR-07
current log archived
piece handle=/opt/oracle/backup/eyglearch_EYGLE_20070308_13 comment=NONE
Finished backup at 08-MAR-07

Starting backup at 08-MAR-07
including current SPFILE in backupset
including current controlfile in backupset
input datafile fno=00002 name=/opt/oracle/oradata/eygle/undotbs01.dbf
input datafile fno=00001 name=/opt/oracle/oradata/eygle/system01.dbf
input datafile fno=00003 name=/opt/oracle/oradata/eygle/eygle01.dbf
piece handle=/opt/oracle/backup/eyglefull_EYGLE_20070308_14 comment=NONE

Starting backup at 08-MAR-07
current log archived
piece handle=/opt/oracle/backup/eyglearch_EYGLE_20070308_15 comment=NONE
Finished backup at 08-MAR-07

如果要删除这个脚本,只需简单地发出一条命令即可:

RMAN> delete script fullbk;

deleted script: fullbk
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论