oracle恢复

来源:互联网 发布:ubuntu 软件安装位置 编辑:程序博客网 时间:2024/05/21 03:56
一,    非归档模式
1,    参数文件丢失
1)    数据库是用spfile启动的情况下,init.ora丢失,不会对数据库的启动产生任何影响,不过为了安全考虑,应该重新创建init.ora,作为spfile的备份。
create pfile = 'D:\oracle\admin\myoracle\pfile\init.ora' from spfile;
2)    数据库用spfile启动的情况下,spfile文件丢失
a,    存在init.ora参数文件的备份,可以用pfile直接启动,也可以用pfile创建spfile,然后用spfile启动
直接用pfile启动
startup pfile=’ D:\oracle\admin\myoracle\pfile\init.ora’
重新创建spfile,用spfile启动
create spfile from pfile=’ D:\oracle\admin\myoracle\pfile\init.ora’
startup
b,    没有init备份的情况下,可以从其他数据库拷贝一个init.ora的备份,修改相关参数即可。修改的恢复方法就和存在init.ora参数文件的备份的spfile丢失的¢复方法一致了。
3)    数据库是用pfile启动的情况下,init.ora丢失
SQL> startup pfile='d:\oracle\admin\myoracle\pfile\init.ora'
LRM-00109: 无法打开参数文件 'd:\oracle\admin\myoracle\pfile\init.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 Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 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:\oracle\oradata\myoracle\CONTROL01.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" NORESETLOGS  NOARCHIVELOG
--  SET STANDBY TO MAXIMIZE PERFORMANCE
    MAXLOGFILES 50
    MAXLOGMEMBERS 5
    MAXDATAFILES 100
    MAXINSTANCES 1
    MAXLOGHISTORY 226
LOGFILE
  GROUP 1 'D:\ORACLE\ORADATA\MYORACLE\REDO01.LOG'  SIZE 100M,
  GROUP 2 'D:\ORACLE\ORADATA\MYORACLE\REDO02.LOG'  SIZE 100M,
  GROUP 3 'D:\ORACLE\ORADATA\MYORACLE\REDO03.LOG'  SIZE 100M
-- STANDBY LOGFILE
DATAFILE
  'D:\ORACLE\ORADATA\MYORACLE\SYSTEM01.DBF',
  'D:\ORACLE\ORADATA\MYORACLE\UNDOTBS01.DBF',
  'D:\ORACLE\ORADATA\MYORACLE\CWMLITE01.DBF',
  'D:\ORACLE\ORADATA\MYORACLE\DRSYS01.DBF',
  'D:\ORACLE\ORADATA\MYORACLE\EXAMPLE01.DBF',
  'D:\ORACLE\ORADATA\MYORACLE\INDX01.DBF',
  'D:\ORACLE\ORADATA\MYORACLE\ODM01.DBF',
  'D:\ORACLE\ORADATA\MYORACLE\TOOLS01.DBF',
  'D:\ORACLE\ORADATA\MYORACLE\USERS01.DBF',
  'D:\ORACLE\ORADATA\MYORACLE\XDB01.DBF',
  'D:\ORACLE\ORADATA\MYORACLE\SUNWG.DBF',
  'D:\ORACLE\ORADATA\MYORACLE\XT_YJYY.DBF',
  'D:\ORACLE\ORADATA\MYORACLE\XT_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;
0 0
原创粉丝点击