可以使用很多种方法创建副本数据库,这些方法均直接或间接的使用RMAN。使用RMAN DUPLICATE命令可以在保留目标数据库的基础上依靠目标数据库的备份创建一个副本数据库。该副本即可与目标数据库完全相同,也可仅包含目标数据库表空间的一部子集。目标站点以及副本站点甚至可以在同一台机器上。以下列出创建副本数据库的具体步骤。
一、利用RMAN备份源数据库
对源数据库进行全备,并且将所有的数据库文件备份(包括增量备份和归档重做日志文件)保存在测试数据库可以访问的文件系统上,否则无法进行恢复。
二、为测试数据库创建口令文件和实例
1.创建口令文件:
C:\Documents and Settings\Administrator>
orapwd file=C:\oracle\product\10.2.0\db_1\database\pwddave.orapassword=dave entries=10
2.创建实例:
C:\Documents and Settings\Administrator>oradim -new -sid test
实例已创建。
三、建立测试库与源数据库的网络连接,
在测试库中配置连接描述符
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.248.11)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
四、创建pfile文件
拷贝源数据库的参数文件到测试库ORACLE_HOME/database目录下,更名为inittest.ora
修改的项目有:
a)因为实例名改变了
audit_file_dest, backgroud_dump_dest, core_dump_dest,user_dump_dest这四个目录要做相应的修改。
b)control_files的值要改,改到测试库对应的控制文件的路径,如:
'E:\oradata\test\control01.ctl',....
c)db_name改成测试库名test
d)重定义数据文件的位置,通过db_file_name_convert参数定义,如:*.db_file_name_convert=('C:\ORACLE_DATA\devdb', 'E:\oradata\test')--前一个是数据文件的源目录,后一个是目标目录。
e)重定义联机日志文件的位置,通过log_file_name_convert,如:
*.log_file_name_convert=('C:\ORACLE_DATA\devdb', 'E:\oradata\test')--前一个是日志文件的源目录,后一个是目标目录
五、以NOMOUNT模式启动测试数据库
SET ORACLE_SID=test
SQL> startup nomount
ORACLE例程已经启动。
Total System Global Area209715200 bytes
Fixed Size1248140 bytes
Variable Size79692916 bytes
Database Buffers125829120 bytes
Redo Buffers2945024 bytes
六、以MOUTN或OPEN模式启动源数据库
SetORACLE_SID=ORCL
SQL> startup
ORACLE例程已经启动。
Total System Global Area209715200 bytes
Fixed Size1248140 bytes
Variable Size79692916 bytes
Database Buffers125829120 bytes
Redo Buffers2945024 bytes
数据库装载完毕。
数据库已经打开。
七、执行恢复
C:\Documents and Settings\Administrator>set oracle_sid=test
C:\Documents and Settings\Administrator>rman targetsys/orcl@orcl auxiliary sys/test
恢复管理器: Release 10.2.0.1.0 - Production on星期三3月16 15:42:28 2011
Copyright (c) 1982, 2005, Oracle.All rights reserved.
连接到目标数据库: ORCL (DBID=1266395358)
已连接到辅助数据库: TEST (未装载)
RMAN> run{
2> allocate auxiliary channel aux0 device type disk;
3> allocate auxiliary channel aux1 device type disk;
4> duplicate target database to "test";}
分配的通道: aux0
通道aux0: sid=156 devtype=DISK
分配的通道: aux1
通道aux1: sid=155 devtype=DISK
启动Duplicate Db于17-3月-11
.
.
.
内存脚本的内容:
{
Alter clone database open resetlogs;
}
正在执行内存脚本
数据库已打开
完成Duplicate Db于17-3月-11