部分控制文件损坏

(一)对原有的控制文件做删除操作,模拟部分控制文件损坏

SQL> select name from v$controlfile;

SQL> shutdown immediate

将控制文件“control03.ctl”删除

SQL> startup

ORACLE 例程已经启动。

提示信息:

Total System Global Area  285212672 bytes

Fixed Size                  1248552 bytes

Variable Size              83886808 bytes

Database Buffers          192937984 bytes

Redo Buffers                7139328 bytes

ORA-00205: ?????????, ??????, ???????

SQL>altersystem set  control_files='E:\oracle\product\10.2.0\oradata\yanshu\control01.ctl',  'E:\oracle\product\10.2.0\oradata\yanshu\control02.ctl'  scope=spfile;

SQL> shutdown

SQL> startup

SQL> select name from v$controlfile;

SQL> shutdown

SQL> startup

SQL>altersystem set  control_files='E:\oracle\product\10.2.0\oradata\yanshu\control01.ctl',  'E:\oracle\product\10.2.0\oradata\yanshu\control02.ctl', 'E:\oracle\product\10.2.0\oradata\yanshu\control03.ctl'  scope=spfile;

SQL> shutdown

将“control02.ctl”复制一份改成“control03.ctl”,然后重新启动数据库。

SQL> startup

(二)新增一个控制文件,然后做删除操作,模拟部分控制文件损坏:

1SQL>altersystem set  control_files='D:\control04.ctl','E:\oracle\product\10.2.0\oradata\yanshu\control01.ctl',  'E:\oracle\product\10.2.0\oradata\yanshu\control02.ctl','E:\oracle\product\10.2.0\oradata\yanshu\control03.ctl'  scope=spfile; (在open状态下操作:)

提示信息:

系统已更改(可以查看动态参数文件“E:\oracle\product\10.2.0\db_1\dbs\SPFILEDOG.ora”)。

2SQL> shutdown immediate

复制控制文件“E:\oracle\product\10.2.0\oradata\yanshu\control01.ctl”到d盘根目录下并改名为:control04.ctl,然后启动数据库。

3SQL> startup

4SQL> show parameter spfile;

5SQL> select name from v$controlfile;

6SQL> shutdown immediate

删除文件“'D:\control04.ctl”,然后启动数据库,看看出现什么现象:

7SQL> startup

8SQL> startup

提示信息:

ORACLE 例程已经启动。

Total System Global Area  285212672 bytes

Fixed Size                  1248552 bytes

Variable Size              71303896 bytes

Database Buffers          205520896 bytes

Redo Buffers                7139328 bytes

ORA-00205: ?????????, ??????, ???????(这是错误提示信息)

查看跟踪文件“D:\oracle\product\10.2.0\admin\dog\bdump\alert_dog”,看错误原因。

错误原因提示信息:

ALTER DATABASE   MOUNT

Thu Apr 14 08:15:17 2011

ORA-00202: control file: 'D:\CONTROL01.CTL'

ORA-27041: unable to open file

OSD-04002: 无法打开文件

O/S-Error: (OS 2) 系统找不到指定的文件。

9.解决办法:重新修改初始化参数文件中“control_files”的设置,把删除的文件项目去掉,然后再关闭重新启动就可以了:

SQL>altersystem set  control_files='E:\oracle\product\10.2.0\oradata\yanshu\control01.ctl',  'E:\oracle\product\10.2.0\oradata\yanshu\control02.ctl','E:\oracle\product\10.2.0\oradata\yanshu\control03.ctl'  scope=spfile;

10SQL> shutdown immediate

11SQL> startup