免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3564 | 回复: 7
打印 上一主题 下一主题

[备份软件] 恢复oracle到异机 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-04-24 12:56 |只看该作者 |倒序浏览
如何利用NetBackup将Oracle数据库恢复到其它服务器


一、假设使用的是rman nocatalog方式。假设要将数据库恢复到new_host的不同文件系统/data上。

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也进行拷贝。

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的bp.conf中加入client_name=new_host,并在NetBackup Server的/usr/openv/netbackup/db/altnames目录下touch new_host或No.Restrictions。

7. 恢复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 msgfile 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’;
}

(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;

论坛徽章:
0
2 [报告]
发表于 2003-04-25 07:54 |只看该作者

恢复oracle到异机

确認過?

论坛徽章:
0
3 [报告]
发表于 2003-04-25 13:23 |只看该作者

恢复oracle到异机

sure

论坛徽章:
0
4 [报告]
发表于 2003-04-25 14:23 |只看该作者

恢复oracle到异机

这是文件系统方式的数据库,

把restore.log贴出来看看。


那裸设备的方式呢???

论坛徽章:
0
5 [报告]
发表于 2003-04-25 14:55 |只看该作者

恢复oracle到异机

老邱:
     以上用的是rman nocatalog方式、利用VERITAS NBU做备份。如果用户的datafile和controlfile都丢失了,怎么样才能从磁带库里恢复ORACLE数据库?用户经常问这样的问题。
以前我做IBM TSM for ORACLE备份的案子,用的是rman catalog方式备份数据库。当然还要独立备份catalog数据库的数据,但是这样很塌实。
我觉得ORACLE的备份维护很繁冗,虽然功能多了一点。比较起SYBASE数据库,SYBASE备份很简单,恢复也很简单,不用担心数据库本身的log问题。

论坛徽章:
0
6 [报告]
发表于 2003-04-25 17:12 |只看该作者

恢复oracle到异机

原帖由 "dansz" 发表:
这是文件系统方式的数据库,
把restore.log贴出来看看。
那裸设备的方式呢???


用rman备份时是无需关心数据文件在文件系统上还是裸设备上的。如果原来数据是在裸设备上,恢复的时候,如果恢复到原来的裸设备上,需先在操作系统级确认裸设备建好并且oracle有权限;如果想恢复到别的地方(例如文件系统上),用文中提到的set newname指令和switch datafile all指令。

论坛徽章:
0
7 [报告]
发表于 2003-04-25 17:14 |只看该作者

恢复oracle到异机

原帖由 "fujilide" 发表:
老邱:
     以上用的是rman nocatalog方式、利用VERITAS NBU做备份。如果用户的datafile和controlfile都丢失了,怎么样才能从磁带库里恢复ORACLE数据库?用户经常问这样的问题。
以前我做IBM TSM for ORACLE备份?.........


如果用rman catalog方式备份,controlfile和datafile都丢了,恢复的时候可以rman先连到catalog数据库里,先恢复controlfile;
如果用rman nocatalog方式,rman的catalog是记在controlfile里的,一般建议备份策略中对controlfile以文件方式单独备份(不要用只rman备)。恢复时,先以文件方式恢复contorlfile,再startup mount,然后通过rman恢复datafile。rman必须在数据库startup mount的状态才能连接到数据库,所以,如果你没有在rman以外备controlfile,而controlfile和datafile都丢了,就麻烦了。还是有办法救,但不是常规方法,所以最好单备controlfile。

论坛徽章:
0
8 [报告]
发表于 2003-04-25 17:31 |只看该作者

恢复oracle到异机

恢复controlfile先将数据库在unmount状态下,可以恢复controlfiel,我是在采用catalog方式下做过测试的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP