【新炬网络名师大讲堂】有限条件下怎样做好恢复演练

导语:最近频频听到有用户(还不是”客户” )存储出问题后无法恢复,只有求助于DUL、AUL、ODU之类的工具。本来嘛,在全球经济低迷的当下,有些需求总是好的,总可以增加点GDP。但,作为一个DBA来说,心里总怕有点不甘吧。出问题的用户里,有通信行业(南方北方都有)、有银行、有公安(网上搜也能搜到几个吧)、有社保………不一而足。我们知道这些行业里的用户,应该是比小沈阳更加不差钱的吧。谁说不是呢,但对于报表库、查询库之类动辄几T、几十T的“不太重要”的系统来说,要让领导投更多的钱,其实也还似乎比较难的。这篇,就是在投钱不多的情况下,怎样做到基本的备份,且能做到发生故障时能恢复之目的。

前提:做好备份;恢复测试机配置比较低(如果配置够的话不用这么麻烦)

版本:Oracle9i、10g测试通过。

原理:将更多的数据skip掉。(听起来有点类似于oracle exadata server ,其实不是。exadata是filter,而这里是skip)

废话少说。

第零步:启动数据库实例
第一步:恢复控制文件:

RMAN> restore controlfile from ‘F:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORA11G\BACKUPSET\2008_10_23\O1_MF_NCSNF_TAG20081023T205321_4J0X8SY8_.BKP’;

Starting restore at 23-OCT-08
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=318 device type=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
output file name=F:\APP\ADMINISTRATOR\ORADATA\ORA11G\CONTROL01.CTL
output file name=F:\APP\ADMINISTRATOR\ORADATA\ORA11G\CONTROL02.CTL
output file name=F:\APP\ADMINISTRATOR\ORADATA\ORA11G\CONTROL03.CTL
Finished restore at 23-OCT-08

第二步:mount数据库

RMAN> alter database mount;

database mounted
released channel: ORA_DISK_1

重点在
第三步:restore 数据库

RMAN> restore database skip forever tablespace xml,ttt,boypoo,t_4k,ILMTBS,users;

Starting restore at 23-OCT-08
Starting implicit crosscheck backup at 23-OCT-08
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=317 device type=DISK
Crosschecked 22 objects
Finished implicit crosscheck backup at 23-OCT-08

Starting implicit crosscheck copy at 23-OCT-08
using channel ORA_DISK_1
Crosschecked 2 objects
Finished implicit crosscheck copy at 23-OCT-08

searching for all files in the recovery area
cataloging files…
cataloging done
….(skip more data)

第五步:recover database

RMAN> recover database skip forever tablespace xml,ttt,boypoo,t_4k,ILMTBS,users;

Starting recover at 23-OCT-08
using channel ORA_DISK_1

starting media recovery
… …

第六步:open 数据库

RMAN> alter database open resetlogs;

database opened

这个时候,我们所skip的表空间里有些什么对象我们还是可以看到的,只不过数据没有。

验证:

SQL> select owner,table_name from dba_tables where tablespace_name=’USERS’;

OWNER TABLE_NAME
—————————— ——————————
SCOTT MLOG$_DEPT
SCOTT MLOG$_EMP
SCOTT A
SCOTT DEPT
SCOTT EMP
SCOTT BONUS
SCOTT SALGRADE
..
OWNER TABLE_NAME
—————————— ——————————
HIS T
ORA T
ORA SYS_IMPORT_SCHEMA_01

SQL> select count(1) from his.t;
select count(1) from his.t
*
ERROR at line 1:
ORA-00376: file 4 cannot be read at this time
ORA-01110: data file 4: ‘F:\APP\ADMINISTRATOR\ORADATA\ORA11G\USERS01.DBF’

这篇blog的目的是是想给做好数据库恢复演练,但有没有与生产环境相当容量和性能的环境的情况下怎么去实现;这样做的目的,是想打开一个最小可能打开的库,也就是说,可以skip除了system、undo、temp之外的所有表空间。

了解了这个原理后,其实我们还可以将其推广开来,比如我们有客户,原来只有一个生产库了,现在上面跑着60多个应用,现在想将这些应用中核心的部分剥离到其他机器上,那我们同样的可以用这个skip tablespace方式,来进行这个剥离的动作,而且停机时间相当短(只是应用归档日志时间,30分钟以内即可完成剥离)。

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

转载于:http://blog.itpub.net/29960155/viewspace-1369760/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值