下午时连接数据库突然发现连不上了,监听报错找不到服务,于是登录数据库所在服务器,查看监听状态,
oracle:lsnrctl status
监听状态正常,登入数据库查看
[oracle@frkdb1 ~]$ sqlplus /nolog
SQL*Plus: Release 9.2.0.8.0 - Production on Fri Nov 13 19:45:59 2015
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
SQL>  conn /as sysdba
Connected to an idle instance.
连接到了空闲线程--(0.0数据库居然宕机了)
发现数据库宕机进行重启
SQL> startup
ORACLE instance started.
Total System Global Area 1595480056 bytes
Fixed Size                   452600 bytes
Variable Size             402653184 bytes
Database Buffers         1191182336 bytes
Redo Buffers                1191936 bytes
ORA-00221: error on write to controlfile
ORA-00206: error in writing (block 3, # blocks 1) of controlfile
ORA-00202: controlfile: '/oracledata/frk/control01.ctl'
ORA-27072: skgfdisp: I/O error
Linux Error: 5: Input/output error
Additional information: 2
阿西吧,这都是什么···控制文件出错了?!/找不到?!
请教大神。。。大神说如果现在mount是没有问题的,那最大的可能就是控制文件损坏了。
控制文件坏了,要重建控制文件~作为一个小白完全不会啊。
大神说先用命令把原来的控制文件备份一下,然后去网上找一下重建的命令(只能QQ问大神,并不在身边T T)
 中间自己脑洞大开,将control01.ctl删掉,把control02.ctl复制出一个改名成control01.ctl,但是然并卵,报错如下:ORA-03113: end-of-file on communication channel
查看告警日志,control02.ctl和control03.ctl也在报错
Errors in file /oracle/admin/frk/bdump/frk_lgwr_16354.trc:
ORA-00221: error on write to controlfile
ORA-00206: error in writing (block 3, # blocks 1) of controlfile
ORA-00202: controlfile: '/oracledata/frk/control03.ctl'
ORA-27072: skgfdisp: I/O error
Linux Error: 5: Input/output error
Additional information: 2
ORA-00206: error in writing (block 3, # blocks 1) of controlfile
ORA-00202: controlfile: '/oracledata/frk/control02.ctl'
ORA-27072: skgfdisp: I/O error
Linux Error: 5: Input/output error
Additional information: 2
好吧,没有完全没有任何备份来恢复控制文件,只能去网上找控制文件恢复语句了;
找到了这个:http://blog.sina.com.cn/s/blog_69e7b8d701014j2m.html
很好用,正文如下:

如果数据库控制文件做过镜像,比如一个数据库有3个控制文件,丢失一个控制文件的恢复非常的容易,如果所有控制文件的丢失,那么恢复起来就要相对的麻烦一些。

如果注意观察我下面的例子你会发现,即使没有控制文件的备份也是可以把数据库恢复的。

当然了,一个优秀的DBA最好不要把自己置于复杂和未知的环境,对数据库做控制文件的备份是一个很容易的事情。

我们这里通过用户管理的方法来创建控制文件的备份:

1.生成重建控制文件和修复数据库的脚本,脚本会放在$ORACLE_BASE/admin/sid/udump路径下,其中sid是数据库实例名。

alter database backup controlfile to trace;
--注:在数据库起不来的情况下完全没办法备份,只能用语句

2.生成控制文件的镜像拷贝

alter database backup controlfile to '/home/oracle/c.bak' ----引号部分是目录和备份文件名

SQL> create table demo (x number,y number);
表已创建。

SQL> insert into demo values(1,100);
已创建 1 行。

SQL> insert into demo values(2,200);
已创建 1 行。

SQL> commit;
提交完成。

SQL> select * from demo;

X Y
---------- ----------
1 100
2 200

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

删掉所有的控制文件!!

SQL> startup
ORACLE 例程已经启动。

Total System Global Area 293601280 bytes
Fixed Size 1248600 bytes
Variable Size 100663976 bytes
Database Buffers 184549376 bytes
Redo Buffers 7139328 bytes
ORA-00205: ?????????, ??????, ???????

SQL> select status from v$instance;

STATUS
------------------------
STARTED

SQL> CREATE CONTROLFILE REUSE DATABASE "DB01" NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 'E:\ORACLE\PRODUCT\ORADATA\DB01\REDO01.LOG' SIZE 50M,
9 GROUP 2 'E:\ORACLE\PRODUCT\ORADATA\DB01\REDO02.LOG' SIZE 50M,
10 GROUP 3 'E:\ORACLE\PRODUCT\ORADATA\DB01\REDO03.LOG' SIZE 50M
11 -- STANDBY LOGFILE
12 DATAFILE
13 'E:\ORACLE\PRODUCT\ORADATA\DB01\SYSTEM01.DBF',
14 'E:\ORACLE\PRODUCT\ORADATA\DB01\UNDOTBS01.DBF',
15 'E:\ORACLE\PRODUCT\ORADATA\DB01\SYSAUX01.DBF',
16 'E:\ORACLE\PRODUCT\ORADATA\DB01\USERS01.DBF',
17 'E:\ORACLE\PRODUCT\ORADATA\DB01\EXAMPLE01.DBF'
18 CHARACTER SET ZHS16GBK
19 ;

控制文件已创建。

SQL> select status from v$instance;

STATUS
------------
MOUNTED
 --到这步问题来了,执行了一下select status from v$instance;状态还是STARTED;
并且不管什么命令都报这个错: 
SQL> shutdown immediate
ORA-24324: service handle not initialized
ORA-01041: internal error. hostdef extension doesn't exist
SQL> shutdown
ORA-24324: service handle not initialized
ORA-01041: internal error. hostdef extension doesn't exist
SQL> startup
ORA-24324: service handle not initialized
ORA-01041: internal error. hostdef extension doesn't exist
SQL> shutdown abort
ORA-24324: service handle not initialized
ORA-01041: internal error. hostdef extension doesn't exist
 网上查半天没查出所以然,退出重登了一下服务器,然后再启动数据库,居然好了!!!!

SQL> recover database;
ORA-00283: ??????????
ORA-00264: ?????

数据库不需要恢复的操作,所以报了上边的错误。

SQL> alter database open;

数据库已更改。

通过这次事件,我得到了重要的一点警示:备份!!一定要备份,不管什么东西都要定时备份!本次就是没有最新的备份,以至于很是麻烦。

oracle控制文件问题的更多相关文章

  1. Oracle控制文件

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

  2. oracle 控制文件的重建

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

  3. Oracle 控制文件(CONTROLFILE)

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

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

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

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

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

  6. oracle控制文件丢失恢复

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

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

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

  8. ORACLE控制文件一致性【weber出品】

    一.首先控制文件有什么作用呢? 控制文件记录了如下信息:1.数据库的创建时间2.数据文件的位置3.日志文件的位置等作用是指导数据库 找到数据文件,日志文件并将数据库启动到 open 状态. 与其用文字 ...

  9. Oracle控制文件操作

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

随机推荐

  1. Redis-安装篇

    Redis Cluster搭建 需求:创建6个节点,3主3从127.0.0.1:6379127.0.0.1:6380127.0.0.1:6381127.0.0.1:6382127.0.0.1:6383 ...

  2. Django数据同步过程中遇到的问题:

    1.raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__ve ...

  3. SVN删除文件和恢复文件

    SVN删除文件 一.本地删除SVN删除文件中的本地删除,指的是在客户端delete了一个文件,但还没有commit,使用revert来撤销删除. 二.服务器删除1.通过本地删除后提交服务器a)Upda ...

  4. Mysql 源码:关于innodb中两次写的探索

    转载自:http://www.cnblogs.com/bamboos/p/3553703.html?utm_source=tuicool&utm_medium=referral 两次写可以说是 ...

  5. 使用docker安装sentry

    一.安装docker yum -y install docker 更换docker镜像源为中科大的 在配置文件/etc/docker/daemon.json中加入 { "registry-m ...

  6. 三大统计相关系数:Pearson、Spearman秩相关系数、kendall等级相关系数

    统计相关系数简介 由于使用的统计相关系数比较频繁,所以这里就利用几篇文章简单介绍一下这些系数. 相关系数:考察两个事物(在数据里我们称之为变量)之间的相关程度. 如果有两个变量:X.Y,最终计算出的相 ...

  7. js --"说声爱你不容易"

    <div class="tit"><label>yourName:</label><input type="text" ...

  8. json、demjson

    一.json 概述: json.dumps():将 Python 对象编码成 JSON 字符串, dic -> json str json.dump()  :将 Python 对象保存成 JSO ...

  9. logging dictconfig

    #coding: utf-8 import logging import logging.config   class SingleLevelFilter(object):     def __ini ...

  10. python文件(概念、基本操作、常用操作、文本文件的编码方式)

    文件 目标 文件的概念 文件的基本操作 文件/文件夹的常用操作 文本文件的编码方式 01. 文件的概念 1.1 文件的概念和作用 计算机的 文件,就是存储在某种 长期储存设备 上的一段 数据 长期存储 ...