Oracle 控制文件的recovery mirroring的一部分出现故障的情况(for Windows)

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

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

服务热线 : 13764045638    QQ号:47079569    邮箱:[email protected]

 

[概要]

本文主要介绍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

 

启动实例,工作完成。

工作完成后不要忘记获得备份

 


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *