用RMAN备份建立新的数据库

时间:2021-03-25 05:00:12
各位大侠请指教,我用RMAN备份了数据库,我想在另外一台机器上建立一个完全一样的数据库,请问使用RMAN备份的那两个数据文件可不可以做到?如果能做到,应该怎么做?

如果做不到,有什么办法可以在另一台机器上建立一个完全一样的数据库?是否要用到其他方式的备份?

请各位大侠把操作的过程说的详细一些,我ORACLE是个二把刀,谢谢了

26 个解决方案

#1


不知道能不能做到,導出導入應該可以。我是三把刀。 ^_^

#2


exp/imp 更简单一些

#3


RMAN复制数据库虽然麻烦些,但是与EXP相比,不用在新库建相应的数据文件就能得到与原库一样物理结构的新库。
具体过程步骤还是比较多,不好写可以去网上搜搜一大堆。
帮你搜个:http://hi.baidu.com/dbaeyes/blog/item/78d08d1fc6e5600f304e15bf.html

#4


rman能不能恢复一个复制环境,主要看你rman备份是否完全并正确。
给你一个例子,讲的比较详细(zt):
注意:没有catalog也可以duplicate
要确保一个database full backup!
9i 下大致过程!
C:>rman catalog rman/rman@dmt target sys/system@lmt
恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: LMT (DBID=2004730922)
连接到恢复目录数据库
RMAN> run {
2> set newname for datafile 1 to 'c:oracleoradatadupsystem01.dbf';
3> set newname for datafile 2 to 'c:oracleoradatadupundotbs01.dbf';
4> duplicate target database to dup
5> pfile='c:oracleadminduppfileinit.ora'
6> logfile
7> 'c:oracleoradatadupredo01.log' size 1m,
8> 'c:oracleoradatadupredo02.log' size 1m,
9> 'c:oracleoradatadupredo03.log' size 1m;
10> }
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 Duplicate Db 于 03-6月 -06
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 06/03/2006 20:39:38
RMAN-06174: not connected to auxiliary database
RMAN> connect auxiliary sys/system@dup
已连接到备用数据库: DUP (未安装)
RMAN> run {
2> set newname for datafile 1 to 'c:oracleoradatadupsystem01.dbf';
3> set newname for datafile 2 to 'c:oracleoradatadupundotbs01.dbf';
4> duplicate target database to dup
5> pfile='c:oracleadminduppfileinit.ora'
6> logfile
7> 'c:oracleoradatadupredo01.log' size 1m,
8> 'c:oracleoradatadupredo02.log' size 1m,
9> 'c:oracleoradatadupredo03.log' size 1m;
10> }
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 Duplicate Db 于 03-6月 -06
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=10 devtype=DISK
正在打印存储的脚本: Memory Script
{
set until scn 51885;
set newname for datafile 1 to
"C:ORACLEORADATADUPSYSTEM01.DBF";
set newname for datafile 2 to
"C:ORACLEORADATADUPUNDOTBS01.DBF";
restore
check readonly
clone database
;
}
正在执行脚本: Memory Script
正在执行命令: SET until clause
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 restore 于 03-6月 -06
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到C:ORACLEORADATADUPSYSTEM01.DBF
正将数据文件00002恢复到C:ORACLEORADATADUPUNDOTBS01.DBF
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段 handle=C:ORACLEORA92DATABASE8HKNE2A_1_1 tag=TAG20060603T181538 params=NU
LL
通道 ORA_AUX_DISK_1: 恢复完成
完成 restore 于 03-6月 -06
sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "dup" RESETLOGS ARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 453
LOGFILE
GROUP 1 'c:oracleoradatadupredo01.log' SIZE 1048576 ,
GROUP 2 'c:oracleoradatadupredo02.log' SIZE 1048576 ,
GROUP 3 'c:oracleoradatadupredo03.log' SIZE 1048576
DATAFILE
'C:ORACLEORADATADUPSYSTEM01.DBF'
CHARACTER SET ZHS16GBK

正在打印存储的脚本: Memory Script
{
switch clone datafile all;
}
正在执行脚本: Memory Script
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=1 stamp=592173637 文件名=C:ORACLEORADATADUPUNDOTBS01.
DBF
正在打印存储的脚本: Memory Script
{
set until scn 51885;
recover
clone database
delete archivelog
;
}
正在执行脚本: Memory Script
正在执行命令: SET until clause
启动 recover 于 03-6月 -06
使用通道 ORA_AUX_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 2 已作为文件 C:ORACLEORA92RDBMSARC00002.001 存在于磁盘上
存档日志文件名 =C:ORACLEORA92RDBMSARC00002.001 线程 =1 序列 =2
完成介质的恢复
完成 recover 于 03-6月 -06
正在打印存储的脚本: Memory Script
{
shutdown clone;
startup clone nomount pfile= 'c:oracleadminduppfileinit.ora';
}
正在执行脚本: Memory Script
数据库已卸载
Oracle 例程已关闭
已连接到备用数据库 (未启动)
Oracle 例程已启动
系统全局区域总计 101784276 字节
Fixed Size 453332 字节
Variable Size 75497472 字节
Database Buffers 25165824 字节
Redo Buffers 667648 字节
sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "dup" RESETLOGS ARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 453
LOGFILE
GROUP 1 'c:oracleoradatadupredo01.log' SIZE 1048576 ,
GROUP 2 'c:oracleoradatadupredo02.log' SIZE 1048576 ,
GROUP 3 'c:oracleoradatadupredo03.log' SIZE 1048576
DATAFILE
'C:ORACLEORADATADUPSYSTEM01.DBF'
CHARACTER SET ZHS16GBK

