oracle控制文件损坏的恢复过程记录

曾经做过一些测试,在启动或关闭数据库的情况下删除了控制文件,由于这个数据库只是我自己使用的测试数据库,当时也没有在意去恢复。

今天想启动这个数据库的时候就碰到了问题:

[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

时间: 2024-08-31 23:35:47

oracle控制文件损坏的恢复过程记录的相关文章

所有控制文件损坏的恢复--resetlogs方式

        此方式和 所有控制文件损坏的恢复--noresetlogs方式恢复时的前五个步骤是一样的. 1)先备份控制文件            SQL> alter database backup controlfile to 'f:\lib\control.ctl' reuse;数据库已更改.2)生成跟踪文件. SQL> alter database backup controlfile to trace;数据库已更改.SQL> @f:\sql\gettrace.sql---一个

所有控制文件损坏的恢复--noresetlogs方式

       所有控制文件损坏,或者人为的删除了所有的控制文件,通过控制文件的复制已经不能解决问题,这个时候需要重新建立控制文件.同时注意,alter database backup control file to trace可以产生一个控制文件的文本备份. 1)先备份控制文件             SQL> alter database backup controlfile to 'f:\lib\control.ctl' reuse;数据库已更改.2)生成跟踪文件. SQL> alter

单个控制文件损坏的恢复

        损坏单个控制文件是比较容易恢复的,因为数据库系统,控制文件都不是一个,而且所有的控制文件都互为镜像,只要拷贝一个好的控制文件替换坏的控制文件就可以.实验如下: 1) 查看系统的控制文件 SQL> select name from v$controlfile;NAME                                                                            ---------------------------------

Oracle控制文件损坏

现象是系统无法登录,任何用户都不行,怀疑数据库有问题,进入服务器,运行sqlplus username/password,无法进入数据库,提示输入用户名. 重启数据库,报控制文件control01.ctl有错,由于Oracle控制文件都是镜像的,因此先试着拷贝control03.ctl 覆盖control01.ctl,提示无法覆盖. 输入命令:sqlplus / as sysdba进入数据库,用命令shutdown immediate关闭数据库,然后将control01.ctl 重命名为cont

Oracle 控制文件(CONTROLFILE)

--============================= -- Oracle 控制文件(CONTROLFILE) --=============================   一.Oracle 控制文件         为二进制文件,初始化大小由CREATE DATABASE指定,可以使用RMAN备份         记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等         在参数文件中描述其位置,个数等等.通常采用分散放开,多路复用

数据库文件损坏的恢复方法

  说明如下:SQL Server 2000文件损坏的恢复 1.建一个测试数据库test(数据库类型为完全). 2.建一个表,插入点记录. create table a(c1 varchar(2)) go insert into a values('aa') go insert into a values('bb') go 3.作完全备份,到文件test_1.bak. 4.在作一点修改. insert into a values('cc') go create table b(c1 int) g

oracle,控制文件的重建必须是在nomount的状态下进行?

问题描述 oracle,控制文件的重建必须是在nomount的状态下进行? oracle,控制文件的重建必须是在nomount的状态下进行

oracle中exp dmp文件损坏怎么恢复

创建exp dmp文件并使用dd破坏  代码如下 复制代码 SQL> create table t_xifenfei as select * from dba_objects; Table created. SQL> select count(*) from t_xifenfei;   COUNT(*) ----------      90915 [oracle@localhost ~]$ exp chf/xifenfei@pdb1 file=/tmp/t_xifenfei.dmp table

oracle 11g RMAN异机恢复过程

原库确定数据文件,日志文件,tempfile 文件信息 select group#,status,type, member from v$logfile; col name format a65 select file#,name,bytes/1024/1024 MB from v$datafile; select name from v$controlfile; 1.创建实例 oradim (命令行下包含多种可选项,可自行选择) oradim -new -sid maxld 在已有数据库运行的