duplicate数据库实验

昨天做了关于duplicate数据库的实验,今天把它整理出来,以便以后参阅。
场景:host A,即主数据库所在站点(192.168.4.56,walker主机名,xp,9201,rmandb主数据库,lgh恢复目录数据库;ORACLE_BASE=d:oracle)、host B,即复制数据库所在站点(192.168.4.61,kid主机名,xp,9201,ORACLE_BASE=c:oracle)
目标:准备将host A上rmandb数据库通过RMAN的duplicate命令复制到host B站点上。
1、编辑host B的tsnames.ora文件准备在host B上使用RMAN,因此需要编辑host B中的tsnames.ora文件,以便能够在host B数据库中通过网络服务名连接host A中的数据库。加入的内容如下:
LGH = --能够从host B连接到该恢复目录数据库
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = walker)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = lgh)
)
)RMANDB = --能够从host B连接到该主数据库
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = walker)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rmandb)
)
)
2、在host B上建立相应的目录结构:
c:oracleadmindupdump
c:oracleadmindupcdump
c:oracleadminduppfile
c:oracleadmindupudump
c:oracleoradatadup
3、在host B上口令文件C:Documents and SettingsLGH>orapwd file=c:oracleora92 dbmsPWDdup.ora password=dup entries=10
4、在host B上创建实例dup(该实例对应复制数据库),并启动实例
C:Documents and SettingsLGH>oradim -new -sid DUP
配置监听程序和tsnames.ora,将该dup条目添加到文件中即可。
配置后,需要重新启动监听服务。并用sqlplus测试:
C:Documents and SettingsLGH>set oracle_sid=dupC:Documents and SettingsLGH>sqlplus /nologSQL*Plus: Release 9.2.0.1.0 - Production on 星期五 8月 31 09:03:59 2007Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.SQL>conn sys/dup as sysdba
已连接到空闲例程
5、参数文件(从host A拷贝,并修改相应的条目)
dispatchers="(PROTOCOL=TCP) (SERVICE=dupXDB)"
instance_name=dup
db_name=dup
control_files=
("C:oracleoradatadupCONTROL01.CTL",
"C:oracleoradatadupCONTROL02.CTL", "C:oracleoradatadupCONTROL03.CTL")

background_dump_dest=c:oracleadmindupdump
core_dump_dest=c:oracleadmindupcdump
user_dump_dest=c:oracleadmindupudump
####因为host A数据库的数据文件分别位于d和e盘,所以都需要转换DB_FILE_NAME_CONVERT=("D:oracleoradata mandb", "C:oracleoradatadup")
DB_FILE_NAME_CONVERT=("E: mandb", "C:oracleoradatadup")
LOG_FILE_NAME_CONVERT=("D:oracleoradata mandb", "C:oracleoradatadup")
注:可以在实例启动前或启动后创建spfile参数文件
SQL>create spfile from pfile=c:oracleadminduppfileinit.ora
6、启动实例
startup nomount;
7、在host A上备份主数据库rmandb
C:Documents and SettingsAdministrator>rman恢复管理器: 版本9.2.0.1.0 - ProductionCopyright (c) 1995, 2002, Oracle Corporation. All rights reserved.RMAN> connect target sys/walker@primary
连接到目标数据库: RMANDB (DBID=3416456476)RMAN> connect catalog rmans/rmans@cata
连接到恢复目录数据库
RMAN>backup database tag 'fulldb' format 'e:ackupfull_%u_%s_%p';
8、在host B上
C:Documents and SettingsAdministrator>rman
恢复管理器: 版本9.2.0.1.0 - ProductionCopyright (c) 1995, 2002, Oracle Corporation. All rights reserved.RMAN> connect target sys/walker@primary
连接到目标数据库: RMANDB (DBID=3416456476)RMAN> connect catalog rmans/rmans@cata
连接到恢复目录数据库
RMAN> connect auxiliary /@dup
已连接到备用数据库 (未启动)
注意:在执行duplicate命令之前,需要将数据文件备份(e:ackupxxx)、必要的归档日志(e: mandbxxx)拷贝到host B,并且需要构造与host A上相同的路径。即将数据文件备份拷贝到复制站点的e:ackup,归档日志拷贝到e: mandb,即为构造与主站点上相同的路径。RMAN> run {
allocate auxiliary channel c1 device type disk;
duplicate target database to dup
logfile 'c:oracleoradatadupREDO01.LOG' size 100M,
'c:oracleoradatadupREDO02.LOG' size 100M,
'c:oracleoradatadupREDO03.LOG' size 100M;
}

分配的通道: c1
通道 c1: sid=12 devtype=DISK

启动 Duplicate Db 于 30-8月 -07

