早上上班,一个测试的10G数据库宕掉了,据开发的说,周末的时候曾经断电了,故障原因和解决过程如下:
[oracle@spreader oracle]$ sqlplus /nolog
[uniread] Loaded history (2158 lines)
SQL*Plus: Release 10.1.0.2.0 - Production on Mon Feb 27 11:37:09 2006
Copyright (c) 1982, 2004, Oracle. All rights reserved.
SQL> connect / as sysdba
Connected.
SQL> startup
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 188743680 bytes
Fixed Size 778036 bytes
Variable Size 162275532 bytes
Database Buffers 25165824 bytes
Redo Buffers 524288 bytes
ORA-00214: controlfile '/home/oracle/oradata/item/control01.ctl' version 10232896 inconsistent with file
'/home/oracle/oradata/item/control02.ctl' version 9190433
Disconnected from Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning and Data Mining options
[uniread] Saved history (2163 lines)
SQL> create pfile='/home/oracle/init.ora' from spfile;
File created.
编辑init.ora,把'/home/oracle/oradata/item/control02.ctl'去掉,然后再重启数据库
[oracle@spreader oracle]$ sqlplus /nolog
SQL> connect / as sysdba
Connected to an idle instance.
SQL> create spfile from pfile='/home/oracle/init.ora';
ERROR:
ORA-01034: ORACLE not available
File created.
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 188743680 bytes
Fixed Size 778036 bytes
Variable Size 162275532 bytes
Database Buffers 25165824 bytes
Redo Buffers 524288 bytes
SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-00214: controlfile '/home/oracle/oradata/item/control01.ctl' version 10232896 inconsistent with file
'/home/oracle/oradata/item/control03.ctl' version 9190433
再编辑init.ora,把'/home/oracle/oradata/item/control03.ctl'去掉,然后再按照上面步骤重启数据库
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 188743680 bytes
Fixed Size 778036 bytes
Variable Size 162275532 bytes
Database Buffers 25165824 bytes
Redo Buffers 524288 bytes
SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-00227: corrupt block detected in controlfile: (block 175, # blocks 1)
ORA-00202: controlfile: '/home/oracle/oradata/item/control01.ctl'
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01507: database not mounted
唯一的控制文件都有问题了,FT,重新编辑init.ora文件,去掉控制文件一,而留下控制文件二和三,然后再重启数据库
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 188743680 bytes
Fixed Size 778036 bytes
Variable Size 162275532 bytes
Database Buffers 25165824 bytes
Redo Buffers 524288 bytes
SQL> alter database mount;
Database altered.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-16038: log 2 sequence# 2136 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 2 thread 1: '/home/oracle/oradata/item/redo02.log'
这下可以MOUNT起来了,但是出现ORA-19809,这个简单,就是recovery files空间满了引起的,再整理下这个空间,然后alter database open 就行了。
步骤:
1 首先删除掉没必要的备份,例如归档日志
2 进入RMAN整理空间
[oracle@spreader oracle]$ rman
RMAN> connect target /
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;
from:http://blog.itpub.net/post/6336/55862