正在打印存储的脚本: Memory Script
{
catalog clone datafilecopy "C:ORACLEORADATADUPUNDOTBS01.DBF";
switch clone datafile all;
}
正在执行脚本: Memory Script
已将数据文件副本列入目录
数据文件副本 filename=C:ORACLEORADATADUPUNDOTBS01.DBF recid=1 stamp=59217380
1
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=1 stamp=592173801 文件名=C:ORACLEORADATADUPUNDOTBS01.
DBF
正在打印存储的脚本: Memory Script
{
Alter clone database open resetlogs;
}
正在执行脚本: Memory Script
数据库已打开
完成 Duplicate Db 于 03-6月 -06
RMAN>

#5


--==============================================
10g下大致过程:
duplicate database时没有catalog也行!
C:>rman target sys/system@orcl catalog rman/rman@test auxiliary sys/system@dup
恢复管理器: Release 10.2.0.1.0 - Production on 星期一 12月 25 14:09:14 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: ORCL (DBID=1136768294)
连接到恢复目录数据库
已连接到辅助数据库: DUP (未装载)
RMAN> run{
2> set newname for datafile 1 to 'E:ORACLEPRODUCT10.2.0ORADATAdupSYSTEM01.
DBF';
3> set newname for datafile 2 to 'E:ORACLEPRODUCT10.2.0ORADATAdupUNDOTBS01
.DBF';
4> set newname for datafile 3 to 'E:ORACLEPRODUCT10.2.0ORADATAdupSYSAUX01.
DBF';
5> set newname for datafile 4 to 'E:ORACLEPRODUCT10.2.0ORADATAdupUSERS01.D
BF';
6> set newname for datafile 5 to 'E:ORACLEPRODUCT10.2.0ORADATAdupTEST.DBF'
;
7> set newname for datafile 8 to 'E:ORACLEPRODUCT10.2.0ORADATAdupTEST3.DBF
';
8> duplicate target database to dup skip tablespace test1
9> logfile
10> 'E:ORACLEPRODUCT10.2.0ORADATAdupredo01.log' size 10m,
11> 'E:ORACLEPRODUCT10.2.0ORADATAdupredo02.log' size 10m,
12> 'E:ORACLEPRODUCT10.2.0ORADATAdupredo03.log' size 10m;
13> }
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 Duplicate Db 于 25-12月-06
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=24 devtype=DISK
根据请求跳过数据文件 6
根据请求跳过数据文件 7
内存脚本的内容:
{
set until scn 742507;
set newname for datafile 1 to
"E:ORACLEPRODUCT10.2.0ORADATADUPSYSTEM01.DBF";
set newname for datafile 2 to
"E:ORACLEPRODUCT10.2.0ORADATADUPUNDOTBS01.DBF";
set newname for datafile 3 to
"E:ORACLEPRODUCT10.2.0ORADATADUPSYSAUX01.DBF";
set newname for datafile 4 to
"E:ORACLEPRODUCT10.2.0ORADATADUPUSERS01.DBF";
set newname for datafile 5 to
"E:ORACLEPRODUCT10.2.0ORADATADUPTEST.DBF";
set newname for datafile 8 to
"E:ORACLEPRODUCT10.2.0ORADATADUPTEST3.DBF";
restore
check readonly
clone database
skip tablespace TEST1 ;
}
正在执行内存脚本
正在执行命令: SET until clause
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 restore 于 25-12月-06
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到E:ORACLEPRODUCT10.2.0ORADATADUPSYSTEM01.DBF
正将数据文件00002恢复到E:ORACLEPRODUCT10.2.0ORADATADUPUNDOTBS01.DBF
正将数据文件00003恢复到E:ORACLEPRODUCT10.2.0ORADATADUPSYSAUX01.DBF
正将数据文件00004恢复到E:ORACLEPRODUCT10.2.0ORADATADUPUSERS01.DBF
正将数据文件00005恢复到E:ORACLEPRODUCT10.2.0ORADATADUPTEST.DBF
正将数据文件00008恢复到E:ORACLEPRODUCT10.2.0ORADATADUPTEST3.DBF
通道 ORA_AUX_DISK_1: 正在读取备份段 E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREA
ORCLBACKUPSET2006_12_23O1_MF_NNNDF_TAG20061223T164719_2RSV8VM1_.BKP
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段句柄 = E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLBACKUPSET2006_12_23
O1_MF_NNNDF_TAG20061223T164719_2RSV8VM1_.BKP 标记 = TAG20061223T164719
通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:55
完成 restore 于 25-12月-06
sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "DUP" RESETLOGS ARCHIVELOG
MAXLOGFILES 4220
MAXLOGMEMBERS 5
MAXDATAFILES 65534
MAXINSTANCES 1055
MAXLOGHISTORY 10225
LOGFILE
GROUP 1 'E:ORACLEPRODUCT10.2.0ORADATAdupredo01.log' SIZE 10 M ,
GROUP 2 'E:ORACLEPRODUCT10.2.0ORADATAdupredo02.log' SIZE 10 M ,
GROUP 3 'E:ORACLEPRODUCT10.2.0ORADATAdupredo03.log' SIZE 10 M
DATAFILE
'E:ORACLEPRODUCT10.2.0ORADATADUPSYSTEM01.DBF'
CHARACTER SET ZHS16GBK

