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出现数据后,证明数据库已经启动,故障修复:
通过以上的例子进一步说明,平常我们的初始化参数文件、控制文件、重做日志文件、数据文件还是应该做好备份工作。
网友评论