美文网首页
oracle故障案例一 ORA-00214:

oracle故障案例一 ORA-00214:

作者: 苏水的北 | 来源:发表于2020-11-19 10:05 被阅读0次

    1、故障报错:

    由于数据库非正常关闭,在启动数据库的时候报错,错误如下ORA-00214:

    SQL> shutdown abort
    ORACLE instance shut down.
    SQL> startup
    ORACLE instance started.
    
    Total System Global Area 1185853440 bytes
    Fixed Size                  2252664 bytes
    Variable Size             956301448 bytes
    Database Buffers          218103808 bytes
    Redo Buffers                9195520 bytes
    ORA-00214: control file '/ora_flash/pwspdb/control02.ctl' version 1323
    inconsistent with file '/ora_data/pwspdb/control01.ctl' version 1298
    

    为什么会出现这个报错?查询后得知:

    该错误一般出现的原因:

    数据库服务器掉电等导致数据库异常中断。原因很简单:根据oracle db运行原理,数据库在运行期间,由于检查点发生等原因会不断的更新控制文件,同时数据库在关闭和重启过程中都会更新控制文件的内容,但是数据库服务器突 然的掉电,会导致当前的db信息无法适时更新到控制文件中,再次启动数据库后,当oracle检测控制文件和其它文件信息是否一致时,就出现了这个错误。

    错误现象:

    在mount数据库时,会跑出如下错误:ORA-00214: controlfile '/home/oracle/oradata/item/control01.ctl' version 10232896 inconsistent with file
    '/home/oracle/oradata/item/control02.ctl' version 9190433

    由于Oracle中二个控制文件互为镜像关系,正常情况下二个文件的内容是一致的,但是由于突然掉电会有可能导致二个文件没有完全同步,而出现了数据不一致的情况。数据库在mount时,会加载并检查这二个文件(Oracle根据初始化参数文件中的设定来决定检查几个参数文件)和数据文件的SCN的一致性。

    2、处理过程如下:

    (二个控制文件中若有一个控制文件的SCN是与数据文件的SCN保持一致,即可以正常将数据库启动,此时,只需要将另外一个文件从Oracle的初始化参数文件中的设定中移除即可)

    2.1先对数据库进行关闭:

    SQL> conn sys/wuxin as sysdba
    Connected.
    SQL> shutdown abort
    ORACLE instance shut down.

    2.2复制之前备份过的数据文件、控制文件、动态初始化参数文件、重做日志文件等(具体复制那些文件可根据实际情况而定)
    SQL> host cp /backup/*.dbf  /ora_data/pwspdb/
    
    SQL> host cp /backup/*.log   /ora_data/pwspdb/
    
    SQL> host cp /backup/*.ctl   /ora_data/pwspdb/
    
    SQL> host cp /backup/dbs/spfilepwspdb.ora   /oracle/product/11.2.0/db_1/dbs/
    
    SQL> host cp /backup/disk2/pioneer_data.dbf /datatest/tablespace/
    
    SQL> host cp /backup/disk4/pioneer_indx.dbf   /datatest/tablespace/
    
    2.3因为之前备份过动态初始化参数文件,所以先用动态初始化参数文件生成静态初始化参数文件:
    SQL> show user;
    USER is "SYS"
    SQL>  create pfile='/oracle/product/11.2.0/db_1/dbs/init.ora' from spfile;
    
    File created.
    
    2.4编辑静态初始化参数文件init.ora,把control02.ctl控制文件去掉:
    2.5利用修改过的静态初始化参数文件生成新的动态初始化参数文件:
    SQL> create spfile from pfile='/oracle/product/11.2.0/db_1/dbs/init.ora';
    
    File created.
    
    2.6启动数据库:
    SQL> startup nomount        --启动实例,但不加载数据库
    ORACLE instance started.
    
    Total System Global Area 1185853440 bytes
    Fixed Size                  2252664 bytes
    Variable Size             956301448 bytes
    Database Buffers          218103808 bytes
    Redo Buffers                9195520 bytes
    SQL> alter database mount;       --加载数据库
    
    Database altered.
    
    SQL> alter database open;         --打开数据库
    
    Database altered.
    
    2.7连接pjinlian用户,测试数据库是否正常:
    SQL> conn pjinlian/wuda
    Connected.
    SQL> show user;
    USER is "PJINLIAN"
    SQL> select count(*) from sales;
    
      COUNT(*)
    ----------
        918843
    
    2.8出现数据后,证明数据库已经启动,故障修复:

    通过以上的例子进一步说明,平常我们的初始化参数文件、控制文件、重做日志文件、数据文件还是应该做好备份工作。

    相关文章

      网友评论

          本文标题:oracle故障案例一 ORA-00214:

          本文链接:https://www.haomeiwen.com/subject/vwdkiktx.html