一、首先控制文件有什么作用呢?

控制文件记录了如下信息:
1、数据库的创建时间
2、数据文件的位置
3、日志文件的位置

作用是指导数据库 找到数据文件,日志文件并将数据库启动到 open 状态。

与其用文字来描述,不如我们来看看control_file里面有些什么好了。然后在一一分析:

SQL> show parameter control_file

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer
control_files string /u01/app/oracle/oradata/orcl/c
ontrol01.ctl, /u01/app/oracle/
oradata/orcl/control02.ctl, /u
/app/oracle/oradata/orcl/con
trol03.ctl

可以看出来control_file的位置在 /u01/app/oracle/oradata/orcl/这目录下。

SQL> alter database backup controlfile to trace;

我们到这个目录去:/u01/app/oracle/admin/orcl/udump

[oracle@oracle udump]$ ls -l
total
-rw-r----- oracle oinstall Sep : orcl_ora_10453.trc
-rw-r----- oracle oinstall Sep : orcl_ora_14205.trc
-rw-r----- oracle oinstall Sep : orcl_ora_21120.trc
-rw-r----- oracle oinstall Sep : orcl_ora_21124.trc
-rw-r----- oracle oinstall Sep : orcl_ora_23699.trc
-rw-r----- oracle oinstall Sep : orcl_ora_23743.trc

找到一个时间是今天的以.trc结尾的文件。用vi来打开它。

CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS  NOARCHIVELOG
MAXLOGFILES
MAXLOGMEMBERS
MAXDATAFILES
MAXINSTANCES
MAXLOGHISTORY
LOGFILE
GROUP '/u01/app/oracle/oradata/orcl/redo01.log' SIZE 50M,
GROUP '/u01/app/oracle/oradata/orcl/redo02.log' SIZE 50M,
GROUP '/u01/app/oracle/oradata/orcl/redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/u01/app/oracle/oradata/orcl/system01.dbf',
'/u01/app/oracle/oradata/orcl/undotbs01.dbf',
'/u01/app/oracle/oradata/orcl/sysaux01.dbf',
'/u01/app/oracle/oradata/orcl/users01.dbf',
'/u01/app/oracle/oradata/orcl/example01.dbf'
CHARACTER SET AL32UTF8

可以看到里面记录着数据文件和日志文件的存放位置。

二、控制文件有三个,三个控制文件都是一模一样的。这是用来冗余备份,如果其中一个坏了,可以用另外的一个给重新覆盖。我们接下来模拟一个环境。我们把其中一个控制文件给破干掉:

[oracle@oracle orcl]$ ls
control01.ctl control03.ctl redo01.log redo03.log system01.dbf undotbs01.dbf
control02.ctl example01.dbf redo02.log sysaux01.dbf temp01.dbf users01.dbf
[oracle@oracle orcl]$ mv control03.ctl ./control03.ctl.bak
[oracle@oracle orcl]$ ls
control01.ctl control03.ctl.bak redo01.log redo03.log system01.dbf undotbs01.dbf
control02.ctl example01.dbf redo02.log sysaux01.dbf temp01.dbf users01.dbf

然后我们登入启动一下:

SQL> startup
ORACLE instance started. Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
ORA-: error in identifying control file, check alert log for more info

我们打开报警文件看看:

[oracle@oracle bdump]$ pwd
/u01/app/oracle/admin/orcl/bdump vi 查看一下:alert_orcl.log
Wed Sep :: CST
ORA-: cannot open the specified control file
ORA-: control file: '/u01/app/oracle/oradata/orcl/control03.ctl'
ORA-: unable to obtain file status
Linux Error: : No such file or directory

很明显的说是打不开,废话,肯定打不开,我都给干掉了你找得到才怪了。

这个是有我给大家指出两条解决思路:

方法一:修改spfile,不是说spfile里面记录着参数文件的位置嘛,而且肯定是记录着3条位置,那么我们就把其中第三个控制文件干掉

过程:

创建一个pfile,因为spfile是二进制文件,不可以修改
SQL> create pfile='/u01/pfile.ora' from spfile; File created.

然后编辑一下参数文件pfile:

[ora10g@first-oracle dbs]$ cd /u01
[ora10g@first-oracle u01]$ ls
oracle pfile.ora
[ora10g@first-oracle u01]$ vi pfile.ora *.control_files=tl','/u01/oracle/oradata/orcl/control02.ctl','/u01/oracle/oradata/orcl/control03.ctlorcl.__db_cache_size=
orcl.__java_pool_size=
orcl.__large_pool_size=
orcl.__shared_pool_size=
orcl.__streams_pool_size=
*.audit_file_dest='/u01/oracle/admin/orcl/adump'
*.background_dump_dest='/u01/oracle/admin/orcl/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/u01/oracle/oradata/orcl/control02.ctl','/u01/oracle/oradata/orcl/control01.ctl' ----亮点在这里,原先是有01,02,03个控制文件,我给删了就可以让数据库启动的时候不去找第三个,丢了就丢了吧。
*.core_dump_dest='/u01/oracle/admin/orcl/cdump'
*.db_block_size=
*.db_domain=''
*.db_file_multiblock_read_count=
*.db_name='orcl'
*.db_recovery_file_dest='/u01/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=
*.open_cursors=
*.pga_aggregate_target=
*.processes=
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/oracle/admin/orcl/udump'

重新创建一下就好spfile了:

SQL> create spfile from pfile='/u01/pfile.ora';

File created.

