2013-06-27 1 views
6

Comment concevoir une table dans Oracle 11g afin qu'elle soit compatible plus tard avec la nouvelle fonctionnalité "Durée de validité" dans Oracle 12c?Comment utiliser la validité temporelle dans Oracle 12c?

La documentation en ligne de 12c Oracle spécifie comment définir la validité temporelle INTHE guide de langage SQL (http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_7002.htm#CJADHJHB)

ALTER TABLE my_table ADD (PERIOD FOR my_valid_time (my_valid_start, my_valid_end)); 

On pourrait donc utiliser les bonnes vieilles colonnes de VALID_FROM et valid_till déjà en 11g et les boeuf jusqu'à bon périodes en 12c, non?

J'ai hérité des bases de données qui utilisent des dates magiques fixes pour "depuis toujours" et "pour toujours", par exemple DATE '1900-01-01' et DATE '3999-12-31'. Apparemment, 12c utilise NULL à la place. Donc, devons-nous abandonner en utilisant des dates magiques fixes et passer à NULL dates?

+1

Grande question sur 12c! Je n'ai pas encore utilisé le 12c, donc j'ajoute juste un commentaire au lieu d'une réponse. Ma lecture initiale sur la fonctionnalité Temporaire Validité est que, alors que les valeurs NULL seraient préférables, les dates de magie fonctionneraient aussi bien. Ils pourraient interférer quelque peu avec les CBO d'Oracle et provoquer de mauvais plans de requête, mais cela a toujours été le cas avec les valeurs magiques de toute façon; et les nouveaux histogrammes de 12c pourraient également contribuer à atténuer cela. –

Répondre

3

Oui, vous serez en mesure de modifier la table 12c pour permettre la validité temporelle (voir la section ALTER TABLE des docs: http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_3001.htm#CJAEGCFI)

Il fonctionne en convertissant votre clause where à un « < = » et La clause "> ou est nulle", vous n'avez donc pas besoin de changer les dates fixes si vous ne le souhaitez pas.

Tom Kyte vient de poster sur son blog à ce sujet aujourd'hui, avec quelques exemples execellent: http://tkyte.blogspot.com/2013/07/12c-flashforward-flashback-or-see-it-as.html

+0

+1 pour le lien Tom Kyte, vraiment excellemment expliqué. Et vous avez raison, bien sûr, 'NULL' _and_' 1900' fonctionneront tous les deux, merci de l'avoir signalé! –

+1

Existe-t-il un moyen de définir des contraintes sur ces périodes pour éviter les plages de chevauchement? –

Questions connexes