如果自己搞不定可以找诗檀软件专业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
启动实例,工作完成。
工作完成后不要忘记获得备份
Leave a Reply