步行者 2020-01-06
数据库盘阵挂了,数据库软件、数据库日志文件、控制文件以及备份都放在挂的这个磁盘,到最后什么文件都没有,只剩下数据文件!! 恢复步骤:这是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;