如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638    QQ号:47079569    邮箱:service@parnassusdata.com

  [概要] 本文主要介绍Windows平台上的oracle数据库,镜像化的控制文件一部分损坏时的修复方法。   ・ 控制文件已镜像化,但一部分发生了损坏  --> Document 1723976.1(KROWN#71181) へ ・ 所有控制文件均已损坏--> Document 1724071.1(KROWN#71490)  へ   ※是否镜像化,在初始化参数文件中,类似 ---- control_files='D:\o920\oradata\ora9204\control01.ctl','D:\o920\oradata\ora9204\control02.ctl'一样,指定多个文件的话就可以实现镜像化。   [目标版本] Oracle7 Server/Oracle7 Workgroup Server  7.x Oracle8 Enterprise Edition/Oracle8 Standard Edition 8.0.x Oracle8i Enterprise Edition/Oracle8i Standard Edition 8.1.x Oracle9i Database Release1 (9.0.1.x) Oracle9i Database Release2 (9.2.x)   [目标平台] Windows   [修复对策] 控制文件损坏时,可能是发生了以下几种错误。 ---- ORA-00202: controlfile: 'D:\o920\oradata\ora9204\control01.ctl' ORA-27041: unable to open file OSD-04002: 无法启动文件 O/S-Error: (OS 2) 无法找到指定的文件。 ----   虽然已镜像化,但不知道是哪个控制文件损坏时[修复对策A]   已镜像化,并知道哪个控制文件损坏时。 [修复对策B] へ     [修复对策A] 虽然已镜像化,但不知道是哪个控制文件损坏时 假设环境如下所示: $ORACLE_HOME              D:\o920 $ORACLE_SID               ora9204   A-1) shutdown abort 实例。 (控制文件损坏时,无法执行 shutdown normal)   SQL> shutdown abort ORACLE实例崩溃。   A-2)输出错误的控制文件从初始化参数文件的队列中被排除了。由此,就无法找到损坏的控制文件了。     例: ---- ORA-00202: controlfile: 'D:\o920\oradata\ora9204\control01.ctl'<-- ORA-27041: unable to open file OSD-04002: 无法启动文件 O/S-Error: (OS 2) 无法找到指定文件。 ----   $ORACLE_HOME\database 以下的 initora9204.ora 中的队列   变更前: control_files='D:\o920\oradata\ora9204\control01.ctl', 'D:\o920\oradata\ora9204\control02.ctl', 'D:\o920\oradata\ora9204\control03.ctl' 变更后: control_files='D:\o920\oradata\ora9204\control02.ctl', 'D:\o920\oradata\ora9204\control03.ctl'   A-3)启动实例。   如果能成功启动实例的话就没问题了。 ---- SQL> startup 启动ORACLE实例。 Total System Global Area  135339844 bytes Fixed Size                   454468 bytes Variable Size             109051904 bytes Database Buffers           25165824 bytes Redo Buffers                 667648 bytes Mount数据库完成。 数据库启动完成。 ----   实例启动完成的话就OK了。 完成后为了避免同样的错误,请制作备份。   A-4)实例启动失败的情况 启动失败时,输出以下错误。   ---- SQL> startup ORACLE instance started. Total System Global Area  135339844 bytes Fixed Size                   454468 bytes Variable Size             109051904 bytes Database Buffers           25165824 bytes Redo Buffers                 667648 bytes ORA-00205: error in identifying controlfile, check alert log for more info ----   如果发现有警报的话就会输出以下错误。 ---- ORA-00202: controlfile: 'D:\o920\oradata\ora9204\control02.ctl' ORA-27041: unable to open file OSD-04002: 无法启动文件 O/S-Error: (OS 2) 找不到指定文件。 ----   这时,因为control02.ctl 也损坏了,所以无法启动实例。请重复A-2与 A-3的操作,查看到底是哪个控制文件无法启动。 如果指定任何文件都无法启动请查看 Document 1724071.1(KROWN#71490)。     [对策B] 已镜像化,但知道是哪个控制文件损坏的情况。   假设环境如下所示: $ORACLE_HOME              D:\o920 $ORACLE_SID               ora9204   B-1) shutdown abort实例。 (控制文件损坏时无法执行 shutdown normal)   B-2)将没有损坏的的控制文件复制到损坏的控制文件中。   已损坏的控制文件   :'D:\o920\oradata\ora9204\control01.ctl' 没有损坏的控制文件:'D:\o920\oradata\ora9204\control02.ctl'   C:\>copy D:\o920\oradata\ora9204\CONTROL02.CTL D:\o920\oradata\ora9204\CONTROL01.CTL 复制一个文件。   B-3)查看初始化参数文件 查看B-2)中复制完成的控制文件是否已被指定。   B-4)启动实例。   实例启动完成,如果实例能正常启动就没有问题。 以防万一还是应该查看是否完成镜像化。   SQL> select name from v$controlfile; NAME -------------------------------------------------- D:\O920\ORADATA\ORA9204\CONTROL01.CTL D:\O920\ORADATA\ORA9204\CONTROL02.CTL D:\O920\ORADATA\ORA9204\CONTROL03.CTL   启动实例,工作完成。 工作完成后不要忘记获得备份