2013-06-27 4 views
6

Come progettare una tabella in Oracle 11g in modo che sia compatibile in seguito con la nuova funzione "Validità temporale" in Oracle 12c?Come utilizzare la validità temporale in Oracle 12c?

La documentazione in linea di Oracle 12c specifica come definire la validità temporale inthe guida SQL Lingua (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)); 

Così si potrebbe utilizzare il buon vecchio VALID_FROM e valid_till colonne già in 11g e rinforzare alla corretta periodi in 12c, giusto?

Ho ereditato database che utilizzano date di magia fisse per "sempre" e "per sempre", ad esempio DATE '1900-01-01' e DATE '3999-12-31'. Apparentemente, 12c usa invece NULL.

Quindi, dobbiamo abbandonare l'utilizzo di date di magia fisse e passare alle date NULL?

+1

Grande domanda su 12c! Non ho ancora usato 12c, quindi aggiungo solo un commento invece di una risposta. La mia lettura iniziale sulla caratteristica di Temporarl Validity è che, mentre i NULL sarebbero preferibili, anche le date magiche funzionerebbero altrettanto bene. Potrebbero interferire in qualche modo con il CBO di Oracle e causare scarsi piani di query, ma è sempre stato il caso con valori magici; e i nuovi istogrammi di 12c potrebbero andare in qualche modo a mitigare anche questo. –

risposta

3

Sì, si sarà in grado di alterare la tabella di 12c per consentire validità temporale (si veda la sezione ALTER TABLE dei documenti: http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_3001.htm#CJAEGCFI)

E funziona convertendo il tuo clausola WHERE per un "< =" e "> o è null", quindi non è necessario modificare le date fisse se non si desidera.

Tom Kyte appena pubblicato sul suo blog su questo oggi, con alcuni esempi execellent: http://tkyte.blogspot.com/2013/07/12c-flashforward-flashback-or-see-it-as.html

+0

+1 per il collegamento Tom Kyte, davvero ottimamente spiegato. E hai ragione, ovviamente, 'NULL' _and_' 1900' funzioneranno entrambi, grazie per averlo sottolineato! –

+1

Esiste un modo per definire i vincoli su questi periodi per evitare intervalli sovrapposti? –