|
-------------------------------------------- 实验环境:windows + oracle 10.1.0.2.0 原数据库:ning[归档模式] 复制数据库:test Author:NinGoo 2005-3-27 -------------------------------------------
在同一台server上使用rman的Duplicate Database创建复制数据库。
1. 创建新的instance
准备好相应的目录结构 E:\oracle\product\10.1.0\admin\test\bdump E:\oracle\product\10.1.0\admin\test\cdump E:\oracle\product\10.1.0\admin\test\create E:\oracle\product\10.1.0\admin\test\pfile E:\oracle\product\10.1.0\admin\test\scripts E:\oracle\product\10.1.0\admin\test\udmp
创建参数文件inittest.ini(可使用原库的pfile进行修改),主要参数如下: db_name=test background_dump_dest=E:\oracle\product\10.1.0\admin\test\bdump core_dump_dest=E:\oracle\product\10.1.0\admin\test\cdump user_dump_dest=E:\oracle\product\10.1.0\admin\test\udump control_files='E:\oracle\oradata\test\control01.ctl','E:\oracle\oradata\test \control02.ctl','E:\oracle\oradata\test \control03.ctl' DB_FILE_NAME_CONVERT=('E:\oracle\oradata\ning','E:\oracle\oradata\test') LOG_FILE_NAME_CONVERT=('E:\oracle\oradata\ning','E:\oracle\oradata\test') 置于E:\oracle\product\10.1.0\admin\test\pfile或者E:\oracle\product\10.1.0\db_1\database即可。
使用oradim创建新的instance c:\>oradim -new -sid test 例程已创建。
使用orapwd创建password文件 c:\>orapwd file=E:\oracle\product\10.1.0\db_1\database\PWDtest.ora password=test entries=10
配置好监听和tnsnames,然后使用sqlplus测试连接
c:\>sqlplus /nolog
SQL*Plus: Release 10.1.0.2.0 - Production on 星期日 3月 27 21:01:13 2005
Copyright (c) 1982, 2004, Oracle. All rights reserved.
SQL> conn sys@test as sysdba 请输入口令: 已连接到空闲例程。
2.使用rman备份原库
RMAN> connect target sys/ning@ning
连接到目标数据库: NING (DBID=1141544503) 正在使用目标数据库控制文件替代恢复目录
RMAN> backup full database tag 'fullbk' format 'e:\oracle\oraback\full%u_%s_%p';
启动 backup 于 27-3月 -05 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 启动全部数据文件备份集 通道 ORA_DISK_1: 正在指定备份集中的数据文件 输入数据文件 fno=00001 name=E:\ORACLE\ORADATA\NING\SYSTEM01.DBF 输入数据文件 fno=00002 name=E:\ORACLE\ORADATA\NING\UNDOTBS01.DBF 输入数据文件 fno=00004 name=E:\ORACLE\ORADATA\NING\USERS01.DBF 输入数据文件 fno=00003 name=E:\ORACLE\ORADATA\NING\SYSAUX01.DBF 输入数据文件 fno=00005 name=E:\ORACLE\ORADATA\NING\TEST01.DBF 通道 ORA_DISK_1: 正在启动段 1 于 27-3月 -05 通道 ORA_DISK_1: 已完成段 1 于 27-3月 -05 段 handle=E:\ORACLE\ORABACK\FULL03GGCQA4_3_1 comment=NONE 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:45 通道 ORA_DISK_1: 启动全部数据文件备份集 通道 ORA_DISK_1: 正在指定备份集中的数据文件 备份集中包括当前控制文件 在备份集中包含当前的 SPFILE 通道 ORA_DISK_1: 正在启动段 1 于 27-3月 -05 通道 ORA_DISK_1: 已完成段 1 于 27-3月 -05 段 handle=E:\ORACLE\ORABACK\FULL04GGCQBH_4_1 comment=NONE 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:09 完成 backup 于 27-3月 -05
3.使用rman复制数据库
c:\>rman target sys/ning@ning AUXILIARY sys/test@test
恢复管理器: 版本10.1.0.2.0 - Production
opyright (c) 1995, 2004, Oracle. All rights reserved.
连接到目标数据库: NING (DBID=1141544503) 已连接到备用数据库: test (未装载)
RMAN> DUPLICATE TARGET DATABASE TO 'test'; 启动 Duplicate Db 于 27-3月 -05 使用通道 ORA_AUX_DISK_1
内存脚本的内容: { set until scn 169960; set newname for datafile 1 to "E:\ORACLE\ORADATA\TEST\SYSTEM01.DBF"; set newname for datafile 2 to "E:\ORACLE\ORADATA\TEST\UNDOTBS01.DBF"; set newname for datafile 3 to "E:\ORACLE\ORADATA\TEST\SYSAUX01.DBF"; set newname for datafile 4 to "E:\ORACLE\ORADATA\TEST\USERS01.DBF"; set newname for datafile 5 to "E:\ORACLE\ORADATA\TEST\TEST01.DBF"; restore check readonly clone database ; } 正在执行内存脚本
正在执行命令: SET until clause
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 restore 于 27-3月 -05 使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件 正将数据文件00001恢复到E:\ORACLE\ORADATA\TEST\SYSTEM01.DBF 正将数据文件00002恢复到E:\ORACLE\ORADATA\TEST\UNDOTBS01.DBF 正将数据文件00003恢复到E:\ORACLE\ORADATA\TEST\SYSAUX01.DBF 正将数据文件00004恢复到E:\ORACLE\ORADATA\TEST\USERS01.DBF 正将数据文件00005恢复到E:\ORACLE\ORADATA\TEST\TEST01.DBF 通道 ORA_AUX_DISK_1: 已恢复备份段 1 段句柄 = E:\ORACLE\ORABACK\FULL03GGCQA4_3_1 标记 = FULLBK 通道 ORA_AUX_DISK_1: 恢复完成 完成 restore 于 27-3月 -05 sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "test" RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 454 LOGFILE GROUP 1 'E:\oracle\oradata\test\redo01.log' SIZE 10 M , GROUP 2 'E:\oracle\oradata\test\redo02.log' SIZE 10 M , GROUP 3 'E:\oracle\oradata\test\redo03.log' SIZE 10 M DATAFILE 'E:\ORACLE\ORADATA\TEST\SYSTEM01.DBF' CHARACTER SET ZHS16GBK
内存脚本的内容: { switch clone datafile all; } 正在执行内存脚本
数据文件 2 已转换成数据文件副本 输入数据文件副本 recid=1 stamp=554071105 文件名=E:\ORACLE\ORADATA\TEST\UNDOTBS01 .DBF 数据文件 3 已转换成数据文件副本 输入数据文件副本 recid=2 stamp=554071105 文件名=E:\ORACLE\ORADATA\TEST\SYSAUX01. DBF 数据文件 4 已转换成数据文件副本 输入数据文件副本 recid=3 stamp=554071105 文件名=E:\ORACLE\ORADATA\TEST\USERS01.D BF 数据文件 5 已转换成数据文件副本 输入数据文件副本 recid=4 stamp=554071105 文件名=E:\ORACLE\ORADATA\TEST\TEST01.DB F
内存脚本的内容: { set until scn 169960; recover clone database delete archivelog ; } 正在执行内存脚本
正在执行命令: SET until clause
启动 recover 于 27-3月 -05 使用通道 ORA_AUX_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 16 已作为文件 E:\ORACLE\ARCH\ARC00016_0553949015.001 存在于 磁盘上 存档日志文件名 =E:\ORACLE\ARCH\ARC00016_0553949015.001 线程 =1 序列 =16 完成介质的恢复 完成 recover 于 27-3月 -05
内存脚本的内容: { shutdown clone; startup clone nomount ; } 正在执行内存脚本
数据库已卸载 Oracle 例程已关闭
已连接到备用数据库 (未启动) Oracle 例程已启动
系统全局区域总计 142606336 字节
Fixed Size 787848 字节 Variable Size 116390520 字节 Database Buffers 25165824 字节 Redo Buffers 262144 字节 sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "test" RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 454 LOGFILE GROUP 1 'E:\oracle\oradata\test\redo01.log' SIZE 10 M , GROUP 2 'E:\oracle\oradata\test\redo02.log' SIZE 10 M , GROUP 3 'E:\oracle\oradata\test\redo03.log' SIZE 10 M DATAFILE 'E:\ORACLE\ORADATA\TEST\SYSTEM01.DBF' CHARACTER SET ZHS16GBK
内存脚本的内容: { catalog clone datafilecopy "E:\ORACLE\ORADATA\TEST\UNDOTBS01.DBF"; catalog clone datafilecopy "E:\ORACLE\ORADATA\TEST\SYSAUX01.DBF"; catalog clone datafilecopy "E:\ORACLE\ORADATA\TEST\USERS01.DBF"; catalog clone datafilecopy "E:\ORACLE\ORADATA\TEST\TEST01.DBF"; switch clone datafile all; } 正在执行内存脚本
已将数据文件副本列入目录 数据文件副本 filename=E:\ORACLE\ORADATA\TEST\UNDOTBS01.DBF recid=1 stamp=5540716 73
已将数据文件副本列入目录 数据文件副本 filename=E:\ORACLE\ORADATA\TEST\SYSAUX01.DBF recid=2 stamp=55407167 3
已将数据文件副本列入目录 数据文件副本 filename=E:\ORACLE\ORADATA\TEST\USERS01.DBF recid=3 stamp=554071673
已将数据文件副本列入目录 数据文件副本 filename=E:\ORACLE\ORADATA\TEST\TEST01.DBF recid=4 stamp=554071673
数据文件 2 已转换成数据文件副本 输入数据文件副本 recid=1 stamp=554071673 文件名=E:\ORACLE\ORADATA\TEST\UNDOTBS01 .DBF 数据文件 3 已转换成数据文件副本 输入数据文件副本 recid=2 stamp=554071673 文件名=E:\ORACLE\ORADATA\TEST\SYSAUX01. DBF 数据文件 4 已转换成数据文件副本 输入数据文件副本 recid=3 stamp=554071673 文件名=E:\ORACLE\ORADATA\TEST\USERS01.D BF 数据文件 5 已转换成数据文件副本 输入数据文件副本 recid=4 stamp=554071673 文件名=E:\ORACLE\ORADATA\TEST\TEST01.DB F
内存脚本的内容: { Alter clone database open resetlogs; } 正在执行内存脚本
数据库已打开 完成 Duplicate Db 于 27-3月 -05
4.检查复制库的状态
C:\>sqlplus /nolog
SQL*Plus: Release 10.1.0.2.0 - Production on 星期日 3月 27 21:05:52 2005
Copyright (c) 1982, 2004, Oracle. All rights reserved.
SQL> conn sys@test as sysdba 请输入口令: 已连接。
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS ---------------- ------------ test OPEN
然后去掉inittest.ora的DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT参数,再使用该文件生成spfile
SQL> create spfile from pfile='E:\oracle\product\10.1.0\db_1\database\inittest.ora';
文件已创建。
=============================================================== 参考文章: Oracle® Database Backup and Recovery Advanced User's Guide 10g Release 1 (10.1) Part Number B10734-01
|