正在打印存储的脚本: Memory Script
{
set until scn 281474976710655;
set newname for datafile 1 to
"C:ORACLEORADATADUPSYSTEM01.DBF";
set newname for datafile 2 to
"C:ORACLEORADATADUPUNDOTBS01.DBF";
set newname for datafile 3 to
"C:ORACLEORADATADUPCWMLITE01.DBF";
set newname for datafile 4 to
"C:ORACLEORADATADUPDRSYS01.DBF";
set newname for datafile 5 to
"C:ORACLEORADATADUPEXAMPLE01.DBF";
set newname for datafile 6 to
"C:ORACLEORADATADUPINDX01.DBF";
set newname for datafile 7 to
"C:ORACLEORADATADUPODM01.DBF";
set newname for datafile 8 to
"C:ORACLEORADATADUPTOOLS01.DBF";
set newname for datafile 9 to
"C:ORACLEORADATADUPUSERS01.DBF";
set newname for datafile 10 to
"C:ORACLEORADATADUPXDB01.DBF";
set newname for datafile 11 to
"C:ORACLEORADATADUPTEST01.DBF";
restore
check readonly
clone database
;
}
正在执行脚本: Memory Script

正在执行命令: SET until clause

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

启动 restore 于 30-8月 -07

通道 c1: 正在开始恢复数据文件备份集
通道 c1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到C:ORACLEORADATADUPSYSTEM01.DBF
正将数据文件00002恢复到C:ORACLEORADATADUPUNDOTBS01.DBF
正将数据文件00003恢复到C:ORACLEORADATADUPCWMLITE01.DBF
正将数据文件00004恢复到C:ORACLEORADATADUPDRSYS01.DBF
正将数据文件00005恢复到C:ORACLEORADATADUPEXAMPLE01.DBF
正将数据文件00006恢复到C:ORACLEORADATADUPINDX01.DBF
正将数据文件00007恢复到C:ORACLEORADATADUPODM01.DBF
正将数据文件00008恢复到C:ORACLEORADATADUPTOOLS01.DBF
正将数据文件00009恢复到C:ORACLEORADATADUPUSERS01.DBF
正将数据文件00010恢复到C:ORACLEORADATADUPXDB01.DBF
正将数据文件00011恢复到C:ORACLEORADATADUPTEST01.DBF
通道 c1: 已恢复备份段 1
段 handle=E:BACKUPFULL_2IIQMNCI_82_1 tag=FULLBACKUP params=NULL
通道 c1: 恢复完成
完成 restore 于 30-8月 -07
sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "dup" RESETLOGS ARCHIVELOG
MAXLOGFILES 50
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 226
LOGFILE
GROUP 1 'c:oracleoradatadupREDO01.LOG' SIZE 104857600 ,
GROUP 2 'c:oracleoradatadupREDO02.LOG' SIZE 104857600 ,
GROUP 3 'c:oracleoradatadupREDO03.LOG' SIZE 104857600
DATAFILE
'C:ORACLEORADATADUPSYSTEM01.DBF'
CHARACTER SET ZHS16GBK


正在打印存储的脚本: Memory Script
{
switch clone datafile all;
}
正在执行脚本: Memory Script

数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=1 stamp=631991710 文件名=C:ORACLEORADATADUPUNDOTBS01.
DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=2 stamp=631991710 文件名=C:ORACLEORADATADUPCWMLITE01.
DBF
数据文件 4 已转换成数据文件副本
输入数据文件副本 recid=3 stamp=631991710 文件名=C:ORACLEORADATADUPDRSYS01.DB
F
数据文件 5 已转换成数据文件副本
输入数据文件副本 recid=4 stamp=631991710 文件名=C:ORACLEORADATADUPEXAMPLE01.
DBF
数据文件 6 已转换成数据文件副本
输入数据文件副本 recid=5 stamp=631991710 文件名=C:ORACLEORADATADUPINDX01.DBF

数据文件 7 已转换成数据文件副本
输入数据文件副本 recid=6 stamp=631991710 文件名=C:ORACLEORADATADUPODM01.DBF
数据文件 8 已转换成数据文件副本
输入数据文件副本 recid=7 stamp=631991710 文件名=C:ORACLEORADATADUPTOOLS01.DB
F
数据文件 9 已转换成数据文件副本
输入数据文件副本 recid=8 stamp=631991710 文件名=C:ORACLEORADATADUPUSERS01.DB
F
数据文件 10 已转换成数据文件副本
输入数据文件副本 recid=9 stamp=631991710 文件名=C:ORACLEORADATADUPXDB01.DBF
数据文件 11 已转换成数据文件副本
输入数据文件副本 recid=10 stamp=631991710 文件名=C:ORACLEORADATADUPTEST01.DB
F

正在打印存储的脚本: Memory Script
{
set until scn 281474976710655;
recover
clone database
delete archivelog
;
}
正在执行脚本: Memory Script

正在执行命令: SET until clause

启动 recover 于 30-8月 -07

正在开始介质的恢复

存档日志线程 1 序列 25 已作为文件 E:RMANDBARC00025.001 存在于磁盘上
存档日志文件名 =E:RMANDBARC00025.001 线程 =1 序列 =25
无法找到存档日志
存档日志线程 =1 序列=26
释放的通道: c1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 08/30/2007 17:15:15
RMAN-03015: error occurred in stored script Memory Script
RMAN-06054: media recovery requesting unknown log: thread 1 scn 3855132

这里出现错误,但是没有影响duplicate命令的执行成功。此时恢复到scn3855132,进行了不完全恢复,打开数据库时,需要resetlogs。
9、检验复制数据库
conn test/test@dup
select * from test;
内容和主数据库的一致。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10807464/viewspace-967201/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10807464/viewspace-967201/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值