曾经做过一些测试,在启动或关闭数据库的情况下删除了控制文件,由于这个数据库只是我自己使用的测试数据库,当时也没有在意去恢复。
今天想启动这个数据库的时候就碰到了问题:
[oracle@bjtest ~]$ sqlplus "/ as sysdba"
SQL*Plus: Release9.2.0.4.0 - Production on星期三6月3 01:47:42 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
已连接到空闲例程。
SQL> startup
ORACLE例程已经启动。
Total System Global Area 9432971568 bytes
Fixed Size 756016 bytes
Variable Size 838860800 bytes
Database Buffers 8589934592 bytes
Redo Buffers 3420160 bytes
ORA-00214: ???? '/data/oradata/bjtest/control01.ctl' ?? 6178246 ???
'/data/oradata/bjtest/control02.ctl' ?? 6178204 ???
看到这个错误,马上想到了前两天做的那个测试。不过当时具体的测试细节已经记不清了,只是记得删除过控制文件。
这个错误显然就是两个控制文件不一致,那么只需要覆盖错误的控制文件就可以了。
SQL> host
[oracle@bjtest ~]$ cd /data/oradata/bjtest/
[oracle@bjtest bjtest]$ cp control01.ctl control02.ctl
[oracle@bjtest bjtest]$ exit
exit
SQL> alter database mount;
alter database mount
*
ERROR位于第1行:
ORA-00214: ???? '/data/oradata/bjtest/control01.ctl' ?? 6178246 ???
'/data/oradata/bjtest/control03.ctl' ?? 6178204 ???
覆盖了控制文件control02.ctl后,发现控制文件1和控制文件3也是不一致的,莫非出问题的控制文件是control01.ctl。刚才是凭印象觉得control02.ctl有问题,这次不能再凭印象了,为了避免丢失真正的控制文件,先对控制文件进行备份:
SQL> exit
从Oracle9i Enterprise Edition Release9.2.0.4.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production中断开
[oracle@bjtest ~]$ cd /data/oradata/bjtest/
[oracle@bjtest bjtest]$ cp control03.ctl control03.bak
[oracle@bjtest bjtest]$ cp control01.ctl control01.bak
[oracle@bjtest bjtest]$ cp control03.ctl control01.ctl
再次尝试加载控制文件:
[oracle@bjtest ~]$ sqlplus "/ as sysdba"
SQL*Plus: Release9.2.0.4.0 - Production on星期三6月3 01:49:45 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
连接到:
Oracle9i Enterprise Edition Release9.2.0.4.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
SQL> alter database mount;
alter database mount
*
ERROR位于第1行:
ORA-00214: ???? '/data/oradata/bjtest/control02.ctl' ?? 6178246 ???
'/data/oradata/bjtest/control01.ctl' ?? 6178204 ???
仍然报错,想想也是,由于控制文件control02.ctl已经被控制文件control01.ctl覆盖过,因此刚才的拷贝并不彻底。
SQL> exit
从Oracle9i Enterprise Edition Release9.2.0.4.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production中断开
[oracle@bjtest ~]$ cd /data/oradata/bjtest/
[oracle@bjtest bjtest]$ cp control01.ctl control02.ctl
[oracle@bjtest bjtest]$ sqlplus "/ as sysdba"
SQL*Plus: Release9.2.0.4.0 - Production on星期三6月3 01:50:32 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
本文URL地址:http://www.bianceng.cn/database/Oracle/201410/45541.htm