用于在远程主机上创建副本数据库的方案

在此方案中,您可以在远程主机上创建与原始数据库具有相同目录结构的副本数据库。 在本例中,原始数据库为 orcl,原始数据库主机名为 host1,原始数据库 orcl 使用 host2 上的 RMAN 恢复编录数据库 catdb。 但是副本数据库的名称将为 dup,副本数据库的主机名为 host3

在远程主机上创建副本数据库

  1. 在 host1 上,通过 CA ARCserve Oracle 代理为目标数据库 orcl 执行一次完整备份,以确保我们具有必需的备份和存档的重做日志。 此时您可以启动 Oracle 代理配置工具以启用从 RMAN 控制台提交作业并配置 Oracle 代理。
    C:\> rman catalog rman/rman@catdb target sys/sys_pwd@orcl
    RMAN> run {
    allocata channel dev1 type "sbt_tape"
    backup database plus archivelog;
    release channel dev1;}
    

    注意:请务必启用 rman 编录以进行完全备份,并从 GUI 执行完全备份。

  2. 在 host3 上,使用 oradim 创建一个辅助实例。
    oradim -new -sid dup
    
  3. 在 host3 上,为该辅助实例创建一个 Oracle 密码文件。 例如:
    Orapwd file="c:\oracle\product\10.2.0\db_1\database\PWDdup.ora" password=sys_pwd entries=5
    
  4. 建立与该辅助实例的 Oracle 网络连接。
  5. 在 host3 上,为辅助实例 dup 创建一个初始化参数文件 initdup.ora。

    下面为副本数据库的初始化参数设置示例:

    db_name=dup
    db_unique_name=dup
    background_dump_dest='C:\oracle\product\10.2.0\admin\dup\bdump'
    compatible='10.2.0.1.0'
    control_files='C:\oracle\product\10.2.0\oradata\dup\control01.ctl','C:\oracle\product\10.2.0\oradata\dup\control02.ctl','C:\oracle\product\10.2.0\oradata\dup\control03.ctl'
    core_dump_dest='C:\oracle\product\10.2.0\admin\dup\cdump'
    user_dump_dest='C:\oracle\product\10.2.0\admin\dup\udump'
    DB_FILE_NAME_CONVERT=('c:\oracle\product\10.2.0\oradata\orcl','C:\oracle\product\10.2.0\oradata\dup\')
    LOG_FILE_NAME_CONVERT=('c:\oracle\product\10.2.0\oradata\orcl','C:\oracle\product\10.2.0\oradata\dup\')
    
  6. 此时在 host3 上启动辅助实例

    开始 RMAN 复制之前,请使用 SQL*Plus 连接至该辅助实例,并在 NOMOUNT 模式下进行启动(指定参数文件)。 在本例中,sys_pwd 为具有 SYSDBA 权限的用户的密码,dup 为该辅助实例的网络服务名称。

    SQL> connect sys/sys_pwd@dup
    SQL> startup nomount pfile=' c:\oracle\product\10.2.0\db_1\database\PWDdup.ora ';
    

    注意:由于该辅助实例不包含控制文件,因此只能在 NOMOUNT 模式下启动该实例。 请勿创建控制文件或试图安装或打开该辅助实例。

  7. 可以安装 CA ARCserve Oracle 代理,并在 host3 上启动 Oracle 代理配置工具。 确保选中实例 dup 以对其进行保护。
  8. 修改目录 %Oracle_Agent_Home% 中的 config.xml 以启用备用还原。

    在 config.xml 文件中找到以下部分:

    <AlternateRestore>
    	     <IsAnyOriginalHost>0</IsAnyOriginalHost>
    	     <OriginalHost\>
    
    	</AlternateRestore>
    

    可以使用“将 OriginalHost 设置为等于 host1”或“将 IsAnyOriginalHost 设置为 1”来执行备用还原。

  9. 在 host1 上,使用 RMAN 连接至目标数据库、副本数据库以及恢复编录数据库,并发出 Duplicate 命令。
    C:\> rman catalog rman/rman@catdb target sys/sys_pwd@orcl auxiliary sys/sys_pwd@dup 
    连接至目标数据库:ORCL (DBID=1143972091)
    连接至恢复编录数据库
    连接至辅助数据库:DUP(未安装)
    RMAN> run 
    {
    allocate auxiliary channel aux1 type "sbt_tape";
    duplicate target database to dup;
    release channel aux1;
    }
    
  10. 数据库复制完成。 此时可以在 host3 上运行以下命令,
    C:\> sqlplus / as sysdba
    

    连接至:

    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 通过

    “分区”、“OLAP”和“数据采掘”选项完成。

    SQL> select status from v$database;
    STATUS
    ----------
    OPEN
    SQL> SELECT NAME FROM V$DATABASE;
    NAME
    ---------
    
    DUP