控制文件记录ORACLE数据库的物理结构。如果关闭的时候丢失控制文件,数据库将不会被MOUNT,更不用说打开了。但是如果在运行过程中控制
文件全部被删除,ORACLE数据库将会ABORT。如果控制文件没有全部丢失,只要有一个可以用,数据库就可以继续运行。但是如果丢失了初始化
参数control_files 列出的第一个文件(主控制文件),其他的还存在,哪么对于控制文件的写操作没什么问题,但是涉及到数据库的读操作,ORACLE将会报
错。
如下所示:
SQL> SHOW PARAMETER CONTROL_FILES
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/oradata/YSP/control01.ctl
, /u01/oradata/YSP/control02.c
tl, /u01/oradata/YSP/control03
.ctl
SQL> ! ls -lh /u01/oradata/YSP/*.ctl
-rw-r----- 1 oracle oinstall 6.8M May 12 23:52 /u01/oradata/YSP/control02.ctl
可以看到控制文件只有一个了,并且初始化参数列出的第一个控制文件已丢失。
执行以下日志切换(日志的切换,会将当前的日志归档,并且将归档的文件名记录在控制文件中。)
SQL> ALTER SYSTEM SWITCH LOGFILE;
System altered.,
执行以下控制文件的读操作:
SQL> SELECT * FROM V$DATABASE;
SELECT * FROM V$DATABASE
*
ERROR at line 1:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/oradata/YSP/control01.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
可以看到数据库报错了。
由于ORACLE在读取控制文件的时候,只读CONTROL_FILES列出的第一个文件,所以删除这个文件,会导致读失败,即使其他文件还存在。
此时,数据库都不能正常关闭
SQL> SHUTDOWN IMMEDIATE;
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/oradata/YSP/control01.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
我们只能强制关闭数据库
SQL> SHUTDOWN ABORT;
ORACLE instance shut down.
还原丢失的控制文件
[oracle@node2 ~]$ cp /u01/oradata/YSP/control02.ctl /u01/oradata/YSP/control01.ctl
[oracle@node2 ~]$ cp /u01/oradata/YSP/control02.ctl /u01/oradata/YSP/control03.ctl
重新启动数据库。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16162908/viewspace-594913/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/16162908/viewspace-594913/