Duplicating a Database 笔记

Duplicating a Database with Recovery Manager

用途:

1 测试备份与恢复的过程

2 如果误删除一个表,可以复制一个库,然后在复制库上做恢复,恢复后的正确数据导入到生产库上。

[@more@]

经过多次失败,最后完成。结果记录如下:

系统结构描述

目标库:

主机 host1 aix5.3

IP: 10.10.10.72

SID: millet

net: trgt

参数文件 initmillet.ora spfilemillet.ora

数据文件主目录 /netapp/oradata/millet/

跟踪文件目录 /opt/oracle/admin/millet/bdump cdump udump

RMAN备份文件目录 /ww

复制库:

主机 host2 aix5.3

IP: 10.10.10.34

db_name: dupdb

net: aux

参数文件initaux2.ora spfileaux2.ora

数据文件主目录 /u01/oradata/dupdb

跟踪文件目录 /u01/admin/dupdb/bdump cdump udump

备份RMAN文件目录 /ww (新建了一个目录,与目标库保持一致,并将目标库的RMAN备份文件FTP过来)

大致操作过程

1 构建复制库的环境

1.1 创建目录

在复制库上创建必需的目录,如

mkdir /u01/oradata/dupdb

mkdir -p /u01/admin/dupdb/bdump

mkdir -p /u01/admin/dupdb/cdump

mkdir -p /u01/admin/dupdb/udump

1.2 创建口令文件

在复制库上建dupdb 的口令文件

orapwd file=/u01/product/9.2.0/dbs/orapwaux2 password=oracle

1.3 创建init.ora

可以从trgt库上复制过来,然后加上以下内容,并修改所有涉及到目录变动的地方;

DB_NAME=dupdb

CONTROL_FILES=/u01/oradata/dupdb/control01.ctl

DB_FILE_NAME_CONVERT=('/netapp/oradata/millet/','/u01/oradata/dupdb/')

LOG_FILE_NAME_CONVERT=('/netapp/oradata/millet/','/u01/oradata/dupdb/')

这两个convert加上也没有用,还是需要set newname !

修改以_dest为后缀的参数值到新的路径

修改instance_name=dupdb

两个参数文件比较,只显示不一样的地方

trgt原来的参数文件

*.background_dump_dest='/opt/oracle/admin/millet/bdump'

*.control_files='/netapp/oradata/millet/control01.ctl','/netapp/oradata/millet/control02.ctl','/netapp/oradata/millet/control03.ctl'

*.core_dump_dest='/opt/oracle/admin/millet/cdump'

*.db_name='millet'

*.instance_name='millet'

*.user_dump_dest='/opt/oracle/admin/millet/udump'

新建的复制库上的参数文件

db_name=dupdb

control_files=/u01/oradata/dupdb/control01.ctl

db_file_name_convert=('/netapp/oradata/millet/','/u01/oradata/dupdb/')

log_file_name_convert=('/netapp/oradata/millet/','/u01/oradata/dupdb/')

*.background_dump_dest='/u01/admin/dupdb/bdump'

*.core_dump_dest='/u01/admin/dupdb/cdump'

*.instance_name='dupdb'

*.user_dump_dest='/u01/admin/dupdb/udump'

1.4 修改listener.ora and tnsnames.ora

我打算在主机1TRGT)将数据库复制到主机2上,因此,需要在主机1上连接AUX2服务;

在主机2上(AUX2),修改listener.ora文件,添加aux2,以便在主机1上能够访问。

(SID_DESC =

(GLOBAL_DBNAME = aux2)

(ORACLE_HOME = /u01/product/9.2.0)

(SID_NAME = aux2)

)

在主机1上(TRGT),修改tnsnames.ora文件,添加对复制库的访问,名称aux

用在rman TARGET SYS/oracle@trgt AUXILIARY SYS/oracle@aux这个地方

在主机2上(AUX2),同样修改tnsnames.ora,内容如下

trgt =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.72)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = millet)

)

)

aux =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.34)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = aux2)

)

)

1.4 启动复制库到nomount

在哪个机器上都可以启,过程略

2 TRGT库的准备工作

2.1 检查TRGT库是否有完整的RMAN备份集

如果没有,全备一把,过程略

但必需让AUX库的主机,也能访问这个备份集

我是FTP过去,在AUX库上建了个相同目录,放进去,等候RMAN使用。

2.2 生成set newname语句

select 'set newname for datafile '||file#||' to '''||name|| ''' ;' from v$datafile;

3 连接trgtaux库,准备复制数据库

在目标库上启动RMAN(在复制库上应该一样,没试)

run {

set newname for datafile 1 to '/u01/oradata/dupdb/system01.dbf' ;

set newname for datafile 2 to '/u01/oradata/dupdb/undotbs01.dbf' ;

set newname for datafile 3 to '/u01/oradata/dupdb/drsys01.dbf' ;

set newname for datafile 4 to '/u01/oradata/dupdb/example01.dbf' ;

set newname for datafile 5 to '/u01/oradata/dupdb/indx01.dbf' ;

set newname for datafile 6 to '/u01/oradata/dupdb/tools01.dbf' ;

set newname for datafile 7 to '/u01/oradata/dupdb/users01.dbf' ;

set newname for datafile 8 to '/u01/oradata/dupdb/fpgl_data01.dbf' ;

set newname for datafile 9 to '/u01/oradata/dupdb/fpgl_ind01.dbf' ;

set newname for datafile 10 to '/u01/oradata/dupdb/gs12366_data01.dbf' ;

set newname for datafile 11 to '/u01/oradata/dupdb/hlwsb_data01.dbf' ;

set newname for datafile 12 to '/u01/oradata/dupdb/ncp_data01.dbf' ;

set newname for datafile 13 to '/u01/oradata/dupdb/ncp_ind01.dbf' ;

set newname for datafile 14 to '/u01/oradata/dupdb/tbs_dat_par_0101.dbf' ;

set newname for datafile 15 to '/u01/oradata/dupdb/tbs_dat_par_0201.dbf' ;

set newname for datafile 16 to '/u01/oradata/dupdb/tbs_dat_par_0301.dbf' ;

set newname for datafile 17 to '/u01/oradata/dupdb/tbs_dat_par_0401.dbf' ;

set newname for datafile 18 to '/u01/oradata/dupdb/xtjg_data01.dbf' ;

set newname for datafile 19 to '/u01/oradata/dupdb/qxgl01.dbf' ;

set newname for datafile 20 to '/u01/oradata/dupdb/xz_ztry_hist01.dbf' ;

DUPLICATE TARGET DATABASE TO dupdb nofilenamecheck

LOGFILE group 1 ('/u01/oradata/dupdb/redo01.log') size 200k,

GROUP 2 ('/u01/oradata/dupdb/redo02.log') SIZE 200K,

GROUP 3 ('/u01/oradata/dupdb/redo03.log') SIZE 200K;

}

到此为止,已经在2号机上,复制了一个新数据库,数据库名称为 dupdb 并且更改了数据文件路径.

小结:看文档有点晕,因为文档上没有画出结构图,看别人的总结更晕,还是自己动手做上十来次,遇到十几个错误之后,才明白这个过程的来龙去脉。心里才算踏实。

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

转载于:http://blog.itpub.net/271063/viewspace-1016344/

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值