一
2)数据库用spfile启动的情况下,spfile文件丢失
a,存在init.ora参数文件的备份,可以用pfile直接启动,也可以用pfile创建spfile,然后用spfile启动
直接用pfile启动
startup pfile=’ D:oracleadminmyoraclepfileinit.ora’
重新创建spfile,用spfile启动
create spfile from pfile=’ D:oracleadminmyoraclepfileinit.ora’
startup
b,没有init备份的情况下,可以从其他数据库拷贝一个init.ora的备份,修改相关参数即可。修改的恢复方法就和存在init.ora参数文件的备份的spfile丢失的恢复方法一致了。
3)数据库是用pfile启动的情况下,init.ora丢失
SQL> startup pfile='d:oracleadminmyoraclepfileinit.ora'
LRM-00109:无法打开参数文件'd:oracleadminmyoraclepfileinit.ora'
ORA-01078:处理系统参数失败
a,如果存在init.ora的备份,拷备到相关目录下即可(实例的启动参数目录)
b,如果不存在init.ora的备份可以从其他数据库拷贝一个init.ora的备份,修改相关参数即可。
2,参数文件设置出错
如果数据库的spfile(用spfile启动)或pfile(用pfile启动),里面的参数设置出错。主要是pfile的参数,因为如果使用spfile的话,设置参数的时候都会有存在一个有效性的检查,一般不会出现参数设置出错的问题。数据库会给出相关的错误提示,告诉你是哪个参数设置的有问题,只要修改相关参数后重新启动数据库即可。
3,控制文件损坏或丢失
a,单一控制文件损坏或丢失。一般来说控制文件都会存在镜像的,如果单一控制文件损坏数据库会报以下错误:
SQL> startup nomount force
ORACLE instance started.
Total System Global Area135338868 bytes
Fixed Size453492 bytes
Variable Size109051904 bytes
Database Buffers25165824 bytes
Redo Buffers667648 bytes
SQL> alter database mount ;
alter database mount
*
ERROR at line 1:
ORA-00205: error in identifying controlfile, check alert log for more info
这个时候我们检查alert log文件,会发现以下错误
ORA-00202: controlfile: 'D:oracleoradatamyoracleCONTROL01.CTL'
ORA-27047: unable to read the header block of file
OSD-04006: ReadFile()失败,无法读取文件
O/S-Error: (OS 38)到达文件结尾。
由此可以知道control01文件已经损坏。由于一般来说控制文件存在镜像,只要我们将其他完好的控制文件拷备一份覆盖损坏或丢失的控制文件即可。也可以在初始化参数control_files中的相应的损坏的控制文件删除即可。
b,全部控制文件损坏或者丢失
1,存在控制文件的备份,将备份的控制文件按照初始化参数的配置来设置。然后进行控制文件的恢复。
Startup nomount;
Revocer database using backup controlfile;
然后选择相应的日志文件进行恢复
最后必须要以resetlogs的方式打开数据库
alter database open resetlogs;
2,不存在控制文件的备份。这种情况下只能重建控制文件。
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "MYORACLE" NORESETLOGSNOARCHIVELOG
--SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 50
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 226
LOGFILE
GROUP 1 'D:ORACLEORADATAMYORACLEREDO01.LOG'SIZE 100M,
GROUP 2 'D:ORACLEORADATAMYORACLEREDO02.LOG'SIZE 100M,
GROUP 3 'D:ORACLEORADATAMYORACLEREDO03.LOG'SIZE 100M
-- STANDBY LOGFILE
DATAFILE
'D:ORACLEORADATAMYORACLESYSTEM01.DBF',
'D:ORACLEORADATAMYORACLEUNDOTBS01.DBF',
'D:ORACLEORADATAMYORACLECWMLITE01.DBF',
'D:ORACLEORADATAMYORACLEDRSYS01.DBF',
'D:ORACLEORADATAMYORACLEEXAMPLE01.DBF',
'D:ORACLEORADATAMYORACLEINDX01.DBF',
'D:ORACLEORADATAMYORACLEODM01.DBF',
'D:ORACLEORADATAMYORACLETOOLS01.DBF',
'D:ORACLEORADATAMYORACLEUSERS01.DBF',
'D:ORACLEORADATAMYORACLEXDB01.DBF',
'D:ORACLEORADATAMYORACLESUNWG.DBF',
'D:ORACLEORADATAMYORACLEXT_YJYY.DBF',
'D:ORACLEORADATAMYORACLEXT_DD.DBF'
CHARACTER SET ZHS16GBK
;
ALTER DATABASE OPEN;;
4,日志文件
a,非当前日志
alter database clear logfile group 1;
b,当前日志
recover database until cancel;
alter database open resetlogs;
c,回滚段有未提交的事务
_allow_resetlogs_corruption = true
5,数据文件
a,如果存在备份的话,可以将所有的备份文件拷贝回来,打开即可
b,如果没有备份文件,只能将该数据文件删掉
alter database datafile ‘e:ttt.dbf’ offline drop;