3.3.2 创建和管理虚拟专用目录

下面介绍如何设置虚拟专用目录,创建虚拟专用目录所有者,然后为虚拟专用目录所有者分配适当的权限。接下来,虚拟专用目录所有者将创建自己的虚拟专用目录并注册一个或多个数据库。另外,基本目录所有者可以将已注册数据库的目录权限授予虚拟目录所有者。

在下面的示例中,RCAT数据库的基本目录所有者RCAT_OWNER将创建一个虚拟专用目录所有者VPC1,并将RMAN权限REGISTER DATABASE授予VPC1。oel63服务器上的CDB01数据库的DBA将使用VPC1来创建虚拟专用目录并注册CDB01数据库。

1.创建虚拟专用目录所有者

在恢复目录数据库上执行的第一个步骤是创建拥有虚拟专用目录的Oracle账户:

        [oracle@oel63 complref]$ sqlplus / as sysdba

        SQL*Plus: Release 12.1.0.1.0 Production on Wed Feb 19 00:17:49 2014
        Copyright (c) 1982, 2013, Oracle.  All rights reserved.
        Connected to:
        Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
        With the Partitioning, Automatic Storage Management,
            OLAP, Advanced Analytics and Real Application Testing options
        SQL> create user vpc1 identified by vpc1
          2> default tablespace rman quota unlimited on rman;
        User created.
        SQL>

2.为虚拟专用目录所有者授权

接下来将为VPC1(新虚拟专用目录的所有者)授予RECOVERY_CATALOG_OWNER权限:

        SQL> grant recovery_catalog_owner to vpc1;
        Grant succeeded.
        SQL>

注意,用户VPC1不是整个恢复目录的所有者(不要被角色名误导),但是VPC1可以创建自己的专用恢复目录,专用恢复目录是基本恢复目录的逻辑子集。

基本恢复目录所有者可以根据需要,使用RMAN GRANT CATALOG命令授予在当前目录上的权限。在本例中,基本目录所有者为VPC1授予CDB01数据库上的权限,CDB01数据库已经在恢复目录上注册(注意:在发出此命令前,RMAN必须连接到恢复目录,但不一定是目标数据库):

        RMAN> grant catalog for database cdb01 to vpc1;
        Grant succeeded.
        RMAN>

如果基本恢复目录所有者希望用户VPC1注册自己的数据库,那么所有者必须为VPC1授予RMAN权限REGISTER DATABASE,见下例:

        RMAN> grant register database to vpc1;
        Grant succeeded.
        RMAN>

3.创建虚拟专用目录

现在,用户VPC1有权创建和填充虚拟目录,下一步是以用户VPC1的身份连接到RMAN并创建目录。

为方便起见,用户VPC1在连接到恢复目录的同时连接到目标数据库HR。下一步是创建虚拟专用目录本身(如同只注册一次数据库一样,只需要创建一次虚拟专用目录):

        [oracle@oel63 complref]$ rman target / catalog vpc1/vpc1@rcat

        Recovery Manager: Release 12.1.0.1.0 -
            Production on Wed Feb 19 00:27:27 2014

        Copyright (c)1982, 2013, Oracle and/or its affiliates.  All rights reserved.
        connected to target database: CDB01 (DBID=1367268229)
        connected to recovery catalog database

        RMAN> create virtual catalog;
        found eligible base catalog owned by RCAT_OWNER
        created virtual catalog against base catalog owned by RCAT_OWNER
        RMAN>

删除虚拟专用目录的方式与删除基本目录相同;但是,不可像基本目录所有者那样执行DROP CATALOG命令。

4.使用虚拟专用目录

现在已经授予了所有权限,而且创建了虚拟目录,用户VPC1可以注册数据库:

        [oracle@oel63 complref]$ rman target / catalog vpc1/vpc1@rcat

        Recovery Manager: Release 12.1.0.1.0 -
            Production on Wed Feb 19 00:30:59 2014
        Copyright (c)1982, 2013, Oracle and/or its affiliates.  All rights reserved.
        connected to target database: CDB01 (DBID=1367268229)
        connected to recovery catalog database

        RMAN> register database;

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

要查看用户VPC1可以通过RMAN虚拟专用目录管理哪些数据库,请连接到恢复目录数据库并查询DBINC视图:

        [oracle@oel63 complref]$ sqlplus vpc1/vpc1@rcat
        SQL*Plus: Release 12.1.0.1.0 Production on Wed Feb 19 00:33:25 2014
        Copyright (c) 1982, 2013, Oracle.  All rights reserved.
        Last Successful login time: Wed Feb 19 2014 00:31:00 -06:00
        Connected to:
        Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production

        With the Partitioning, Automatic Storage Management,
            OLAP, Advanced Analytics and Real Application Testing options

        SQL> select distinct db_name from dbinc;
        DB_NAME
        --------
        CDB01

        SQL>

注意,必须在SELECT语句中使用DISTINCT。DBINC视图为目标数据库的每个化身显示一行;如果没有使用DISTINCT,则经常为每个数据库显示多个行。