用NetBackup恢复Oracle到异机
时间:2008-01-16 13:33:45 来源: 作者:
|
NetBackup将Oracle数据库恢复到其它服务器 一、前提 假设备份已成功(不使用rman catalog)。假设要将数据库恢复到new_host的不同文件系统/data上。以oracle8i语法为例,Oracle9无svrmgrl,需用sqlplus "/ as sysdba"。 二、步骤 1. 在new_host上创建dba组和与old_host相同的Oracle用户。将/data的可写权限给Oracle用户。确定new_host上有足够的硬盘空间存放新的datafile及archive log file。 2. 修改.profile文件中相关的Oracle环境变量,ORACLE_SID保持与old_host中一致。 3. 安装与old_host相同版本的Oracle数据库软件,不创建数据库。 4. 将old_host中$ORACLE_HOME/dbs下的initSID.ora文件拷至new_host的$ORACLE_HOME/dbs下。如果initSID.ora中有ifile='xxx.ora',则将xxx.ora也进行拷贝。Oracle9也可能用spinitSID.ora。 5. 创建initSID.ora(及xxx.ora)中所用到的目录。通常所需建立的目录为background_dump_dest、core_dump_dest、user_dump_dest、log_archive_dest。常见结构为: $ORACLE_BASE /admin /SID /bdump /cdump /udump 6. 在new_host上安装和配置NetBackup client和Oracle Agent。注意在NetBackup Server的/usr/openv/netbackup/db/altnames目录下touch No.Restrictions(允许异机恢复)。 7. 从原机copy或从磁带异机恢复standard方式备份的最新的control file到new_host的/data目录下。 8. 修改initSID.ora(及xxx.ora),如果是OPS,将OPS相关的参数去掉: (1) control_files = ("/data/controlfile_name") (2) log_archive_dest="/data/arch" (3) sort_area_size=20000000 # 如果sort_area_size不够大,恢复archive_log时可能出现ora-1220 9. svrmgrl>; startup mount 10. svrmgrl>; select file# from v$datafile,记录file# 11. svrmgrl>; select * from v$logfile,记录log文件的目录。注意保证该目录存在并且为oracle用户可写。 12. 运行恢复脚本: rman nocatalog target / cmdfile restore.rcv msglog restore.log 附一:restore.rcv脚本: ################# connect target / run { allocate channel t1 type 'sbt_tape' parms="ENV=(NB_ORA_CLIENT=old_host)"; set newname for datafile 1 to '/data/datafile_1.dbf'; set newname for datafile 2 to '/data/datafile_2.dbf'; … restore database; switch datafile all; recover database; sql 'alter database open resetlogs'; } (如果恢复到与原机相同的位置,不需要set newname和switch datafile) (RMAN在restore database 时只会将数据文件恢复回来;recover database时,才会restore所需的增量备份和archive log。) 附二:trouble shooting 1. 如果确认全部archive log都已用完,而recover仍提示需下一个archive log,或alter database open resetlogs时提示datafile1 need recover,可采用以下步骤: svrmgrl >; connect internal; svrmgrl >; recover database using backup controlfile until cancel; 根据提示,输入 cancel <回车>; svrmgrl >; alter database open resetlogs; 附三:恢复到历史点 如果不是恢复到最新,而是恢复到某一时刻,rman脚本如下: connect target / run { allocate channel t1 type 'sbt_tape' parms="ENV=(NB_ORA_CLIENT=old_host)"; set until time "to_date('06/30/02 13:00:00','MM/DD/YY HH24:MI:SS')" restore database; recover database; sql 'alter database open resetlogs'; } sharkbing 回复于:2004-10-22 09:45:03 支持 cnccie 回复于:2004-10-22 10:25:26 老邱真是好人,收下了。 david5337 回复于:2004-10-22 12:35:21 解决了我的一些问题,支持! yddll 回复于:2004-10-22 12:56:17 老邱,是原创的吧!? 反正我是给加精了。 rollingpig 回复于:2004-10-22 14:07:32 前一阵倒是做了几次 LAN Free的异机Oracle恢复。 步骤基本一样 其实大家可以从 http://ftp.support.veritas.com/pub/support/products/NetBackup_DataCenter/ or http://ftp.support.veritas.com/pub/support/products/NetBackup_BusinesServer 下载到完整的文档,里面有非常详尽的例子 http://ftp.support.veritas.com/pub/support/products/NetBackup_BusinesServer/netbackup_adminguide_oracle_unix_232317.pdf noise 回复于:2004-10-22 15:14:46 谢谢,已经收藏!!! scout2004 回复于:2004-10-30 15:58:09 好文章,感谢楼主。收藏。 showy 回复于:2004-11-02 17:38:30 如果是rman用catalog的,就还要涉及dbid的问题。补全就好了。 hnxjy 回复于:2004-11-04 11:34:08 好贴,已经收藏了! oraclesrg 回复于:2004-11-05 08:24:53 问一下,有catalog的怎么做,还有能否吧用数据文件在裸设备上的oracle,恢复到普通机器上 redwaves 回复于:2004-11-07 12:35:18 Thank you ! maolei_2000 回复于:2004-11-18 17:13:54 好文!!!!!!!! |
原文链接:http://bbs.chinaunix.net/viewthread.php?tid=429609 转载请注明作者名及原文出处 |










文章评论
共有 位网友发表了评论 查看完整内容