How to log on when SYSDBA can't connect the db

How to log on when SYSDBA cant connect the db?有时候应用打电话,数据库已经Hang了,我们以DBA角色去登录

How to log on when SYSDBA can't connect the db?
有时候应用打电话,数据库已经Hang了,我们以DBA角色去登录的时候都无法登录,这时候该怎么办。通常,比如当归档异常,普通用户或者具有DBA角色的用户都无法登录,
这是因为通常当新的session创建一个connection的时候,会产生审计记录,那么就需要更新SEQ$表。那么这时候任何DML都将被阻塞,除非归档异常被解决或者正常。
但是,SYSDBA用户是任然能够登录,这是因为SYSDBA连接在数据库表中不产生审计记录(也就是为什么audit_file_dest目录里面是SYSDBA审计文件被写入的地方)。
但有时候也有BUG,导致SYSDBA无法登录,忽略不论……
正常情况下我们以SYSDBA登录会发生以下情况:
1,建立新的oracle进程。
2,新的oracle进程attache共享内存结构在SGA中。
3,新的oracle进程分配进程和session的状态对象结构以及在SGA中初始化新session。
或许有时候在步骤3中,数据库要分配内存结构,如果某些mutex或者latch异常,就可能导致无法连接,oracle有类似的bug。

下面用这种方式登录:

SQL> shutdown abortORACLE instance shut down.