ITPub博客

首页 > 应用开发 > IT综合 > 恢复之重新建库step by step

恢复之重新建库step by step

原创 IT综合 作者:zildjianzhang 时间:2007-12-01 16:00:06 0 删除 编辑

之前的控制文件备份中提及到oracle推荐配置RMAN控制文件自动备份。当数据库结构发生改变或在RMAN每次成功完成备份之后,控制文件都会自动备份。这确保了nocatalog下,最新的备份对于数据库是可知的(信息存储在controlfile里)。

那么,下面的步骤来模拟数据库遭到破坏,只留下之前的pfile初始化文件(1),数据文件备份(2)及controlfile自动备份(3),通过重建数据库来完成恢复。这里的原数据库为非归档运行,RMAN为nocatalog。

首先要知道原数据库的DBID,本例为:1259705794

C:>rman

恢复管理器: Release 10.2.0.1.0 - Production on 星期六 12月 1 15:43:09 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

RMAN> connect target

已连接到目标数据库 (未启动)

RMAN> set dbid=1259705794

正在执行命令: SET DBID

接下来修改pfile里的内容,使之符合新环境的配置,然后通过pfile启动数据库到started

RMAN> startup nomount pfile='F:OracleDBpfile';

Oracle 实例已启动

系统全局区域总计 369098752 字节

Fixed Size 1249056 字节
Variable Size 117440736 字节
Database Buffers 247463936 字节
Redo Buffers 2945024 字节

接下来从控制文件之前的自动备份还原控制文件

RMAN> restore controlfile from autobackup;

启动 restore 于 01-12月-07
使用通道 ORA_DISK_1

恢复区域目标: F:OracleDB/flash_recovery_area
用于搜索的数据库名 (或数据库的唯一名称): TEST
通道 ORA_DISK_1: 在恢复区域中找到自动备份
通道 ORA_DISK_1: 已找到的自动备份: F:ORACLEDBFLASH_RECOVERY_AREATESTAUTOBACK
UP2007_12_01O1_MF_S_640191525_3O21PWJM_.BKP
通道 ORA_DISK_1: 从自动备份复原控制文件已完成
输出文件名=F:ORACLEDBORADATANEWSELFDBCONTROL01.CTL
输出文件名=F:ORACLEDBORADATANEWSELFDBCONTROL02.CTL
输出文件名=F:ORACLEDBORADATANEWSELFDBCONTROL03.CTL
完成 restore 于 01-12月-07

至此,新建的数据库已经拥有了原来的控制文件,这样之前的备份信息对于数据库来说也就可见了。

接下来要在MOUNT的状态下通过ALTER DATABASE RENAME FILE 'A' TO 'B' 将数据文件和REDOLOG文件的位置修改到新的匹配位置!

然后在RMAN中restore database并open resetlogs即可。

对数据库进行一次完全备份!

[@more@]

e思考1,将之前的控制文件自动备份恢复至何处在执行restore controlfile from autobackup时rman才能找到? 这一点都是基于startup nomount pfile='?/pfile'里的pfile的内容的。看下面的示例:

selfdb.__db_cache_size=247463936

selfdb.__java_pool_size=4194304

selfdb.__large_pool_size=4194304

selfdb.__shared_pool_size=100663296
selfdb.__streams_pool_size=8388608
*.audit_file_dest='F:OracleDB/admin/selfdb/adump'
*.background_dump_dest='F:OracleDB/admin/selfdb/bdump'

*.compatible='10.2.0.1.0'
*.control_files='F:OracleDBoradatanewselfdbcontrol01.ctl','F:OracleDBoradatanewselfdb

control02.ctl','F:OracleDBoradatanewselfdbcontrol03.ctl'
*.core_dump_dest='F:OracleDB/admin/test/cdump'

*.db_block_size=8192

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='test'

*.db_recovery_file_dest='F:OracleDB/flash_recovery_area'*.db_recovery_file_dest_size=2147483648

*.dispatchers='(PROTOCOL=TCP) (SERVICE=selfdbXDB)'

*.fast_start_mttr_target=15

*.job_queue_processes=10

*.open_cursors=300

*.pga_aggregate_target=122683392

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=368050176

*.undo_management='AUTO'

*.undo_retention=900

*.undo_tablespace='undotbs1'

*.user_dump_dest='F:OracleDB/admin/test/udump'

-------------------------------------------------------------------------*.db_name='test'*.db_recovery_file_dest='F:OracleDB/flash_recovery_area'两行内容就指出了搜索的范围和数据库名称。也就是说,可以通过手工修改这两个参数来使rman找到需要的controlfile自动备份。但这里必须指出,新的数据库名称要和旧的一致。否则在下一步mount数据库的时候,会报错。原因是被还原的控制文件自动备份中包含的是旧的数据库名称,而在启动时使用的pfile中的描述却是新的名称。

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

请登录后发表评论 登录
全部评论
  • 博文量
    15
  • 访问量
    206037