免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3759 | 回复: 8

[Veritas NBU] 请问如何通过nbu6.0调用rman恢复oracle中某个表空间(基于时间点的),不是整库恢复? [复制链接]

论坛徽章:
0
发表于 2010-01-06 14:33 |显示全部楼层
通过nbu调用rman对Oracle10g进行了整库备份(backup database)备份脚本如下:
CMD_STR="
ORACLE_HOME=$ORACLE_HOME
export ORACLE_HOME
ORACLE_SID=$ORACLE_SID
export ORACLE_SID
$RMAN target $TARGET_CONNECT_STR nocatalog msglog $RMAN_LOG_FILE append << EOF
RUN {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
send 'NB_ORA_CLIENT=P595ALPAR1';
BACKUP
    $BACKUP_TYPE
    TAG hot_db_bk_level0
    FILESPERSET 5
    # recommended format
    FORMAT 'bk_%s_%p_%t'
    DATABASE;
    sql 'alter system archive log current';
RELEASE CHANNEL ch00;
# backup all archive logs
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
send 'NB_ORA_CLIENT=dbserver';
BACKUP
   filesperset 20
   FORMAT 'al_%s_%p_%t'
   ARCHIVELOG ALL delete input;
RELEASE CHANNEL ch00;
#
# Note: During the process of backing up the database, RMAN also backs up the
# control file.  This version of the control file does not contain the
# information about the current backup because "nocatalog" has been specified.
# To include the information about the current backup, the control file should
# be backed up as the last step of the RMAN section.  This step would not be
# necessary if we were using a recovery catalog.
#
ALLOCATE CHANNEL ch00 TYPE disk;
  copy  CURRENT CONTROLFILE to '/usr/openv/scripts/dbserver_control.ctl' ;
RELEASE CHANNEL ch00;
}
EOF


现在遇到一个问题,用户发现这个数据库中有一个表空间中的数据有问题了,想单独恢复这个表空间到3天前的状态(不恢复整个数据库),请问各位可以实现吗?能告诉大致的过程吗?谢谢!

补充一下:最近没有做这个表空间的exp备份。

论坛徽章:
0
发表于 2010-01-06 15:34 |显示全部楼层
当然可以了,环境没变,controlfile没变

看看rman手册吧,有专门的一章讲这个:Performing RMAN Tablespace Point-in-Time Recovery

论坛徽章:
0
发表于 2010-01-06 15:44 |显示全部楼层
1、搭测试环境
2、首先恢复控制文件
3、数据库启动到mount状态
4、将表空间offline掉
5、恢复所需表空间
大体脚本如下,自己修改一下:
Shutdown abort;
Startup nomount;
run {
Allocate channel d1 type disk;
Restore controlfile from ‘d:\backup\CTL_TEST_0_1_6555’;
Release channel d1 ;
Alter database open; //要为打开状态

set until time "TO_DATE(’08/08/2007 10:50:00’,’MM/DD/YYYY HH24:MI:SS’)";
sql ’alter tablespace TEST, USERS offline immediate’;
allocate channel d1 type disk;
restore tablespace TEST, USERS;
recover tablespace TEST, USERS;
release channel d1;
sql ’alter tablespace TEST, USERS online’;
}

论坛徽章:
0
发表于 2010-01-06 16:32 |显示全部楼层
原帖由 bond2200 于 2010-1-6 15:44 发表
1、搭测试环境
2、首先恢复控制文件
3、数据库启动到mount状态
4、将表空间offline掉
5、恢复所需表空间
大体脚本如下,自己修改一下:
Shutdown abort;
Startup nomount;
run {
Allocate channel  ...


哈哈,顶,其实不用abort了

最重要的一步,做操作之前先确保有一次完整的备份

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
发表于 2010-01-07 06:10 |显示全部楼层
LZ这活儿是纯练Oracle啊,和NBU没啥关系呀。

论坛徽章:
0
发表于 2010-01-07 08:31 |显示全部楼层
感谢楼上各位的支持,昨天我查到的资料也是搭建测试环境再恢复表空间,今晚就实战,搞定后汇报!

论坛徽章:
0
发表于 2010-01-07 10:13 |显示全部楼层
其实搭个测试环境,直接做全库恢复就得了
然后把需要的表倒出来,再倒入就OK了,呵呵

论坛徽章:
0
发表于 2010-01-07 15:35 |显示全部楼层
有全备份咋都好搞

论坛徽章:
0
发表于 2010-01-08 09:13 |显示全部楼层
有做备份,赞一个,很多人都是没备份哭诉呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP