在只有数据文件和控制文件的情况下恢复数据库

一:情景再现,假设我的 数据库 是实例为orcl2,环境window,oracle版本 Oracle  Database  10g  Enterprise Edition Release 10.2.0.3.0

 1. shutdown immediate    关闭数据库
 
 2. 手工删除所有的日志文件,只保持控制文件和数据文件
 
 3. 删除跟实例相关的文件夹和文件:
    (admin文件夹下的名叫orcl2文件夹,oradata文件夹下的orcl2文件夹,database文件夹下的关于orcl2的初始化文件pfile和spfile,口令文件PWDorcl2)
 
 4. 删除实例 orcl2
    oradim -delete -sid orcl2
 
 二:数据库 恢复
 
 1. 创建实例
    oradim -new -sid orcl2
 
 2. 编辑初始化参数文件(可以拷贝一份可用数据库的初始化参数文件,并进行部分修改,比如控制文件等的存放位置),并重命名为INITorcl2.ora
 
 3. 创建相应的目录结构,设置oracle_sid=orcl2,连接到空闲例程 sqlplus / as sysdba,并启动实例 startup nomount pfile = F:\oracle\product\10.2.0\db_1\database\INITorcl2.ora
 
 4. 创建口令验证文件(orapwd file='' password=sys entries=1) --注意:file不能有引号,同时file=F:\oracle\product\10.2.0\db_1\database\PWDorcl2.ora这个话'='两边不能有空格(space)
    $orapwd file=F:\oracle\product\10.2.0\db_1\database\PWDorcl2.ora password=sa entries=1
   
 5. 将控制文件copy至oradata/orcl2/文件夹下,再将数据库启动到mount状态
    alter database mount;

 6. 查看v$log表
    SYS@orcl2>select group#,archived,status from v$log;

        GROUP# ARC STATUS                                                          
    ---------- --- ----------------                                                
         1 YES UNUSED                                                          
         3 NO  CURRENT                                                         
         2 YES UNUSED  
   
    可以先clear 1号和2号redo日志文件,创建出1号组和2号组的日志文件,因为3号组日志文件是current的,所以不能用以下语句恢复。
    alter database clear logfile group 1;
    alter database clear logfile group 2;
   
 7. 打印出控制文件创建语句
    alter database backup controlfile to trace;
    之后到admin\orcl2\udump文件夹下查看trace文件中控制文件的内容,并复制
   
 8. 关闭数据库,再启动数据库到nomount状态,用以上复制的内容重建控制文件。
    CREATE CONTROLFILE REUSE DATABASE "ORCL2" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 32
    MAXLOGMEMBERS 2
    MAXDATAFILES 32
    MAXINSTANCES 16
    MAXLOGHISTORY 1752
LOGFILE
  GROUP 1 (
    'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0101.LOG',
    'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0102.LOG'
  ) SIZE 10M,
  GROUP 2 (
    'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0201.LOG',
    'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0202.LOG'
  ) SIZE 10M,
  GROUP 3 (
    'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0301.LOG',
    'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0302.LOG'
  ) SIZE 10M
-- STANDBY LOGFILE
DATAFILE
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\SYSTEM01.DBF',
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\UNDO01.DBF',
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\SYSAUX01.DBF',
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\USERS01.DBF',
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\TEST01.DBF'
CHARACTER SET ZHS16GBK
;
 
 9.开启数据库:alter database open resetlogs;   创建出current状态的重做日志文件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值