只有数据文件恢复数据库

数据库盘阵挂了,数据库软件、数据库日志文件、控制文件以及备份都放在挂的这个磁盘,到最后什么文件都没有,只剩下数据文件!!
恢复步骤:这是oracle10G+linux5 的环境,其他版本步骤一样,区别就在参数文件相关参数而已!
1、安装数据库软件:这个就不说了。。。安装的时候最好保持所在的目录、ORACLE_SID,   以及数据库名和原来数据库一样!这样避免很多麻烦
2、创建一个pfile,建一个空实例
参数文件如下:注意创建参数文件中的相关目录
[ dbs]$ cat initabc.ora 
*.audit_file_dest=‘/u01/oracle/admin/abc/adump‘
*.background_dump_dest=‘/u01/oracle/admin/abc/bdump‘
*.user_dump_dest=‘/u01/oracle/admin/abc/udump‘
*.core_dump_dest=‘/u01/oracle/admin/abc/cdump‘
*.compatible=‘10.2.0.1.0‘
*.db_name=‘abc‘
*.sga_target=300M
指定参数文件启动数据库到nomount
SQL> startup nomount pfile=‘$ORACLE_HOME/dba/initabc.ora‘;

ORACLE 例程已经启动。
Total System Global Area  535662592 bytes
Fixed Size                  1375792 bytes
Variable Size             272630224 bytes
Database Buffers          255852544 bytes
Redo Buffers                5804032 bytes
SQL>3、创建控制文件,现在只有数据文件,可以从其他正常的数据库生成控制文件的创建脚本进行修改,且以RESETLOGS open数据库
SQL> alter database backup controlfile to trace as ‘/home/oracle/control.sql‘;
cat /home/oracle/control.sql
CREATE CONTROLFILE REUSE DATABASE "abc" RESETLOGS  ARCHIVELOG
--  SET STANDBY TO MAXIMIZE PERFORMANCE
    MAXLOGFILES 5
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 1
    MAXLOGHISTORY 453
LOGFILE-------------------日志文件可以没有
  GROUP 1 ‘/data/oradata/redo01.log‘  SIZE 100M,
  GROUP 2 ‘/data/oradata/redo02.log‘  SIZE 100M,
  GROUP 3 ‘/data/oradata/redo03.log‘  SIZE 100M
-- STANDBY LOGFILE
DATAFILE
  ‘/data/oradata/system01.dbf‘,
  ‘/data/oradata/undotbs01.dbf‘,
    . 
    .
    .(数据文件太多了,就不写了,这里就是存放的数据文件的位置)
CHARACTER SET ZHS16GBK  ----------------字符集的设置,这个看实际情况 不要也可以的!
;

创建完成后数据库自动启动到mount
open数据库:
alter database open resetlogs;
这样基本就完成恢复了,可能需要重建一下临时表空间,因为控制文件里面是不记录临时表的信息的,如果临时表数据文件还在,reuser一下就OK

alter tablespace temp add tempfile ‘/data/oradata/temp1.dbf‘  reuse;

相关推荐