【翻译自mos文章】在10g中,当发生ORA-00020时,sqlplus登陆会报“connected to an idle instance”

时间:2023-03-09 02:10:22
【翻译自mos文章】在10g中,当发生ORA-00020时,sqlplus登陆会报“connected to an idle instance”

在10g中。当发生ORA-00020时,sqlplus登陆会报“connected to an idle instance”

来源于:

Sqlplus Logon Reports 'connected to an idle instance' when ORA-20 happens in 10g (文档 ID 1370000.1)

说的比較经典, 不做翻译,直接转帖:

APPLIES TO:

Oracle Server - Enterprise Edition - Version: 10.1.0.4 to 10.2.0.5 - Release: 10.1 to 10.2

Information in this document applies to any platform.

SYMPTOMS

When the maximum number of processes is reached, and a next normal logon reports an ORA-20, a subsequent local connect as sysdba reports:

SQL> connect / as sysdba

Connected to an idle instance.

Trying to start up the database reports:

ORA-01081: cannot start already-running ORACLE - shut it down first

The issue can be reproduced with the following steps:

1. Using a 10g database, build sufficient processes until an ORA-20 occurs

2. Then execute

SQL> connect / as sysdba
NOTE:

Connecting from the OS command prompt using

$ sqlplus / as sysdba

the SYSDBA would get the "Connected" message

CAUSE

This is expected behavior in Oracle 10g, and is explained in unpublished 

Bug 2935090 - SQLPLUS REPORTS CONNECT TO IDLE INSTANCE WHEN INSTANCE REACHES MAX PROCESSES.



  The reason we don't display error ORA-20 is because you are login as

  sysdba. Being DBA user you must be able to login regardless of the status of

  the database, so that you can take the necessary action to rectify the

  problem.



  As when login as normal user, you are getting the appropriate error but does

  not tell you the process limit. This is because the message is from rdbms

  layer so we have no control of that. In any case, the cause and Action for

  this message state very clear that what you need to do.

  .

  00020, 00000, "maximum number of processes (%s) exceeded"

  // *Cause: All process state objects are in use.

  // *Action: Increase the value of the PROCESSES initialization parameter.

SOLUTION

Ignore this 'Connected to an idle instance.' message and handle it just as a normal ORA-20 error.

The behavior has been changeg in Oracle 11g where it reports an 'ORA-20' instead of 'Connected to an idle instance.'