2015年4月17日星期五

rman来复制db

1。用rman来复制db,本地步骤如下
源orcl11g,目的orcl11g3
a。先建立一个pfile,我是直接copy源的initorcl11g.ora到initorcl11g3.ora然后修改内容,修改的内容如下把里面的orcl11g都给替换为orcl11g3,由于是local复制,追加了下面两行
*.db_file_name_convert=(/ORADATA/app/oradata/orcl11g,/ORADATA/app/oradata/orcl11g3)
*.log_file_name_convert=(/ORADATA/app/oradata/orcl11g,/ORADATA/app/oradata/orcl11g3),免得文件冲突。
b。oracl里面用到的目录都给mkdir -p一下
c。有了pfile,就可以启动instance了,startup nomount pfile=initorcl11g3.ora,启动后就create spfile from pfile,然后重新启动再次进nomount。
d。需要将orcl11g3静态注册进listener.ora
SID_LIST_LISTENER =
   (SID_DESC =
     (GLOBAL_DBNAME = orcl11g3)
     (ORACLE_HOME = /ORADATA/app/product/11.2.0/dbhome_1)
     (SID_NAME = orcl11g3)
     )
  )注册后重新启动一下lsnrctl,然后lsnrctl service看一下是否有。到此,目标的东西就完事了。
f。需要创建pwfile,直接orapwd file=$ORACLE_HOME/dbs/orapworcl11g3 password=oracle entries=5 
e。现在开始复制。直接rman target / auxiliary sys/oracle@orcl11g3,进去后duplicate target database to orcl11g3;就完事了。当然也可以指定要duplicate到啥时,啥restore point。

2。异地复制,目前我看到的是,还不支持直接复制(配送tnsname.ora后直接duplicat),还是需要将源的备份上载到目的地,然后再在目的duplicate。
a。在目的地,同样先建立instance。
b。将备份文件上载到目的,比如scp啥的
c。上目的地, rman auxiliary / ,然后执行duplicate target database to dup backup location '/ORADATA/app/flash_recovery_area/ORCL11G';就完事了,当然也可以在源执行rman, rman  auxiliary sys/oracle@orcl11g3,这时就需要配置tnsname.ora了。



前面两个法子,都是rman对已经备份的内容进行clone,11g支持了在线clone db。语法是
duplicate target database to 目标db from active database。这个我也进行了测试。
首先,得明确一点,要在线clone,targetdb必须是archivelog模式才行。
另外,执行 rman target / auxiliary sys/oracle@orcl11g3里面执行active clone,会报ORA-17627: ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。
这个修改为给用户和密码连接就可以
rman target sys/oracle@orcl11g auxiliary sys/oracle@orcl11g3
duplicate target database to orcl11g3 from active database;
这里我遇到了RMAN-05541: no archived logs found in target database错误,然后直接3次alter system switch logfile;产生archivelog后过去了。
对于异地的archive clone呢?这个就得赞了,完全一样,不用手动拷贝啥文件了。

另外,我试用了用EM来做clone,11g r2的EM DataControl的clone不支持 clone到别的机器,只能在一台机器做,网上search,据说grid control可以,就不知道了。
https://community.oracle.com/thread/379851

没有评论:

发表评论