2010-05-14 9 views
2

Je dois admettre que cela m'a pris par surprise dans un système de production. J'ai récemment ajouté la journalisation supplémentaire à quelques tables pour une utilisation avec Oracle Change Data Capture. Une vérification de routine au cours d'une construction de code sans rapport a révélé que cela créait apparemment des contraintes désactivées dans la base de données de type "S". Je ne peux pas trouver de référence à cela dans les documents Oracle et le simple "S" rend difficile à Google quelque chose de pertinent.Nouveau type de contrainte Oracle

Mes questions:

  1. chose Quelqu'un peut-il d'une raison qui l'exploitation forestière supplémentaire entraîne une contrainte implicite?
  2. Pourquoi est-il créé avec un état DISABLED ?
  3. Quelqu'un at-il une expérience avec les effets de permettre ces? Nous avons un processus de nettoyage standard que exécute après les déploiements pour activer complètement les contraintes qui ont été désactivées ou activées novalidate pour des raisons de migration de données.

Répondre

3

type de contrainte est documenté: http://download.oracle.com/docs/cd/E11882_01/server.112/e10820/statviews_1045.htm#REFRN20047

S signifie "l'enregistrement supplémentaire", qui est expliqué plus en détail ici: http://download.oracle.com/docs/cd/E11882_01/server.112/e10704/strms_glossary.htm#CHDIHHGA et ici: http://download.oracle.com/docs/cd/E11882_01/server.112/e10705/prep_rep.htm#STREP107

Je n'ai aucune expérience avec elle. C'est le résultat d'une recherche sur tahiti.oracle.com.

Cordialement, Rob.

+0

Merci - n'a pas pensé à regarder dans le dictionnaire défs pour le types de contraintes. Je suis toujours intéressé par la raison pour laquelle cela entraîne une contrainte - je pense à une contrainte comme quelque chose qui empêchera DML sur une table et ne peut pas voir pourquoi la consignation supplémentaire affecterait une table de cette manière. – dpbradley

3

La journalisation supplémentaire est nécessaire pour prendre en charge certains types de capture de données asynchrones: AQ Streams par exemple et CDC (implémentations d'Oracle et de tiers). Ces mécanismes fonctionnent en lisant les journaux de rétablissement et en appliquant ces changements à une autre base de données Oracle. Le point de la journalisation supplémentaire est d'augmenter la quantité de données incluses dans les journaux de rétablissement,.

Il existe deux façons d'activer la journalisation supplémentaire. Dans les versions plus récentes de la base de données, nous pouvons définir l'enregistrement minimale au niveau de la base de données

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; 

En plus, nous pouvons ajouter spécifier des tables et des colonnes supplémentaires Connexion Groupes. L'objectif est d'inclure les valeurs des colonnes inchangées dans la table des modifications, car cela facilite l'application des modifications dans la base de données cible. Find out more.

De toute évidence, la contrainte de type S identifie les colonnes d'un groupe de journaux supplémentaires. Je pense que la raison pour laquelle ils sont désactivés est qu'ils n'appliquent pas de règle d'intégrité des données (contrairement aux clés primaires ou aux contraintes de vérification). Si oui, je pense qu'il serait imprudent de les activer, et donc vous devriez réécrire votre nettoyage automatique pour filtrer les contraintes de type S.

+0

Oui, ces contraintes font partie de l'architecture de journalisation supplémentaire, mais il me semble étrange que l'implémentation implique cette construction. J'ai toujours considéré la contrainte == restriction de données, et cela ne correspond pas à ce modèle.Bien sûr, j'ai suivi le lien de Rob vers la documentation x_CONSTRAINTS et j'ai trouvé quelques autres types qui se sont infiltrés pendant que je ne regardais pas :-). Il est temps de passer en revue tous ces scripts d'utilité ... – dpbradley

+0

aussi, je pense que je suis d'accord avec vous pour ne pas les réactiver. Bien que cela ne semble pas blesser quoi que ce soit dans un système de test, ne pas en comprendre la raison me fait craindre un cas de bord avec des configurations d'abonnement qui échoueraient horriblement dans la production. – dpbradley