ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 在只有数据文件和控制文件的情况下恢复数据库

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

原创 Linux操作系统 作者:zhujiancomnet 时间:2012-03-30 23:30:49 0 删除 编辑
一:情景再现,假设我的数据库是实例为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状态的重做日志文件。

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

上一篇: 没有了~
下一篇: oracle闪回实验
请登录后发表评论 登录
全部评论

注册时间:2012-03-30

  • 博文量
    2
  • 访问量
    1538