内存脚本的内容:
{
switch clone datafile all;
}
正在执行内存脚本
释放的通道: ORA_AUX_DISK_1
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=1 stamp=610121450 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPUNDOTBS01.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=2 stamp=610121450 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPSYSAUX01.DBF
数据文件 4 已转换成数据文件副本
输入数据文件副本 recid=3 stamp=610121450 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPUSERS01.DBF
数据文件 5 已转换成数据文件副本
输入数据文件副本 recid=4 stamp=610121450 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPTEST.DBF
数据文件 8 已转换成数据文件副本
输入数据文件副本 recid=5 stamp=610121450 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPTEST3.DBF
内存脚本的内容:
{
set until scn 742507;
recover
clone database
delete archivelog
;
}
正在执行内存脚本
正在执行命令: SET until clause
启动 recover 于 25-12月-06
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=23 devtype=DISK
数据文件6未被处理, 因为文件已脱机
数据文件7未被处理, 因为文件已脱机
正在开始介质的恢复
存档日志线程 1 序列 5 已作为文件 E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAOR
CLARCHIVELOG2006_12_24O1_MF_1_5_2RVZ8K8S_.ARC 存在于磁盘上
存档日志线程 1 序列 6 已作为文件 E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAOR
CLARCHIVELOG2006_12_25O1_MF_1_6_2RYQRF0Z_.ARC 存在于磁盘上
存档日志文件名 =E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG200
6_12_24O1_MF_1_5_2RVZ8K8S_.ARC 线程 =1 序列 =5
存档日志文件名 =E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG200
6_12_25O1_MF_1_6_2RYQRF0Z_.ARC 线程 =1 序列 =6
介质恢复完成, 用时: 00:00:10
完成 recover 于 25-12月-06
内存脚本的内容:
{
shutdown clone;
startup clone nomount ;
}
正在执行内存脚本
数据库已卸载
Oracle 实例已关闭
已连接到辅助数据库 (未启动)
Oracle 实例已启动
系统全局区域总计 167772160 字节
Fixed Size 1247900 字节
Variable Size 58721636 字节
Database Buffers 104857600 字节
Redo Buffers 2945024 字节
sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "DUP" RESETLOGS ARCHIVELOG
MAXLOGFILES 4220
MAXLOGMEMBERS 5
MAXDATAFILES 65534
MAXINSTANCES 1055
MAXLOGHISTORY 10225
LOGFILE
GROUP 1 'E:ORACLEPRODUCT10.2.0ORADATAdupredo01.log' SIZE 10 M ,
GROUP 2 'E:ORACLEPRODUCT10.2.0ORADATAdupredo02.log' SIZE 10 M ,
GROUP 3 'E:ORACLEPRODUCT10.2.0ORADATAdupredo03.log' SIZE 10 M
DATAFILE
'E:ORACLEPRODUCT10.2.0ORADATADUPSYSTEM01.DBF'
CHARACTER SET ZHS16GBK

