When a database server executes shutdown immediate, it encounters the following Ora error, as follows:
$ sqlplus/as SYSDBA
Sql*plus:release 10.2.0.4.0-production on Fri 5 10:56:24 2016
Copyright (c) 1982, Oracle. All rights Reserved.
Connected to:
Oracle Database 10g Release 10.2.0.4.0-64bit Production
sql> shutdown immediate;
End-of-file on communication channel
Sql> exit
Check the alarm log and find that it has been stuck in "Job queue slave processes stopped". Exit Sqlplus and then log back in, re-execute shutdown immediate
$ sqlplus/as SYSDBA
Sql*plus:release 10.2.0.4.0-production on Fri 5 11:03:45 2016
Copyright (c) 1982, Oracle. All rights Reserved.
Connected.
sql> shutdown immediate;
Ora-24324:service Handle not initialized
Ora-24323:value not allowed
Ora-01089:immediate shutdown in progress-no operations is permitted
Sql>
After you exit the session, and then log in to Sqlplus, use shutdown abort to shut down the database. After processing, check the official metal link document and find the cause of the error:
Background processes is hanging/not started correctly during the previous startup of this database.
Hence the semaphores and shared memory segments is not getting detached properly now during shutdown.
If you encounter this problem later, you can use the following steps to process:
1. Verify that there is no background processes owned by "Oracle", if there is kill them
$ PS-EF | grep Ora_ | grep $ORACLE _sid
2. Remove shared memory and semaphores:
A) Check for shared memory and semaphores
$ IPCS-MT (if there is anything owned by Oracle remove it)
$ ipcrm-m [ID] (to remove it)
B) Check and remove semaphores
$ IPCS-SBT (if there is anything owned by Oracle remove it)
$ ipcrm-s [ID] (to remove it)
C) Remove SGA and LK file
$ cd $ORACLE _home/dbs
$ rm sgadef<sid>.dbf (removing SGA file)
$ORACLE _home/dbs/lk<sid> (Removing lk ... flies)
D) If database is down, try to bring up Oracle one step at a time:
$ sqlplus/nolog
sql> startup Nomount pfile = ... [Path]
Sql> ALTER DATABASE Mount;
sql> ALTER DATABASE open;\
Otherwise, exit current Sql*plus session and verify the following environment variables is set.
Echo $ORACLE _home
echo $ORACLE _sid (Echo%oracle_sid% on Windows)
Then, Execute the following:
Sqlplus/as SYSDBA
Shutdown abort
Exit
Sqlplus/as SYSDBA
Startup
Two solutions, as indicated on the official information. For the first scenario, simply comb the following:
1: Clean the background process, generally find the relevant process, using the KILL command killed.
2: Clean up shared memory segments
3: Clear Signal set
Note that in Rhel, the IPCS-SBT command will error "ipcs:invalid option-B" because the IPCS command on Linux does not support the-B on Unix, so it cannot be scripted and does not use parameter B. Specific reference Official document IPCS man page describes Invalid-b option in RHEL 5
4: Delete the SGA and LK file.
IPCS Related information:
The IPCS command writes to the standard output some information about the communication facilities between the active processes. If no flags are specified, the IPCS command writes some information about the current active message queue, shared memory segments, semaphores, remote queues, and local queue headers in a short format.
References:
ORA-24324 During Startup or Shutdown (document ID 794293.1) ORA-1089 During Shutdown Immediate (document ID 1014091.102) |
Oracle shutdown immediate encounters ORA-24324 ORA-24323 ORA-01089