oracle故障案例一 ORA-00214:

2020-11-19  本文已影响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出现数据后,证明数据库已经启动,故障修复:

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

上一篇下一篇

猜你喜欢

热点阅读