Ambiente
Adobe Campaign Adobe Campaign Classic
Problema
Na maioria das builds do Adobe Campaign, incluindo as Gold Standard 9032, você pode encontrar vários problemas ao adicionar novas colunas a um schema existente.
O âmbito deste artigo é abordar um problema específico relacionado com:
Causa
Isso pode acontecer quando, por exemplo, você tem uma tabela de recipients existente ou qualquer outra tabela que já tenha mais de 1 milhão de registros.
Agora, é necessário adicionar uma coluna extra a essa tabela, que é do tipo de dados Integer
.
Em seguida, adicione essa coluna à definição do schema e desejar confirmar as alterações no banco de dados.
Ao atualizar o banco de dados, o banco de dados encontra um impasse ou o query bloqueia outras operações.
Isso se deve principalmente à atualização de todos os registros para 0 com base no comando SQL gerado pelo assistente de banco de dados.
Solução
Ao adicionar uma coluna inteira, você obtém a instrução SQL gerada semelhante a esta:
ALTER TABLE NmsRecipient ADD column_name SMALLINT;
UPDATE NmsRecipient SET column_name = 0;
ALTER TABLE NmsRecipient ALTER COLUMN column_name SET Default 0;
ALTER TABLE NmsRecipient ALTER COLUMN icolumn_name SET NOT NULL;
O problema aqui é que há quatro comandos executados em paralelo no banco de dados que podem causar problemas de desempenho ou um bloqueio.
A solução é condensar esses 4 comandos em um e ainda fazer as mesmas alterações que abaixo:
ALTER TABLE NmsRecipient ADD iFichierLiveDataCliqueurs SMALLINT NOT NULL SET Default 0 ;
Ele faz todas as alterações necessárias, adicionando a coluna, definindo o padrão e definindo NOT NULL
e também definir o valor dos registros existentes como 0 devido ao NOT NULL
restrição.
OBSERVAÇÃO:
Se houver várias colunas inteiras que precisam ser adicionadas, adicione-as uma por uma e execute o assistente de banco de dados para cada alteração.
Isso garante uma operação suave, pois a instrução atualiza todos os existente para 0 além disso, e dependendo do número de registros, isso pode levar tempo.