基于RMAN 建立测试数据库

我们经常需要根据生产数据库做一个测试数据库进行例如软件测试、数据结构更新测试等操作。希望这个测试数据库和生产数据库尽可能地相似。使用数据库冷备的方式,需要关闭生产数据库,自然不现实;使用导入导出的方式,花费的时间可能较长;使用热备的方式之外,其实还是可以使用RMAN的方式。下面就基于相同版本操作系统和ORACLE,如何在相同位置创建测试数据库。

假设源数据库所在机器地址为 132.147.100.81(简称机器1),数据库实例名为ORCL ,操作系统为Windows2003

测试数据库在机器地址为 132.147.100.82(简称机器2), 操作系统同机器1

      机器1:

          1、进行RMAN 备份:

        RMAN  target  /

        执行以下脚本:

RUN { 

allocate channel c1 type disk;

allocate channel c2 type disk;

BACKUP FORMAT 'd:\backup\orcl_%U_%T' skip inaccessible filesperset 5  DATABASE TAG orcl_hot_db_bk; 

sql 'alter system archive log current';

BACKUP FORMAT 'd:\backup\arch_%U_%T' skip inaccessible filesperset 5 ARCHIVELOG ALL DELETE INPUT; 

backup current controlfile tag='bak_ctlfile' format='d:\backup\ctl_file_%U_%T';

backup spfile tag='spfile' format='d:\backup\ORCL_spfile_%U_%T';

release channel c2;

release channel c1;

}

2.  导出Spfile 文件“

SQL> Create pfile = d:\init.ora from spfile;

3.  建立一个指向测试数据库的服务别名:

AUXORCL =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 132.147.100.82)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = ORCL)

      (UR=A)

    )

  )

其中,(UR=A) 必须加上,因为在克隆数据库时,测试数据是nomount 状态,没有这个参数,将不能连接上数据库。

机器2

1 . 安装好ORACLE软件,不安装ORACLE实例。

2. 使用 DBCA,创建ORCL实例,但最后一步不真正创建数据库,而是保存成脚本。

3.执行生成的脚本中的createdb.Bat中除最后一句的其它语句,目地是创建新实例所需的目录和服务。

4. 将机器1中备份的数据库(d:\backup) 复制到相同的目录。

5. 使用netca 建立监听

6  使用orapwd  命令 创建口令文件:

7 拷贝机器1上的init.ora 文件,修改其中参数,例如SGA区大小等,这不是必须的,主要依赖机器2的配置。

 8 .   连接到空实例: sqlplus /  as sysdba后  ,使用修改后的Init.ora启动到nomount状态,并生成spfile文件。

机器1:

 重新以RMAN 连接源数据库和测试数据库:

 Rman  target / auxiliary sys/oracle@auxorcl

执行:

DUPLICATE TARGET DATABASE TO orcl 

执行成功后,会关闭测试数据库,还可以在机器2相应的目录下的数据文件。

机器2:

 重新启动数据库,并以resetlog方式打开数据库。

至此,你会发现测试数据库创建成功。

请使用浏览器的分享功能分享到微信等