Think of it this way:
- the database is the set of physical files, on disk. It's a completely passive "thing". It doesn't "do" anything on its own - it's just data.
- the instance is the software/processes (with its memory) that manages the database. It's the active part. It's what clients connect to, it's what processes SQL, reads data, updates it, maintains the transaction logs, etc.
When you start with nomount
, you start the instance (start a few processes, create the memory areas), but don't actually go look at the database. You'll have something in memory ready to mount a database, or do the few maintenance things you can do in that state (like creating a database), but that's all. The database is completely inaccessible at that point.
When you mount
, the control file (which contains a description of the database's files) is read, but the database is still not open. I.e. you can't access the data itself.
Only you finally open
the database can clients start interacting with the database.
Things get a bit more complicated with RAC, but the principle is the same: the database is only the set of files. The instances are what allow you to interact with the database.
Shutdown progresses in the opposite direction. For a normal, non-RAC shutdown, the instance flushes all the in-memory data that's not yet saved in the database, and closes the database files. Clients can no longer access the data.
Then the instance dismounts the database, closing the control files. At this point you're left with pretty much the same thing as with an instance in nomount
- a set of processes and memory that can't really do much.
The final step is the actual shutdown: the memory areas are released back to the OS and the processes die, which is the end of that instance.
The database doesn't ever do anything. The instances are the only active parts of the system.
For a more in-depth view, see Oracle Database Instance. It has an overview of the startup and shutdown sequence, and other essential information.