控制文件丢失了,需要DBA处理。
    1,控制文件大小不对。  将正常的cp给不正常的。指定正确的来运行。
    2,控制文件版本不对   千万要记住要先cp全部的控制文件备份后在来cp
    3,控制文件某个丢失,至少存在一个
    4,控制文件都丢失,
    5,有但是很old

1,控制文件大小不对。
下面我们修给一个控制文件的内容使大小不一样。
[oracle@huang ~]$ vim /sof/oracle/oradata/orcl/control01.ctl
SQL> shutdown immediate;
ORA-00227: corrupt block detected in control file: (block 1, # blocks 1)
ORA-00202: control file: '/sof/oracle/oradata/orcl/control01.ctl'
SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 1090519040 bytes
Fixed Size                  1267020 bytes
Variable Size             704645812 bytes
Database Buffers          369098752 bytes
Redo Buffers               15507456 bytes
ORA-00205: error in identifying control file, check alert log for more info
这里提示了控制文件有错误。
SQL> show parameter control_f

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7
control_files                        string      /sof/oracle/oradata/orcl/contr
                                                 ol01.ctl, /sof/oracle/oradata/
                                                 orcl/control02.ctl, /sof/oracl
                                                 e/oradata/orcl/control03.ctl
SQL> ho ls -l /sof/oracle/oradata/orcl/  这里我们查看到日志文件中,有两个大小一样,说明这两个是正常的。
total 1536352
-rw------- 1 oracle oinstall   7110639 Jan  4 16:00 control01.ctl
-rw------- 1 oracle oinstall   7389184 Jan  4 16:01 control02.ctl
-rw------- 1 oracle oinstall   7389184 Jan  4 16:01 control03.ctl
SQL> ho cp /sof/oracle/oradata/orcl/control01.ctl /sof/oracle/oradata/orcl/control01.ct.bak

SQL> ho cp /sof/oracle/oradata/orcl/control02.ctl /sof/oracle/oradata/orcl/control01.ctl

SQL> shutdown immediate;
ORA-01507: database not mounted

ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 1090519040 bytes
Fixed Size                  1267020 bytes
Variable Size             704645812 bytes
Database Buffers          369098752 bytes
Redo Buffers               15507456 bytes
Database mounted.
Database opened.
现在数据库就能正常的运行了。

2,控制文件版本不对
SQL> startup
ORACLE instance started.

Total System Global Area 1090519040 bytes
Fixed Size                  1267020 bytes
Variable Size             704645812 bytes
Database Buffers          369098752 bytes
Redo Buffers               15507456 bytes
Database mounted.
Database opened.
SQL> alter system set control_files='/sof/oracle/oradata/orcl/control02.ctl' scope=spfile;

System altered.

Database opened.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 1090519040 bytes
Fixed Size                  1267020 bytes
Variable Size             704645812 bytes
Database Buffers          369098752 bytes
Redo Buffers               15507456 bytes
Database mounted.
Database opened.
SQL> show parameter control_f

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7
control_files                        string      /sof/oracle/oradata/orcl/contr
                                                 ol02.ctl
SQL> alter system set control_files='/sof/oracle/oradata/orcl/control02.ctl','/sof/oracle/oradata/orcl/control01.ctl','/sof/oracle/oradata/orcl/control03.ctl'  scope=spfile;

System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 1090519040 bytes
Fixed Size                  1267020 bytes
Variable Size             704645812 bytes
Database Buffers          369098752 bytes
Redo Buffers               15507456 bytes
ORA-00214: control file '/sof/oracle/oradata/orcl/control02.ctl' version 1036
inconsistent with file '/sof/oracle/oradata/orcl/control01.ctl' version 1020
现在就提示了控制文件的版本好不一致的问题。注意提示的版本号那个更高。
SQL> ho cp /sof/oracle/oradata/orcl/control01.ctl /sof/oracle/oradata/orcl/control01.ctl.bak

SQL> ho cp /sof/oracle/oradata/orcl/control02.ctl /sof/oracle/oradata/orcl/control01.ctl
SQL> startup
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL> shutdown immediate;
ORA-01507: database not mounted

ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 1090519040 bytes
Fixed Size                  1267020 bytes
Variable Size             704645812 bytes
Database Buffers          369098752 bytes
Redo Buffers               15507456 bytes
ORA-00214: control file '/sof/oracle/oradata/orcl/control02.ctl' version 1036
inconsistent with file '/sof/oracle/oradata/orcl/control03.ctl' version 1020

SQL> ho cp /sof/oracle/oradata/orcl/control03.ctl /sof/oracle/oradata/orcl/control03.ctl.bak

SQL> ho cp /sof/oracle/oradata/orcl/control02.ctl /sof/oracle/oradata/orcl/control03.ctl

SQL> startup
ORACLE instance started.

Total System Global Area 1090519040 bytes
Fixed Size                  1267020 bytes
Variable Size             704645812 bytes
Database Buffers          369098752 bytes
Redo Buffers               15507456 bytes
Database mounted.
Database opened.
上面就说明成了。

4,控制文件都丢失,
5,有但是很old

SQL> alter database backup controlfile to trace as '/tmp/luo.txt'
  2  ;

Database altered.
得到建立日志文件的脚本,以后我们数据库建好后就要做。
下面就是重建控制文件。

千万记住下面这个命令。
如果控制文件全部丢失,版本过老,在我们重建控制文件之前需要备份故障的状态。

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
[oracle@huang ~]$ cp /sof/oracle/oradata/orcl/ /sof/oracle/oradata/orcl.bak -rf
[oracle@huang ~]$ rm /sof/oracle/oradata/orcl/control0* -rf
[oracle@huang ~]$ ls /sof/oracle/oradata/orcl
orcl/     orcl.bak/ 
[oracle@huang ~]$ ls /sof/oracle/oradata/orcl
orcl/     orcl.bak/ 
[oracle@huang ~]$ ls /sof/oracle/oradata/orcl/
example01.dbf  redo02.log  sysaux01.dbf  temp01.dbf     users01.dbf
redo01.log     redo03.log  system01.dbf  undotbs01.dbf

[oracle@huang ~]$ sqlplus / as sysdba
[uniread] Loaded history (945 lines)

SQL*Plus: Release 10.2.0.4.0 - Production on Mon Jan 4 16:57:00 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 1090519040 bytes
Fixed Size                  1267020 bytes
Variable Size             704645812 bytes
Database Buffers          369098752 bytes
Redo Buffers               15507456 bytes
ORA-00205: error in identifying control file, check alert log for more info

去除所有的--和空格行,和开头的空格。

[oracle@huang ~]$ grep -v ^-- /tmp/luo.txt|grep -v ^$ >/tmp/luo1.txt
[oracle@huang ~]$ vim /tmp/luo1.txt
[oracle@huang ~]$ sed -n '1,23'p /tmp/luo1.txt >/tmp/luo2.txt
截取下面两行和之间的内容。注意是下面行是第一次出现的时候
STARTUP NOMOUNT
..................
SIZE 30408704  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

[oracle@huang ~]$ sed -i 's/^ //' /tmp/luo2.txt
[oracle@huang ~]$ sed -i 's/^ //' /tmp/luo2.txt
[oracle@huang ~]$ sed -i 's/^ //' /tmp/luo2.txt
[oracle@huang ~]$ sed -i 's/^ //' /tmp/luo2.txt
[oracle@huang ~]$ sed -i 's/^ //' /tmp/luo2.txt
[oracle@huang ~]$ vim /tmp/luo2.txt 
确定时候空格和--开头的行就删除了。

SQL> shutdown abort;
ORACLE instance shut down.
SQL> @/tmp/luo2.txt 我们运行刚才的那个脚本就可以重新的建立起控制文件
ORACLE instance started.

Total System Global Area 1090519040 bytes
Fixed Size                  1267020 bytes
Variable Size             704645812 bytes
Database Buffers          369098752 bytes
Redo Buffers               15507456 bytes

Control file created.

Media recovery complete.

Database altered.

Tablespace altered.

SQL> ho ls /sof/oracle/oradata/orcl/
control01.ctl  example01.dbf  redo03.log     temp01.dbf     
control02.ctl  redo01.log     sysaux01.dbf   undotbs01.dbf  
control03.ctl  redo02.log     system01.dbf   users01.dbf

上面就是控制文件的几种恢复方法。

本文转自7343696 51CTO博客,原文链接:http://blog.51cto.com/luoping/256302,如需转载请自行联系原作者

oracle控制文件的损坏或完全丢失的恢复办法相关推荐

  1. oracle控制文件修复,oracle控制文件的损坏或完全丢失的恢复办法

    控制文件丢失了,需要DBA处理. 1,控制文件大小不对.  将正常的cp给不正常的.指定正确的来运行. 2,控制文件版本不对   千万要记住要先cp全部的控制文件备份后在来cp 3,控制文件某个丢失, ...

  2. oracle控制文件

    控制文件是数据库里面非常重要的一类文件,它记录了当前实例连接的数据库的结构和行为,并维护数据库的一致性.  初始化参数文件中描述其位置,很小的:二进制文件,一般不要超过100mmount读open一直 ...

  3. oracle 控制文件在哪里设置_从Oracle到PostgreSQL:最全控制文件

    原文: 从Oracle到PostgreSQL:最全控制文件(上) https://www.enmotech.com/web/detail/1/770/1.html 从Oracle到PostgreSQL ...

  4. 复用Oracle数据文件,Oracle控制文件的备份、恢复以及多路复用

    前言 今天给大家带来有关Oracle控制文件的技术分享.不积跬步无以至千里,不积小流无以成江海.Oracle技术博大精深,以我一个人的力量,那无异于蜉蝣于天地,沧海之一粟.在此,笔者抛砖引玉,希望读者 ...

  5. 【技术分享】Oracle控制文件的备份、恢复以及多路复用

                       Oracle控制文件的备份.恢复以及多路复用 前言      今天Frank给大家带来有关Oracle控制文件的技术分享.不积跬步无以至千里,不积小流无以成江海. ...

  6. Oracle控制文件解析

    宁愿做一朵篱下的野花,不愿做一朵受恩惠的蔷薇.与其逢迎献媚,偷取别人的欢心,毋宁被众人所鄙弃!---------<莎士比亚> 今朝有心,他朝有路,今日有情,明日有邻!掌握大脑,赢取人生.O ...

  7. oracle控制文件有坏块处理过程

    oracle控制文件有坏块处理过程 问题 解决方案 问题 客户环境11.2.0.4 rac red6.7 查看集群资源信息 crsctl status res -t 发现: ora.orcl.db 1 ...

  8. oracle控制文件都一样么,Oracle控制文件详解

    一.Oracle控制文件 为二进制文件,初始化大小由CREATEDATABASE指定,可以使用RMAN备份 记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等 ...

  9. 晟数学院 oracle,Oracle 控制文件存储解析

    控制文件块内容分布 SQL> SELECT TYPE, 1 RECORD_SIZE, 2 RECORDS_TOTAL, 3 RECORD_SIZE*RECORDS_TOTAL, 4 ceil(r ...

最新文章

  1. 一文了解神经网络的基本原理
  2. 【WSN同步捕获】无线传感器网络的同步捕获和跟踪误差的MATLAB仿真
  3. 大工20春计算机原理在线作业二,大工20春《计算机原理》在线作业【答案满分】...
  4. C++ sort()函数的使用
  5. Lotus 下部门间用户的移动操作
  6. 推荐 10 个饱受好评且功能独特的开源人工智能项目
  7. 使用IPMI工具实现对服务器的远程管理
  8. BZOJ 4556(后缀数组+主席树求前驱后继+二分||后缀数组+二分+可持久化线段树)
  9. java filter的类_Java FilterOutputStream类
  10. 【数据预测】基于matlab人工蜂群算法优化BP神经网络数据预测 (含优化前对比)【含Matlab源码 078期】
  11. Android开发 MeasureSpec介绍
  12. 离线CSDN网页打开跳转首页的解决方法
  13. C语言根号下ln怎么表示,c语言ln根号x
  14. strcmp函数原型 C语言
  15. java 流计算_Java 流收集器 ( Stream Collectors ) ( 一 ) - 统计计算
  16. 测试岗位只有一个人的公司中,如何做好测试?
  17. 最新版的sweetalert路径
  18. 迪士尼源码_如何在迪士尼+上禁用自动播放和背景视频
  19. m4a转如何快速转换为wav格式呢
  20. 如何用python画七彩蟒蛇_Python实现七彩蟒蛇绘制实例代码

热门文章

  1. struts2+spring3+hibernate3整合(二)转载
  2. c语言0x00如何不截断_binary 和 varbinary 用法全解
  3. mysql 中文含数字排序_英语| 124期 Sort 坑爹的字符串排序
  4. python 流式编程_python 使用yield进行数据的流式处理
  5. spring boot 中json数据处理
  6. 一些常规形几何形状的绘制和效果填充(三)
  7. 侏罗纪显示服务器超时,侏罗纪世界进化服务器无法访问解决方案推荐
  8. 多媒体技术是指以计算机为手段来获取,计算机应用基础win7课件第八章.ppt
  9. python3精要(84)-字节码原理及分析(2)
  10. 【风控】作弊用户行为序列图片化