Depuis que vous avez demandé sur d'autres bases de données, voici quelques informations sur Oracle.
L'ajout d'une colonne NULL à une table Oracle est un moyen très rapide d'utilisation, comme cela ne met à jour le dictionnaire de données. Ceci est un verrou exclusif sur la table pour une très courte période de temps. Il sera toutefois invalider toute depedant procédures stockées, vues, triggers, etc. Ces obtiendrez de recompiler automatiquement.
À partir de là, si nécessaire, vous pouvez créer des index de l'aide en LIGNE de la clause. Encore une fois, très peu de données dictionnaire de serrures. Il va lire l'ensemble de la table à la recherche de choses à l'index, mais ne bloque pas la personne tout en faisant cela.
Si vous devez ajouter une clé étrangère, vous pouvez le faire et obtenir de l'Oracle de confiance vous que les données sont correctes. Sinon, il faut lire l'ensemble de la table et de valider toutes les valeurs qui peut être lent (créer votre index en premier).
Si vous avez besoin de mettre une valeur par défaut ou la valeur calculée dans chaque ligne de la nouvelle colonne, vous aurez besoin de lancer une mise à jour massive ou peut-être un petit programme utilitaire qui remplit les nouvelles données. Cela peut être long, surtout si les lignes d'obtenir beaucoup plus grand et ne rentrent plus dans leurs blocs. Le verrouillage peut être géré au cours de ce processus. Depuis l'ancien versino de votre application, qui est toujours en cours d'exécution, ne savent pas à propos de cette colonne, vous pourriez avoir besoin d'un sournois de déclenchement ou de spécifier une valeur par défaut.
À partir de là, vous pouvez faire un switcharoo sur vos serveurs d'application à la nouvelle version du code, et il va continuer à courir. Déposer vos sournois déclencheur.
Alternativement, vous pouvez utiliser DBMS_REDEFINITION qui est une boîte noire conçu pour faire ce genre de chose.
Tout cela est tellement la peine de tester, etc que nous avons juste un dimanche matin panne à chaque fois que la sortie d'une version majeure.