内存脚本的内容:
{
catalog clone datafilecopy "E:ORACLEPRODUCT10.2.0ORADATADUPUNDOTBS01.D
BF";
catalog clone datafilecopy "E:ORACLEPRODUCT10.2.0ORADATADUPSYSAUX01.DB
F";
catalog clone datafilecopy "E:ORACLEPRODUCT10.2.0ORADATADUPUSERS01.DBF
";
catalog clone datafilecopy "E:ORACLEPRODUCT10.2.0ORADATADUPTEST.DBF";
catalog clone datafilecopy "E:ORACLEPRODUCT10.2.0ORADATADUPTEST3.DBF";
switch clone datafile all;
}
正在执行内存脚本
已将数据文件副本列入目录
数据文件副本 filename=E:ORACLEPRODUCT10.2.0ORADATADUPUNDOTBS01.DBF recid=1
stamp=610122070
已将数据文件副本列入目录
数据文件副本 filename=E:ORACLEPRODUCT10.2.0ORADATADUPSYSAUX01.DBF recid=2
stamp=610122072
已将数据文件副本列入目录
数据文件副本 filename=E:ORACLEPRODUCT10.2.0ORADATADUPUSERS01.DBF recid=3 s
tamp=610122073
已将数据文件副本列入目录
数据文件副本 filename=E:ORACLEPRODUCT10.2.0ORADATADUPTEST.DBF recid=4 stam
p=610122074
已将数据文件副本列入目录
数据文件副本 filename=E:ORACLEPRODUCT10.2.0ORADATADUPTEST3.DBF recid=5 sta
mp=610122076
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=1 stamp=610122070 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPUNDOTBS01.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=2 stamp=610122072 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPSYSAUX01.DBF
数据文件 4 已转换成数据文件副本
输入数据文件副本 recid=3 stamp=610122073 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPUSERS01.DBF
数据文件 5 已转换成数据文件副本
输入数据文件副本 recid=4 stamp=610122074 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPTEST.DBF
数据文件 8 已转换成数据文件副本
输入数据文件副本 recid=5 stamp=610122076 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPTEST3.DBF
内存脚本的内容:
{
Alter clone database open resetlogs;
}
正在执行内存脚本
数据库已打开
内存脚本的内容:
{
# drop offline and skipped tablespaces
sql clone "drop tablespace TEST1 including contents cascade constraints";
}
正在执行内存脚本
sql 语句: drop tablespace TEST1 including contents cascade constraints
完成 Duplicate Db 于 25-12月-06
RMAN>

#6


当然你也可以使用dg方式直接生成一个数据库,

然后使用failover方式切换成primary database.

#7


感谢各位回复,还有没哪位大侠指教啊,希望能简洁易懂,我是初学者中的初学者,辛苦各位大侠了,谢谢

#8


不太会用RMAN,不熟悉这个的情况

我一般用 exp/imp 来实现从一台机器到另一台机器的数据库移动。

#9


完全可以。不过想简单点的话,oracle安装路径,参数设置需要和原来的一模一样

#10


感谢回复,那请问应该怎么办呢?请大侠讲的详细一些,谢谢了

#11


关注,收藏

#12


如果急的话,可以用imp/exp来做,简单一些

#13


我现在就有用RMAN备份的两个文件,和一台新的机器啊,请问如何恢复,谢谢了

#14


请各位大侠指教啊

#15


建议用EXP/IMP!

#16


学习下
只会exp/imp 

#17


http://ningoo.itpub.net/post/2149/190772

#18


实际上也不一定需要clone。直接restore也是可以的,从原库将控制文件备份一个复制过去,然后就和原库损坏要做恢复一样的操作。看看rman的手册吧,会备份,还要会恢复才行,不要要备份做什么用

#19


引用 8 楼 JDK_SHEN6 的回复:
不太会用RMAN,不熟悉这个的情况 

我一般用 exp/imp 来实现从一台机器到另一台机器的数据库移动。 

#20


9楼的大侠,我弄的一致了,该怎么操作啊,您怎么说了句话后就没信了呢?

#21


帮顶,学习

#22


我做了次实验,按以下步骤成功了:

1. 首先我们需要创建新的instance 请准备好相应的目录结构。

