oracle非正常关闭导致无法连接实例

前言:
有时候由于我们都不当操作导致数据库为完全关闭的过程中将进程终止,在终止后数据库无法正常使用,在这个时候如果你没有经验将会慌张失措,可能会导致更加严重的后果,例如:数据丢失,数据文件损坏等等;

现象:
SQL>shutdown immediate
当你执行完这条命令后(或其他模式),在数据库没有完全关闭的情况下你执行了ctrl+c或者终止了该命令,当你下次登陆数据库是就会出现报错。

$sqlplus /nolog
SQL>conn /as sysdba
Connected to an idle instance.
连接到了一个空闲的实例,你以为没有报错是正常的准备开始你的查询,发现
SQL>select status from v$instance;
ORA-01012: not logged on

Process ID: 0

Session ID: 0 Serial number: 0
报错了,这里给出了一个很明显的错误代码ORA-01012,我们拿着这个错误代码去到oracle的官方网站查询这个导致这个错误的原因,可以导致这个问题原因有很多这里就不一一说明了,直接给出本文问题的解决方法吧。

SQL>quit
$ ps -ef |grep oradbw0

oracle 6519 1 0 Sep06 ? 00:00:15 ora_dbw0_bys1

oracle 20947 20924 0 09:08 pts/0 00:00:00 grep oradbw0

$ kill -9 6519
$ ps -ef |grep oradbw0

oracle 20949 20924 0 09:08 pts/0 00:00:00 grep oradbw0

$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Sat Sep 7 09:08:22 2013

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to an idle instance.

SQL>startup

ORACLE instance started.

Total System Global Area 631914496 bytes

Fixed Size 1338364 bytes

Variable Size 264242180 bytes

Database Buffers 360710144 bytes

Redo Buffers 5623808 bytes

Database mounted.

Database opened.

SQL>