Como você perguntou sobre outros bancos de dados, aqui estão algumas informações sobre o Oracle.
Adicionar uma coluna NULL a uma tabela Oracle é uma operação muito rápida, pois apenas atualiza o dicionário de dados. Isso mantém um bloqueio exclusivo na mesa por um período muito curto de tempo. No entanto, isso invalidará quaisquer procedimentos armazenados, visualizações, gatilhos, etc. Depedant. Eles serão recompilados automaticamente.
A partir daí, se necessário, você pode criar um índice usando a cláusula ONLINE. Novamente, apenas bloqueios de dicionário de dados muito curtos. Ele lerá toda a tabela procurando coisas para indexar, mas não bloqueará ninguém enquanto faz isso.
Se precisar adicionar uma chave estrangeira, você pode fazer isso e fazer com que o Oracle confie em você de que os dados estão corretos. Caso contrário, ele precisa ler toda a tabela e validar todos os valores que podem ser lentos (crie seu índice primeiro).
Se você precisar colocar um valor padrão ou calculado em cada linha da nova coluna, você precisará executar uma atualização massiva ou talvez um pequeno programa utilitário que preencha os novos dados. Isso pode ser lento, especialmente se as linhas ficarem muito maiores e não couberem mais em seus blocos. O bloqueio pode ser gerenciado durante este processo. Como o antigo versino de seu aplicativo, que ainda está em execução, não conhece esta coluna, você pode precisar de um gatilho sorrateiro ou para especificar um padrão.
A partir daí, você pode fazer um switcharoo em seus servidores de aplicativos para a nova versão do código e ele continuará em execução. Solte seu gatilho sorrateiro.
Alternativamente, você pode usar DBMS_REDEFINITION, que é uma caixa preta projetada para fazer esse tipo de coisa.
Tudo isso é tão trabalhoso para testar, etc, que apenas temos uma interrupção no início da manhã de domingo sempre que lançamos uma versão principal.