我们经常需要根据生产数据库做一个测试数据库进行例如软件测试、数据结构更新测试等操作。希望这个测试数据库和生产数据库尽可能地相似。使用数据库冷备的方式,需要关闭生产数据库,自然不现实;使用导入导出的方式,花费的时间可能较长;使用热备的方式之外,其实还是可以使用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 /auxiliarysys/oracle@auxorcl
执行:
DUPLICATE TARGET DATABASE TO orcl
执行成功后,会关闭测试数据库,还可以在机器2相应的目录下的数据文件。
机器2:
重新启动数据库,并以resetlog方式打开数据库。
至此,你会发现测试数据库创建成功。