shutdown (or shutdown normal) – In this method the database shuts down cleanly and oracle will wait for all users process to terminate before shutting down the database, so if there is user with SQL*Plus session that is idle oracle will not terminate till the user session exits it. If user sessions haven’t been terminated then you will see a following message in the alert.log
Shutting down instance: further logons disabled
Active process 2408 user ‘SYSTEM’ program ‘ORACLE.EXE (SHAD)’
SHUTDOWN: waiting for logins to complete.
shutdown immediate – In this mode oracle will kill all existing sessions and rollback all uncommitted transactions. Using this option instance recovery is not needed.
shutdown transactional – In this mode oracle will wait for user to commit their transaction so if the user is running a select statement it will terminate the user session unless it’s part of a transaction that is being run.
shutdown abort – In this mode one forces oracle to crash, in this mode instance require will be required not media recovery. This option can still be used even if any of other above shutdown options are in progress.
From one of the session, shutdown in progress but for some reason it’s hung even after one looks at the alert log file and trace files.
— after the shutdown abort completes this session also terminates with the following message
ORA-03113: end-of-file on communication channel
From another session one can run shutdown abort
SQL> shutdown immediate;
ORA-10997: another startup/shutdown operation of this instance inprogress
ORA-09968: unable to lock file
SQL> shutdown abort;
ORACLE instance shut down.
When shutdown is in progress users will not able to login to the database. They will receive the following error “ORA-01090: shutdown in progress – connection is not permitted”.
Still for some reason one can’t still shutdown the database the only option that may remain is to kill the PMON process which will forcefully kill the process.