2.然后需要创建参数文件pfile(你可以使用原库的pfile进行修改)
新增(后为备库):
DB_FILE_NAME_CONVERT=('E:\oracle\oradata\ning\','E:\oracle\oradata\test\') 
LOG_FILE_NAME_CONVERT=('E:\oracle\oradata\ning\','E:\oracle\oradata\test\')

3.使用oradim创建新的instance 

4.使用orapwd创建password文件 

5.配置好监听和tnsnames

6.使用rman备份原库:backup full database;

7.备库nomount

8.使用rman复制数据库:
rman target sys/ning@ning AUXILIARY sys/test@test 
DUPLICATE TARGET DATABASE TO '备库sid';

9.然后去掉inittest.ora的DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT参数,再使用该文件生成spfile 

#23


就是17楼的方法。

#24


8.使用rman复制数据库:
rman target sys/ning@ning AUXILIARY sys/test@test
DUPLICATE TARGET DATABASE TO '备库sid'; 

这是22楼朋友回复里的一条,看这个样子,还需要用到原库啊?我前面说了,只有RMAN备份的文件和一台新服务器啊

#25


那有原库的控制文件吗?如果有,拷过去作基于控制文件的恢复看看。

#26


谢谢,已经成功了

是综合 vc555大侠 前面帮我搜的那个地址,以及在那里面找到的相关的链接,然后又根据过程中出现的问题查找相关资料来完成的。

再次感谢了,结贴。

#1


不知道能不能做到,導出導入應該可以。我是三把刀。 ^_^

#2


exp/imp 更简单一些

#3


RMAN复制数据库虽然麻烦些,但是与EXP相比,不用在新库建相应的数据文件就能得到与原库一样物理结构的新库。
具体过程步骤还是比较多,不好写可以去网上搜搜一大堆。
帮你搜个:http://hi.baidu.com/dbaeyes/blog/item/78d08d1fc6e5600f304e15bf.html

#4


rman能不能恢复一个复制环境,主要看你rman备份是否完全并正确。
给你一个例子,讲的比较详细(zt):
注意:没有catalog也可以duplicate
要确保一个database full backup!
9i 下大致过程!
C:>rman catalog rman/rman@dmt target sys/system@lmt
恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: LMT (DBID=2004730922)
连接到恢复目录数据库
RMAN> run {
2> set newname for datafile 1 to 'c:oracleoradatadupsystem01.dbf';
3> set newname for datafile 2 to 'c:oracleoradatadupundotbs01.dbf';
4> duplicate target database to dup
5> pfile='c:oracleadminduppfileinit.ora'
6> logfile
7> 'c:oracleoradatadupredo01.log' size 1m,
8> 'c:oracleoradatadupredo02.log' size 1m,
9> 'c:oracleoradatadupredo03.log' size 1m;
10> }
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 Duplicate Db 于 03-6月 -06
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 06/03/2006 20:39:38
RMAN-06174: not connected to auxiliary database
RMAN> connect auxiliary sys/system@dup
已连接到备用数据库: DUP (未安装)
RMAN> run {
2> set newname for datafile 1 to 'c:oracleoradatadupsystem01.dbf';
3> set newname for datafile 2 to 'c:oracleoradatadupundotbs01.dbf';
4> duplicate target database to dup
5> pfile='c:oracleadminduppfileinit.ora'
6> logfile
7> 'c:oracleoradatadupredo01.log' size 1m,
8> 'c:oracleoradatadupredo02.log' size 1m,
9> 'c:oracleoradatadupredo03.log' size 1m;
10> }
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 Duplicate Db 于 03-6月 -06
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=10 devtype=DISK
正在打印存储的脚本: Memory Script
{
set until scn 51885;
set newname for datafile 1 to
"C:ORACLEORADATADUPSYSTEM01.DBF";
set newname for datafile 2 to
"C:ORACLEORADATADUPUNDOTBS01.DBF";
restore
check readonly
clone database
;
}
正在执行脚本: Memory Script
正在执行命令: SET until clause
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 restore 于 03-6月 -06
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到C:ORACLEORADATADUPSYSTEM01.DBF
正将数据文件00002恢复到C:ORACLEORADATADUPUNDOTBS01.DBF
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段 handle=C:ORACLEORA92DATABASE8HKNE2A_1_1 tag=TAG20060603T181538 params=NU
LL
通道 ORA_AUX_DISK_1: 恢复完成
完成 restore 于 03-6月 -06
sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "dup" RESETLOGS ARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 453
LOGFILE
GROUP 1 'c:oracleoradatadupredo01.log' SIZE 1048576 ,
GROUP 2 'c:oracleoradatadupredo02.log' SIZE 1048576 ,
GROUP 3 'c:oracleoradatadupredo03.log' SIZE 1048576
DATAFILE
'C:ORACLEORADATADUPSYSTEM01.DBF'
CHARACTER SET ZHS16GBK

正在打印存储的脚本: Memory Script
{
switch clone datafile all;
}
正在执行脚本: Memory Script
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=1 stamp=592173637 文件名=C:ORACLEORADATADUPUNDOTBS01.
DBF
正在打印存储的脚本: Memory Script
{
set until scn 51885;
recover
clone database
delete archivelog
;
}
正在执行脚本: Memory Script
正在执行命令: SET until clause
启动 recover 于 03-6月 -06
使用通道 ORA_AUX_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 2 已作为文件 C:ORACLEORA92RDBMSARC00002.001 存在于磁盘上
存档日志文件名 =C:ORACLEORA92RDBMSARC00002.001 线程 =1 序列 =2
完成介质的恢复
完成 recover 于 03-6月 -06
正在打印存储的脚本: Memory Script
{
shutdown clone;
startup clone nomount pfile= 'c:oracleadminduppfileinit.ora';
}
正在执行脚本: Memory Script
数据库已卸载
Oracle 例程已关闭
已连接到备用数据库 (未启动)
Oracle 例程已启动
系统全局区域总计 101784276 字节
Fixed Size 453332 字节
Variable Size 75497472 字节
Database Buffers 25165824 字节
Redo Buffers 667648 字节
sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "dup" RESETLOGS ARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 453
LOGFILE
GROUP 1 'c:oracleoradatadupredo01.log' SIZE 1048576 ,
GROUP 2 'c:oracleoradatadupredo02.log' SIZE 1048576 ,
GROUP 3 'c:oracleoradatadupredo03.log' SIZE 1048576
DATAFILE
'C:ORACLEORADATADUPSYSTEM01.DBF'
CHARACTER SET ZHS16GBK

正在打印存储的脚本: Memory Script
{
catalog clone datafilecopy "C:ORACLEORADATADUPUNDOTBS01.DBF";
switch clone datafile all;
}
正在执行脚本: Memory Script
已将数据文件副本列入目录
数据文件副本 filename=C:ORACLEORADATADUPUNDOTBS01.DBF recid=1 stamp=59217380
1
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=1 stamp=592173801 文件名=C:ORACLEORADATADUPUNDOTBS01.
DBF
正在打印存储的脚本: Memory Script
{
Alter clone database open resetlogs;
}
正在执行脚本: Memory Script
数据库已打开
完成 Duplicate Db 于 03-6月 -06
RMAN>

#5


--==============================================
10g下大致过程:
duplicate database时没有catalog也行!
C:>rman target sys/system@orcl catalog rman/rman@test auxiliary sys/system@dup
恢复管理器: Release 10.2.0.1.0 - Production on 星期一 12月 25 14:09:14 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: ORCL (DBID=1136768294)
连接到恢复目录数据库
已连接到辅助数据库: DUP (未装载)
RMAN> run{
2> set newname for datafile 1 to 'E:ORACLEPRODUCT10.2.0ORADATAdupSYSTEM01.
DBF';
3> set newname for datafile 2 to 'E:ORACLEPRODUCT10.2.0ORADATAdupUNDOTBS01
.DBF';
4> set newname for datafile 3 to 'E:ORACLEPRODUCT10.2.0ORADATAdupSYSAUX01.
DBF';
5> set newname for datafile 4 to 'E:ORACLEPRODUCT10.2.0ORADATAdupUSERS01.D
BF';
6> set newname for datafile 5 to 'E:ORACLEPRODUCT10.2.0ORADATAdupTEST.DBF'
;
7> set newname for datafile 8 to 'E:ORACLEPRODUCT10.2.0ORADATAdupTEST3.DBF
';
8> duplicate target database to dup skip tablespace test1
9> logfile
10> 'E:ORACLEPRODUCT10.2.0ORADATAdupredo01.log' size 10m,
11> 'E:ORACLEPRODUCT10.2.0ORADATAdupredo02.log' size 10m,
12> 'E:ORACLEPRODUCT10.2.0ORADATAdupredo03.log' size 10m;
13> }
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 Duplicate Db 于 25-12月-06
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=24 devtype=DISK
根据请求跳过数据文件 6
根据请求跳过数据文件 7
内存脚本的内容:
{
set until scn 742507;
set newname for datafile 1 to
"E:ORACLEPRODUCT10.2.0ORADATADUPSYSTEM01.DBF";
set newname for datafile 2 to
"E:ORACLEPRODUCT10.2.0ORADATADUPUNDOTBS01.DBF";
set newname for datafile 3 to
"E:ORACLEPRODUCT10.2.0ORADATADUPSYSAUX01.DBF";
set newname for datafile 4 to
"E:ORACLEPRODUCT10.2.0ORADATADUPUSERS01.DBF";
set newname for datafile 5 to
"E:ORACLEPRODUCT10.2.0ORADATADUPTEST.DBF";
set newname for datafile 8 to
"E:ORACLEPRODUCT10.2.0ORADATADUPTEST3.DBF";
restore
check readonly
clone database
skip tablespace TEST1 ;
}
正在执行内存脚本
正在执行命令: SET until clause
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 restore 于 25-12月-06
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到E:ORACLEPRODUCT10.2.0ORADATADUPSYSTEM01.DBF
正将数据文件00002恢复到E:ORACLEPRODUCT10.2.0ORADATADUPUNDOTBS01.DBF
正将数据文件00003恢复到E:ORACLEPRODUCT10.2.0ORADATADUPSYSAUX01.DBF
正将数据文件00004恢复到E:ORACLEPRODUCT10.2.0ORADATADUPUSERS01.DBF
正将数据文件00005恢复到E:ORACLEPRODUCT10.2.0ORADATADUPTEST.DBF
正将数据文件00008恢复到E:ORACLEPRODUCT10.2.0ORADATADUPTEST3.DBF
通道 ORA_AUX_DISK_1: 正在读取备份段 E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREA
ORCLBACKUPSET2006_12_23O1_MF_NNNDF_TAG20061223T164719_2RSV8VM1_.BKP
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段句柄 = E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLBACKUPSET2006_12_23
O1_MF_NNNDF_TAG20061223T164719_2RSV8VM1_.BKP 标记 = TAG20061223T164719
通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:55
完成 restore 于 25-12月-06
sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "DUP" RESETLOGS ARCHIVELOG
MAXLOGFILES 4220
MAXLOGMEMBERS 5
MAXDATAFILES 65534
MAXINSTANCES 1055
MAXLOGHISTORY 10225
LOGFILE
GROUP 1 'E:ORACLEPRODUCT10.2.0ORADATAdupredo01.log' SIZE 10 M ,
GROUP 2 'E:ORACLEPRODUCT10.2.0ORADATAdupredo02.log' SIZE 10 M ,
GROUP 3 'E:ORACLEPRODUCT10.2.0ORADATAdupredo03.log' SIZE 10 M
DATAFILE
'E:ORACLEPRODUCT10.2.0ORADATADUPSYSTEM01.DBF'
CHARACTER SET ZHS16GBK

内存脚本的内容:
{
switch clone datafile all;
}
正在执行内存脚本
释放的通道: ORA_AUX_DISK_1
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=1 stamp=610121450 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPUNDOTBS01.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=2 stamp=610121450 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPSYSAUX01.DBF
数据文件 4 已转换成数据文件副本
输入数据文件副本 recid=3 stamp=610121450 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPUSERS01.DBF
数据文件 5 已转换成数据文件副本
输入数据文件副本 recid=4 stamp=610121450 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPTEST.DBF
数据文件 8 已转换成数据文件副本
输入数据文件副本 recid=5 stamp=610121450 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPTEST3.DBF
内存脚本的内容:
{
set until scn 742507;
recover
clone database
delete archivelog
;
}
正在执行内存脚本
正在执行命令: SET until clause
启动 recover 于 25-12月-06
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=23 devtype=DISK
数据文件6未被处理, 因为文件已脱机
数据文件7未被处理, 因为文件已脱机
正在开始介质的恢复
存档日志线程 1 序列 5 已作为文件 E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAOR
CLARCHIVELOG2006_12_24O1_MF_1_5_2RVZ8K8S_.ARC 存在于磁盘上
存档日志线程 1 序列 6 已作为文件 E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAOR
CLARCHIVELOG2006_12_25O1_MF_1_6_2RYQRF0Z_.ARC 存在于磁盘上
存档日志文件名 =E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG200
6_12_24O1_MF_1_5_2RVZ8K8S_.ARC 线程 =1 序列 =5
存档日志文件名 =E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG200
6_12_25O1_MF_1_6_2RYQRF0Z_.ARC 线程 =1 序列 =6
介质恢复完成, 用时: 00:00:10
完成 recover 于 25-12月-06
内存脚本的内容:
{
shutdown clone;
startup clone nomount ;
}
正在执行内存脚本
数据库已卸载
Oracle 实例已关闭
已连接到辅助数据库 (未启动)
Oracle 实例已启动
系统全局区域总计 167772160 字节
Fixed Size 1247900 字节
Variable Size 58721636 字节
Database Buffers 104857600 字节
Redo Buffers 2945024 字节
sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "DUP" RESETLOGS ARCHIVELOG
MAXLOGFILES 4220
MAXLOGMEMBERS 5
MAXDATAFILES 65534
MAXINSTANCES 1055
MAXLOGHISTORY 10225
LOGFILE
GROUP 1 'E:ORACLEPRODUCT10.2.0ORADATAdupredo01.log' SIZE 10 M ,
GROUP 2 'E:ORACLEPRODUCT10.2.0ORADATAdupredo02.log' SIZE 10 M ,
GROUP 3 'E:ORACLEPRODUCT10.2.0ORADATAdupredo03.log' SIZE 10 M
DATAFILE
'E:ORACLEPRODUCT10.2.0ORADATADUPSYSTEM01.DBF'
CHARACTER SET ZHS16GBK

内存脚本的内容:
{
catalog clone datafilecopy "E:ORACLEPRODUCT10.2.0ORADATADUPUNDOTBS01.D
BF";
catalog clone datafilecopy "E:ORACLEPRODUCT10.2.0ORADATADUPSYSAUX01.DB
F";
catalog clone datafilecopy "E:ORACLEPRODUCT10.2.0ORADATADUPUSERS01.DBF
";
catalog clone datafilecopy "E:ORACLEPRODUCT10.2.0ORADATADUPTEST.DBF";
catalog clone datafilecopy "E:ORACLEPRODUCT10.2.0ORADATADUPTEST3.DBF";
switch clone datafile all;
}
正在执行内存脚本
已将数据文件副本列入目录
数据文件副本 filename=E:ORACLEPRODUCT10.2.0ORADATADUPUNDOTBS01.DBF recid=1
stamp=610122070
已将数据文件副本列入目录
数据文件副本 filename=E:ORACLEPRODUCT10.2.0ORADATADUPSYSAUX01.DBF recid=2
stamp=610122072
已将数据文件副本列入目录
数据文件副本 filename=E:ORACLEPRODUCT10.2.0ORADATADUPUSERS01.DBF recid=3 s
tamp=610122073
已将数据文件副本列入目录
数据文件副本 filename=E:ORACLEPRODUCT10.2.0ORADATADUPTEST.DBF recid=4 stam
p=610122074
已将数据文件副本列入目录
数据文件副本 filename=E:ORACLEPRODUCT10.2.0ORADATADUPTEST3.DBF recid=5 sta
mp=610122076
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=1 stamp=610122070 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPUNDOTBS01.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=2 stamp=610122072 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPSYSAUX01.DBF
数据文件 4 已转换成数据文件副本
输入数据文件副本 recid=3 stamp=610122073 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPUSERS01.DBF
数据文件 5 已转换成数据文件副本
输入数据文件副本 recid=4 stamp=610122074 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPTEST.DBF
数据文件 8 已转换成数据文件副本
输入数据文件副本 recid=5 stamp=610122076 文件名=E:ORACLEPRODUCT10.2.0ORADATA
DUPTEST3.DBF
内存脚本的内容:
{
Alter clone database open resetlogs;
}
正在执行内存脚本
数据库已打开
内存脚本的内容:
{
# drop offline and skipped tablespaces
sql clone "drop tablespace TEST1 including contents cascade constraints";
}
正在执行内存脚本
sql 语句: drop tablespace TEST1 including contents cascade constraints
完成 Duplicate Db 于 25-12月-06
RMAN>

#6


当然你也可以使用dg方式直接生成一个数据库,

然后使用failover方式切换成primary database.

#7


感谢各位回复,还有没哪位大侠指教啊,希望能简洁易懂,我是初学者中的初学者,辛苦各位大侠了,谢谢

#8


不太会用RMAN,不熟悉这个的情况

我一般用 exp/imp 来实现从一台机器到另一台机器的数据库移动。

#9


完全可以。不过想简单点的话,oracle安装路径,参数设置需要和原来的一模一样

#10


感谢回复,那请问应该怎么办呢?请大侠讲的详细一些,谢谢了

#11


关注,收藏

#12


如果急的话,可以用imp/exp来做,简单一些

#13


我现在就有用RMAN备份的两个文件,和一台新的机器啊,请问如何恢复,谢谢了

#14


请各位大侠指教啊

#15


建议用EXP/IMP!

#16


学习下
只会exp/imp 

#17


http://ningoo.itpub.net/post/2149/190772

#18


实际上也不一定需要clone。直接restore也是可以的,从原库将控制文件备份一个复制过去,然后就和原库损坏要做恢复一样的操作。看看rman的手册吧,会备份,还要会恢复才行,不要要备份做什么用

#19


引用 8 楼 JDK_SHEN6 的回复:
不太会用RMAN,不熟悉这个的情况 

我一般用 exp/imp 来实现从一台机器到另一台机器的数据库移动。 

#20


9楼的大侠,我弄的一致了,该怎么操作啊,您怎么说了句话后就没信了呢?

#21


帮顶,学习

#22


我做了次实验,按以下步骤成功了:

1. 首先我们需要创建新的instance 请准备好相应的目录结构。

2.然后需要创建参数文件pfile(你可以使用原库的pfile进行修改)
新增(后为备库):
DB_FILE_NAME_CONVERT=('E:\oracle\oradata\ning\','E:\oracle\oradata\test\') 
LOG_FILE_NAME_CONVERT=('E:\oracle\oradata\ning\','E:\oracle\oradata\test\')

3.使用oradim创建新的instance 

4.使用orapwd创建password文件 

5.配置好监听和tnsnames

6.使用rman备份原库:backup full database;

7.备库nomount

8.使用rman复制数据库:
rman target sys/ning@ning AUXILIARY sys/test@test 
DUPLICATE TARGET DATABASE TO '备库sid';

9.然后去掉inittest.ora的DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT参数,再使用该文件生成spfile 

#23


就是17楼的方法。

#24


8.使用rman复制数据库:
rman target sys/ning@ning AUXILIARY sys/test@test
DUPLICATE TARGET DATABASE TO '备库sid'; 

这是22楼朋友回复里的一条,看这个样子,还需要用到原库啊?我前面说了,只有RMAN备份的文件和一台新服务器啊

#25


那有原库的控制文件吗?如果有,拷过去作基于控制文件的恢复看看。

#26


谢谢,已经成功了

是综合 vc555大侠 前面帮我搜的那个地址,以及在那里面找到的相关的链接,然后又根据过程中出现的问题查找相关资料来完成的。

再次感谢了,结贴。