[Uma resposta do Wiki da comunidade parece mais apropriada aqui.]
O banco de dados é oficialmente um monte de arquivos (arquivos de dados, redo logs, arquivos de controle, arquivos de parâmetros).
Uma instância é um conjunto de processos e um bloco de memória em execução em um servidor. Na maioria das vezes, uma instância tem um banco de dados aberto e a sessão 'ativa' na instância para interagir com o banco de dados. Uma instância é conectada apenas a um único banco de dados.
Em uma configuração de RAC (Real Application Clusters), instâncias separadas em vários servidores podem ter o mesmo banco de dados aberto.
Um servidor também pode ter várias instâncias em execução, cada instância executando um banco de dados separado. Um exemplo comum disso é onde as instâncias de banco de dados de desenvolvimento e teste estão sendo executadas na mesma máquina. [Pessoalmente, espero ver menos isso como tendo dev e teste em servidores virtuais separados na mesma caixa fornece mais controle.]
Um processo em um servidor pertencerá a uma instância específica, com exceção do ouvinte do banco de dados. Um único ouvinte pode ouvir (geralmente na porta 1521) e passar conexões para instâncias separadas com base no SID ou serviço solicitado.