Sometimes the DBA just want to restart a database to enable a parameter value or change the pfile to spfile, or things like that. For these cases the is actually needed to shutdown database than startup the database. But it could have a ‘restart’ command to automatically make the shutdown/startup with parameters. Thinking like that, it can have ‘levels’ of restart, to avoid all process of checkpoint, flush data to disk, switch log file, and etc OR instance recover (in case of abort) like:
1. Complete Restart (similar to actual shutdown/startup):
SQL> RESTART COMPLETE
Database closed.
Database dismounted.
ORACLE instance shut down.
ORACLE instance started.
Total System Global Area 812529152 bytes
Fixed Size 2264280 bytes
Variable Size 960781800 bytes
Database Buffers 54654432 bytes
Redo Buffers 3498640 bytes
Database mounted.
Database opened.
2. Quick Restart (kill all sessions and restart PMON, SMON, and others, but not flush data to disk neither refresh SGA structure):
SQL> RESTART QUICK
Database closed.
Sessions Killed.
Background Processes Restarted.
Database opened.
It might be combined to the current syntax used by SHUTDOWN or STARTUP, examples:
SQL> RESTART QUICK ABORT; -- (shutdown with abort)
SQL> RESTART COMPLETE [NO]MOUNT; -- (shutdown and startup database nomounted or mounted state only)
SQL> RESTART QUICK ABORT SPFILE=‘/new/location/pfile’; -- (shutdown abort and start with other SPFILE)
Another advantage is to enable QUICK RESTARTS to activities like enable or disable ARCHIVELOG, FLASHBACK and other things that, I think, not necessary demands a COMPLETE instance restart.
Other databases like MySQL have this kind of implementation and it’s very useful.