好久不做RMAN复制数据库了,都快忘了,做个测试,简单记录一下过程。
源数据库:pony
辅助数据库:dupdb
1. 首先做一次源数据库RMAN 备份,脚本以及备份过程如下:
RMAN> run{
2> allocate channel c1 device type disk;
3> backup database format='e:\rmanback\database_%T_%s.bak';
4> release channel c1;
5> sql 'alter system archive log current';
6> allocate channel c1 device type disk;
7> backup archivelog all format='e:\rmanback\arch_%T_%s.bak' delete input;
8> release channel c1;
9> allocate channel c1 device type disk;
10> backup current controlfile format='e:\rmanback\control_%T_%s.bak';
11> release channel c1;
12> }
释放的通道: ORA_DISK_1
分配的通道: c1
通道 c1: sid=138 devtype=DISK
启动 backup 于 10-3月 -11
通道 c1: 启动全部数据文件备份集
通道 c1: 正在指定备份集中的数据文件
输入数据文件 fno=00007 name=D:\ORADATA\RT1.DBF
输入数据文件 fno=00009 name=D:\ORADATA\RTIDX1.DBF
输入数据文件 fno=00001 name=C:\ORACLE\PRODUCT\10.2.0\PONY\SYSTEM01.DBF
输入数据文件 fno=00006 name=D:\ORADATA\BASE1.DBF
输入数据文件 fno=00008 name=D:\ORADATA\BSIDX1.DBF
输入数据文件 fno=00010 name=D:\ORADATA\UNDOTBS1.DBF
输入数据文件 fno=00003 name=C:\ORACLE\PRODUCT\10.2.0\PONY\SYSAUX01.DBF
输入数据文件 fno=00005 name=C:\ORACLE\PRODUCT\10.2.0\PONY\EXAMPLE01.DBF
输入数据文件 fno=00002 name=C:\ORACLE\PRODUCT\10.2.0\PONY\UNDOTBS01.DBF
输入数据文件 fno=00004 name=C:\ORACLE\PRODUCT\10.2.0\PONY\USERS01.DBF
通道 c1: 正在启动段 1 于 10-3月 -11
通道 c1: 已完成段 1 于 10-3月 -11
段句柄=E:\RMANBACK\DATABASE_20110310_31.BAK 标记=TAG20110310T170601 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:03:26
通道 c1: 启动全部数据文件备份集
通道 c1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 c1: 正在启动段 1 于 10-3月 -11
通道 c1: 已完成段 1 于 10-3月 -11
段句柄=E:\RMANBACK\DATABASE_20110310_32.BAK 标记=TAG20110310T170601 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 10-3月 -11
释放的通道: c1
sql 语句: alter system archive log current
分配的通道: c1
通道 c1: sid=138 devtype=DISK
启动 backup 于 10-3月 -11
当前日志已存档
通道 c1: 正在启动存档日志备份集
通道 c1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =28 记录 ID=12 时间戳=745434570
输入存档日志线程 =1 序列 =29 记录 ID=13 时间戳=745434571
通道 c1: 正在启动段 1 于 10-3月 -11
通道 c1: 已完成段 1 于 10-3月 -11
段句柄=E:\RMANBACK\ARCH_20110310_33.BAK 标记=TAG20110310T170931 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:02
通道 c1: 正在删除存档日志
存档日志文件名 =C:\ORACLE\PRODUCT\10.2.0\DB_1\RDBMS\ARC00028_0743446132.001 记录 ID=12 时间戳 =74543
4570
存档日志文件名 =C:\ORACLE\PRODUCT\10.2.0\DB_1\RDBMS\ARC00029_0743446132.001 记录 ID=13 时间戳 =74543
4571
完成 backup 于 10-3月 -11
释放的通道: c1
分配的通道: c1
通道 c1: sid=138 devtype=DISK
启动 backup 于 10-3月 -11
通道 c1: 启动全部数据文件备份集
通道 c1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
通道 c1: 正在启动段 1 于 10-3月 -11
通道 c1: 已完成段 1 于 10-3月 -11
段句柄=E:\RMANBACK\CONTROL_20110310_34.BAK 标记=TAG20110310T170934 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:02
完成 backup 于 10-3月 -11
释放的通道: c1
2. 建立相关跟踪文件的目录,在此就不列举了。
3. 建立新的oracle数据文件,日志文件以及归档的路径,用以存放复制数据库。
4. 从源数据库新建pfile然后修改其中内容,注意相关的路径.。如下
C:\Documents and Settings\GUXUELIANG>set oracle_sid=pony
C:\Documents and Settings\GUXUELIANG>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 3月 10 17:15:32 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> create pfile='E:\rmanback\initdupdb.ora' from spfile;
文件已创建。
修改其中内容(蓝色为特别注意或者添加内容)
dupdb.__db_cache_size=79691776
dupdb.__java_pool_size=4194304
dupdb.__large_pool_size=4194304
dupdb.__shared_pool_size=71303168
dupdb.__streams_pool_size=0
*.audit_file_dest='c:\oracle\product\10.2.0/admin/dupdb/adump'
*.background_dump_dest='c:\oracle\product\10.2.0/admin/dupdb/bdump'
*.compatible='10.2.0.1.0'
*.control_files='c:\oracle\product\10.2.0\dupdb\control01.ctl','c:\oracle\product\10.2.0\dupdb\control02.ctl','c:\oracle\product\10.2.0\dupdb\control03.ctl'
*.core_dump_dest='c:\oracle\product\10.2.0/admin/dupdb/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='dupdb'
*.instance_name='dupdb'
*.service_names='dupdb'
*.log_archive_dest_1='location=E:\oradata\archivelog'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ponyXDB)'
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=167772160
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='c:\oracle\product\10.2.0/admin/dupdb/udump'
*.db_file_name_convert=’c:\oracle\product\10.2.0\pony\’,’E:\oradata\dupdb\’,’D:\oradata’,’E:\oradata\dupdb\’
*.log_file_name_convert=’c:\oracle\product\10.2.0\pony\’,’E:\oradata\dupdb\’
5. 新建oracle实例 dupdb
C:\Documents and Settings\GUXUELIANG>oradim -new -sid dupdb -startmode auto -intpwd system
实例已创建。
6. 用上面的PFILE启动dupdb实例至nomount状态
C:\Documents and Settings\GUXUELIANG>set oracle_sid=dupdb
C:\Documents and Settings\GUXUELIANG>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 3月 10 17:28:42 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> shutdown immediate
ORA-01507: ??????
ORACLE 例程已经关闭。
SQL> startup nomount pfile=E:\rmanback\initdupdb.ora
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1247876 bytes
Variable Size 79693180 bytes
Database Buffers 79691776 bytes
Redo Buffers 7139328 bytes
7. 建立复制数据库,过程如下
C:\Documents and Settings\GUXUELIANG>set oracle_sid=dupdb
C:\Documents and Settings\GUXUELIANG>rman target sys/system@pony auxiliary sys/system
恢复管理器: Release 10.2.0.1.0 - Production on 星期四 3月 10 17:36:47 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: PONY (DBID=1414953261)
已连接到辅助数据库: DUPDB (未装载)
RMAN> duplicate target database to dupdb;
启动 Duplicate Db 于 10-3月 -11
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=157 devtype=DISK
内存脚本的内容:
{
set until scn 849578;
set newname for datafile 1 to
"E:\ORADATA\DUPDB\SYSTEM01.DBF";
set newname for datafile 2 to
"E:\ORADATA\DUPDB\UNDOTBS01.DBF";
set newname for datafile 3 to
"E:\ORADATA\DUPDB\SYSAUX01.DBF";
set newname for datafile 4 to
"E:\ORADATA\DUPDB\USERS01.DBF";
set newname for datafile 5 to
"E:\ORADATA\DUPDB\EXAMPLE01.DBF";
set newname for datafile 6 to
"E:\ORADATA\DUPDB\BASE1.DBF";
set newname for datafile 7 to
"E:\ORADATA\DUPDB\RT1.DBF";
set newname for datafile 8 to
"E:\ORADATA\DUPDB\BSIDX1.DBF";
set newname for datafile 9 to
"E:\ORADATA\DUPDB\RTIDX1.DBF";
set newname for datafile 10 to
"E:\ORADATA\DUPDB\UNDOTBS1.DBF";
restore
check readonly
clone database
;
}
正在执行内存脚本
正在执行命令: SET until clause
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 restore 于 10-3月 -11
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到E:\ORADATA\DUPDB\SYSTEM01.DBF
正将数据文件00002恢复到E:\ORADATA\DUPDB\UNDOTBS01.DBF
正将数据文件00003恢复到E:\ORADATA\DUPDB\SYSAUX01.DBF
正将数据文件00004恢复到E:\ORADATA\DUPDB\USERS01.DBF
正将数据文件00005恢复到E:\ORADATA\DUPDB\EXAMPLE01.DBF
正将数据文件00006恢复到E:\ORADATA\DUPDB\BASE1.DBF
正将数据文件00007恢复到E:\ORADATA\DUPDB\RT1.DBF
正将数据文件00008恢复到E:\ORADATA\DUPDB\BSIDX1.DBF
正将数据文件00009恢复到E:\ORADATA\DUPDB\RTIDX1.DBF
正将数据文件00010恢复到E:\ORADATA\DUPDB\UNDOTBS1.DBF
通道 ORA_AUX_DISK_1: 正在读取备份段 E:\RMANBACK\DATABASE_20110310_31.BAK
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段句柄 = E:\RMANBACK\DATABASE_20110310_31.BAK 标记 = TAG20110310T170601
通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:02:06
完成 restore 于 10-3月 -11
sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "DUPDB" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ( 'E:\ORADATA\DUPDB\REDO01.LOG' ) SIZE 50 M REUSE,
GROUP 2 ( 'E:\ORADATA\DUPDB\REDO02.LOG' ) SIZE 50 M REUSE,
GROUP 3 ( 'E:\ORADATA\DUPDB\REDO03.LOG' ) SIZE 50 M REUSE
DATAFILE
'E:\ORADATA\DUPDB\SYSTEM01.DBF'
CHARACTER SET ZHS16GBK
内存脚本的内容:
{
switch clone datafile all;
}
正在执行内存脚本
释放的通道: ORA_AUX_DISK_1
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=1 stamp=745436375 文件名=E:\ORADATA\DUPDB\UNDOTBS01.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=2 stamp=745436375 文件名=E:\ORADATA\DUPDB\SYSAUX01.DBF
数据文件 4 已转换成数据文件副本
输入数据文件副本 recid=3 stamp=745436375 文件名=E:\ORADATA\DUPDB\USERS01.DBF
数据文件 5 已转换成数据文件副本
输入数据文件副本 recid=4 stamp=745436375 文件名=E:\ORADATA\DUPDB\EXAMPLE01.DBF
数据文件 6 已转换成数据文件副本
输入数据文件副本 recid=5 stamp=745436375 文件名=E:\ORADATA\DUPDB\BASE1.DBF
数据文件 7 已转换成数据文件副本
输入数据文件副本 recid=6 stamp=745436376 文件名=E:\ORADATA\DUPDB\RT1.DBF
数据文件 8 已转换成数据文件副本
输入数据文件副本 recid=7 stamp=745436376 文件名=E:\ORADATA\DUPDB\BSIDX1.DBF
数据文件 9 已转换成数据文件副本
输入数据文件副本 recid=8 stamp=745436376 文件名=E:\ORADATA\DUPDB\RTIDX1.DBF
数据文件 10 已转换成数据文件副本
输入数据文件副本 recid=9 stamp=745436376 文件名=E:\ORADATA\DUPDB\UNDOTBS1.DBF
内存脚本的内容:
{
set until scn 849578;
recover
clone database
delete archivelog
;
}
正在执行内存脚本
正在执行命令: SET until clause
启动 recover 于 10-3月 -11
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=156 devtype=DISK
正在开始介质的恢复
通道 ORA_AUX_DISK_1: 正在启动到默认目标的存档日志恢复
通道 ORA_AUX_DISK_1: 正在恢复存档日志
存档日志线程 =1 序列=28
通道 ORA_AUX_DISK_1: 正在恢复存档日志
存档日志线程 =1 序列=29
通道 ORA_AUX_DISK_1: 正在读取备份段 E:\RMANBACK\ARCH_20110310_33.BAK
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段句柄 = E:\RMANBACK\ARCH_20110310_33.BAK 标记 = TAG20110310T170931
通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:02
存档日志文件名 =E:\ORADATA\ARCHIVELOG\ARC00028_0743446132.001 线程 =1 序列 =28
通道 clone_default: 正在删除存档日志
存档日志文件名 =E:\ORADATA\ARCHIVELOG\ARC00028_0743446132.001 记录 ID=1 时间戳 =745436383
存档日志文件名 =E:\ORADATA\ARCHIVELOG\ARC00029_0743446132.001 线程 =1 序列 =29
通道 clone_default: 正在删除存档日志
存档日志文件名 =E:\ORADATA\ARCHIVELOG\ARC00029_0743446132.001 记录 ID=2 时间戳 =745436383
介质恢复完成, 用时: 00:00:06
完成 recover 于 10-3月 -11
内存脚本的内容:
{
shutdown clone;
startup clone nomount ;
}
正在执行内存脚本
数据库已卸载
Oracle 实例已关闭
已连接到辅助数据库 (未启动)
Oracle 实例已启动
系统全局区域总计 167772160 字节
Fixed Size 1247876 字节
Variable Size 79693180 字节
Database Buffers 79691776 字节
Redo Buffers 7139328 字节
sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "DUPDB" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ( 'E:\ORADATA\DUPDB\REDO01.LOG' ) SIZE 50 M REUSE,
GROUP 2 ( 'E:\ORADATA\DUPDB\REDO02.LOG' ) SIZE 50 M REUSE,
GROUP 3 ( 'E:\ORADATA\DUPDB\REDO03.LOG' ) SIZE 50 M REUSE
DATAFILE
'E:\ORADATA\DUPDB\SYSTEM01.DBF'
CHARACTER SET ZHS16GBK
内存脚本的内容:
{
set newname for tempfile 1 to
"E:\ORADATA\DUPDB\TEMP01.DBF";
set newname for tempfile 2 to
"E:\ORADATA\DUPDB\TEMP1.DBF";
switch clone tempfile all;
catalog clone datafilecopy "E:\ORADATA\DUPDB\UNDOTBS01.DBF";
catalog clone datafilecopy "E:\ORADATA\DUPDB\SYSAUX01.DBF";
catalog clone datafilecopy "E:\ORADATA\DUPDB\USERS01.DBF";
catalog clone datafilecopy "E:\ORADATA\DUPDB\EXAMPLE01.DBF";
catalog clone datafilecopy "E:\ORADATA\DUPDB\BASE1.DBF";
catalog clone datafilecopy "E:\ORADATA\DUPDB\RT1.DBF";
catalog clone datafilecopy "E:\ORADATA\DUPDB\BSIDX1.DBF";
catalog clone datafilecopy "E:\ORADATA\DUPDB\RTIDX1.DBF";
catalog clone datafilecopy "E:\ORADATA\DUPDB\UNDOTBS1.DBF";
switch clone datafile all;
}
正在执行内存脚本
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
临时文件 1 在控制文件中已重命名为 E:\ORADATA\DUPDB\TEMP01.DBF
临时文件 2 在控制文件中已重命名为 E:\ORADATA\DUPDB\TEMP1.DBF
已将数据文件副本列入目录
数据文件副本 filename=E:\ORADATA\DUPDB\UNDOTBS01.DBF recid=1 stamp=745436407
已将数据文件副本列入目录
数据文件副本 filename=E:\ORADATA\DUPDB\SYSAUX01.DBF recid=2 stamp=745436409
已将数据文件副本列入目录
数据文件副本 filename=E:\ORADATA\DUPDB\USERS01.DBF recid=3 stamp=745436409
已将数据文件副本列入目录
数据文件副本 filename=E:\ORADATA\DUPDB\EXAMPLE01.DBF recid=4 stamp=745436410
已将数据文件副本列入目录
数据文件副本 filename=E:\ORADATA\DUPDB\BASE1.DBF recid=5 stamp=745436410
已将数据文件副本列入目录
数据文件副本 filename=E:\ORADATA\DUPDB\RT1.DBF recid=6 stamp=745436410
已将数据文件副本列入目录
数据文件副本 filename=E:\ORADATA\DUPDB\BSIDX1.DBF recid=7 stamp=745436410
已将数据文件副本列入目录
数据文件副本 filename=E:\ORADATA\DUPDB\RTIDX1.DBF recid=8 stamp=745436411
已将数据文件副本列入目录
数据文件副本 filename=E:\ORADATA\DUPDB\UNDOTBS1.DBF recid=9 stamp=745436411
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=1 stamp=745436407 文件名=E:\ORADATA\DUPDB\UNDOTBS01.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=2 stamp=745436409 文件名=E:\ORADATA\DUPDB\SYSAUX01.DBF
数据文件 4 已转换成数据文件副本
输入数据文件副本 recid=3 stamp=745436409 文件名=E:\ORADATA\DUPDB\USERS01.DBF
数据文件 5 已转换成数据文件副本
输入数据文件副本 recid=4 stamp=745436410 文件名=E:\ORADATA\DUPDB\EXAMPLE01.DBF
数据文件 6 已转换成数据文件副本
输入数据文件副本 recid=5 stamp=745436410 文件名=E:\ORADATA\DUPDB\BASE1.DBF
数据文件 7 已转换成数据文件副本
输入数据文件副本 recid=6 stamp=745436410 文件名=E:\ORADATA\DUPDB\RT1.DBF
数据文件 8 已转换成数据文件副本
输入数据文件副本 recid=7 stamp=745436410 文件名=E:\ORADATA\DUPDB\BSIDX1.DBF
数据文件 9 已转换成数据文件副本
输入数据文件副本 recid=8 stamp=745436411 文件名=E:\ORADATA\DUPDB\RTIDX1.DBF
数据文件 10 已转换成数据文件副本
输入数据文件副本 recid=9 stamp=745436411 文件名=E:\ORADATA\DUPDB\UNDOTBS1.DBF
内存脚本的内容:
{
Alter clone database open resetlogs;
}
正在执行内存脚本
数据库已打开
完成 Duplicate Db 于 10-3月 -11
RMAN>
大功告成!
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7958405/viewspace-689021/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7958405/viewspace-689021/