SQL> startup;
ORACLE instance started. Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
Database mounted.
Database opened.

--看到没有,数据库只用2个控制文件也是可以启动的。
SQL> show parameter control NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer
control_files string /u01/oracle/oradata/orcl/contr
ol02.ctl, /u01/oracle/oradata/
orcl/control01.ctl

方法二:不是说3个控制文件都一模一样的嘛,那为何不拷贝后重命名不就可以了呢

过程:

[oracle@oracle orcl]$ cp control01.ctl control03.ctl
[oracle@oracle orcl]$ ls
control01.ctl control03.ctl.bak redo02.log system01.dbf users01.dbf
control02.ctl example01.dbf redo03.log temp01.dbf
control03.ctl redo01.log sysaux01.dbf undotbs01.dbf

启动一下:

SQL> show parameter control_file

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer
control_files string /u01/app/oracle/oradata/orcl/c
ontrol01.ctl, /u01/app/oracle/
oradata/orcl/control02.ctl, /u
/app/oracle/oradata/orcl/con
trol03.ctl

  还是一样可以。

ORACLE控制文件一致性【weber出品】的更多相关文章

  1. Oracle控制文件

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

  2. Oracle 控制文件(CONTROLFILE)

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

  3. Oracle 控制文件损坏解决方案

    Oracle 控制文件损坏解决方案 故障一:丢失(损坏)一个控制文件 前台报错:ORA-00205:error in identifying control file,check alert log ...

  4. oracle 控制文件的重建

    目录 oracle 控制文件的重建 NORESETLOGS RESETLOGS oracle 控制文件的重建 不到最后时刻,如三个控制文件都已损坏,又没有控制文件的备份.还是不要重建控制文件,处理不好 ...

  5. Oracle控制文件多路复用以及Oracle备份重建控制文件

    控制文件中记录了oracle数据库的物理结构,也就是记录了数据库数据文件和日志文件的位置,控制文件中还记录了多种SCN,用这些SCN来确定数据文件和日志文件是否是正确的.如果不正确那么数据库就需要恢复 ...

  6. ORACLE复制数据库【weber出品】

    一.概述 在公司中,我们会经常面临着一种情况.我们制定了对数据库的操作方案后,还不可以在真正的数据库上执行,需要在备用数据库进行测试,这个时候就需要备用数据上的数据和真正数据库的数据是一模一样的.我们 ...

  7. oracle控制文件丢失恢复

    在学习群里有个同学误删除了控制文件,于是我也把自己数据库的控制文件删除了,看看能不能进行恢复,以下是整个实验的过程~~在做之前,先看看控制文件的备份方式:1.生成可以重建控制文件的脚本.2.备份二进制 ...

  8. Oracle控制文件丢失,日志文件丢失

    控制文件丢失: alter database backup controlfile to traces; shutdown immediate; @j:\db\script\orcl_ora_ctl_ ...

  9. Oracle控制文件操作

    控制文件是连接instance和 database的纽带.记录了database的结构信息. 控制文件是1个2进制文件.记录的是当前database的状态. 控制文件可以有多个,在参数文件中通过con ...

随机推荐

  1. 报错: App Transport Security has blocked a cleartext HTTP (http://) resource load since it is ins

    环境:Xcode7.1.1 + iOS9.1 详细错误: App Transport Security has blocked a cleartext HTTP (http://) resource ...

  2. (一)HTML5 - pushState 无刷新更新地址

    可以解决什么问题: 可以实现网页的ajax加载,同时又能完成URL的改变而没有网页跳转刷新的迹象,就像是改变了网页的hash(#)一样. 优于hash: 避免了改变hash的问题,避免了用户不理解UR ...

  3. smarty 基本介绍及示例

    什么是smarty? Smarty是一个使用PHP写出来的模板引擎,是业界最著名的PHP模板引擎之一.Smarty分离了逻辑代码和外在的内容,提供一种易于管理和使用的方法,用来将原本与HTML代码混杂 ...

  4. jQuery 幻灯片 ----摘录

    Cloud Carousel (演示 | 下载) ShineTime (演示 | 下载) Nivo Slider (演示 | 下载) Interactive Photo Desk (演示 | 下载) ...

  5. 百度云观测优化建议解决方案:未设置max-age或expires

    网页的缓存是由 HTTP 消息头中的 “Cache-control” 来控制的,常见的取值有 private.no-cache.max-age.must-revalidate 等,默认为private ...

  6. Arduino 板子 COM 接口找不到设备

    复位 Arduino 板子   1.打开官方的blink程序. 2.重新拔插usb. 3.点下载. 4.按住左上角的复位按键不放. 5.等显示开始下载瞬间松开按键.把握住那个瞬间. 6.多试验几次看能 ...

  7. C语言初学 判断闰年的问题

    #include<stdio.h> main( ) {  int   year , leap; scanf("%d",&year);             i ...

  8. [HDU] 2063 过山车(二分图最大匹配)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2063 女生为X集合,男生为Y集合,求二分图最大匹配数即可. #include<cstdio> ...

  9. CM源码同步编译教程

    一.操作系统 准备一个ubuntu安装镜像,我用的是12.10. 安装系统时请安装到30g以上的盘,最好就50g以上啦 安装教程不多说,网上很多教程,这里我推荐用自带的wubi工具安装,比较方便 用虚 ...

  10. android 应用在启动后进行全局的的初始化操作

    例如对于Volley的使用: 1:定义一个类使其继承Application package com.wzh.app; import com.wzh.volley.WzhVolley; import a ...