当前位置:  数据库>oracle

Oracle控制文件的损坏或完全丢失的恢复办法

    来源: 互联网  发布时间:2017-03-24

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

控制文件丢失了,需要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


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


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle数据库恢复后心得
  • 关于系统重装后Oracle数据库完全恢复的解决办法
  • oracle drop table(表)数据恢复方法
  • Oracle数据库备份和恢复工具 RMan
  • oracle备份恢复的具体方法
  • oracle中误删除表后恢复语句(FLASHBACK)
  • oracle冷备份恢复和oracle异机恢复使用方法
  • 在Oracle 10gR2中设定指定的恢复点实现轻松闪回
  • Oracle11g备份和恢复功能的提高
  • 实战Oracle数据库备份与恢复
  • Oracle数据库冷备份的异地恢复
  • 详解通过Backup Exec来实施Oracle灾难恢复
  • Oracle的恢复管理器及DBMS_JOB包分析
  • Oracle数据库文件恢复以及备份思路
  • Oracle数据库备份恢复最佳实践
  • oracle如何恢复被覆盖的存储过程
  • rman恢复方案和oracle异机恢复
  • oracle数据库创建备份与恢复脚本整理
  • ORACLE 数据库RMAN备份恢复
  • 一次误操作引起的Oracle数据库大恢复
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3