When you start the database, a key for the shared memory segment is
calculated based on the contents of ORACLE_SID and ORACLE_HOME.  When you
try to connect to the database, your process needs to find the shared
memory segment.  It does so by matching your oracle_sid and oracle_home against
this hashed key. (In the case of a network connection, it does this by
using the oracle_sid and oracle_home in the listener.)
 
Check to see how your environment was set when you started the database
versus how it is set when you're trying to connect.  In particular, if the
oracle_home path or the oracle_sid is different in any way,you'll get the
messages: ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
In my case, I had the sid as lower case for the session that started the
 database, and upper case in the listener.ora file.