Flashback Transaction Query

mercoledì 20 agosto 2008 alle 20:49 | Pubblicato su Installation and Configuration, Linux | 3 commenti
Tag: ,

Oggi mi è arrivata per l’ennesima volta la mail da Oracle per il rinnovo dell’abbonamento all’Oracle Magazine. Sospetto che qualcosa nel sistema informatico di Oracle che gestisce tali abbonamenti non funzioni proprio bene, perchè mi sembra di aver fatto tale rinnovo già un paio di mesi fa, dopo che mi ero perso qualche numero. In ogni caso ho seguito la procedura che richiede l’aggiornamento dei propri dati sul sito di Oracle e al termine di tale operazione ho dato un’occhiata al sito. Ho così colto l’occasione per dare un’occhiata agli articoli che vengono pubblicati sulla certificazione (siccome sto ancora studiando per l’esame OCP). Arrivato ad un articolo sull’argomento “flashback” ho colto l’occasione per fare alcune prove e a quanto pare ho trovato una bizzarra anomalia.  L’anomalia riguarda la cossidetta “Flashback Transaction Query” e prima di procedere alla descrizione del caso che ho riscontratto devo premettere che tale “feature”  richiede la versione Enterprise Edition.

L’anomalia

Continuo a chiamarla anomalia, potrebbe anche essere un baco, ma potrebbe anche essere una cosa indirettamente voluta. Per farla breve su versione 10.2.0.3 standard edition su Windows 32 bit la vista FLASHBACK_TRANSACTION_QUERY non visualizza tutti i dati. Per spiegarmi meglio riporto un caso di esempio:

Da una sessione faccio una transazione che riguarada due tabelle, A e B:


Connesso a:
Oracle Database 10g Release 10.2.0.3.0 - Production

SVILUPPO40@perseo10 > create table a (num1 number);

Tabella creata.

SVILUPPO40@perseo10 > create table b (num1 number);

Tabella creata.

SVILUPPO40@perseo10 > insert into a values (101);

Creata 1 riga.

SVILUPPO40@perseo10 > insert into b values (101);

Creata 1 riga.

SVILUPPO40@perseo10 > commit;

Commit completato.

Dopo di che, da un’altra sessione, con l’utente SYSTEM che ha già i necessari privilegi, cerco di visualizzare le modifiche fatta dalla transazione:


SYSTEM@perseo10 > SELECT VERSIONS_XID,versions_operation
  2   FROM sviluppo40.A VERSIONS BETWEEN SCN MINVALUE AND  MAXVALUE;

VERSIONS_XID     V
---------------- -
05001D004EB30100 I

SYSTEM@perseo10 >  SELECT OPERATION,TABLE_NAME FROM
  2   FLASHBACK_TRANSACTION_QUERY WHERE XID=HEXTORAW('05001D004EB30100');

OPERATION                        TABLE_NAME
-------------------------------- ------------------------------
INSERT                           A
BEGIN

Selezionate 2 righe.

L’anomalia che dalla query sulla FLASHBACK_TRANSACTION_QUERY  non esce l’insert sulla tabella B. Ho fatto una prova su una installazione simile, 10.2.0.3 su Windows 32 bit, ma Enterprise Edition e tale anomalia non si ripete. Su un’altra installazione 10.2.0.3 su Windows 32 bit Standard Edition succede la stessa cosa. Non mi succede su una versione 10.20.2 e nemmenon su altre 10.2.0.3 standard edition ma su Linux 64 bit.

Se succedesse su tutte installazioni standard edition la capirei come una cosa voluta, ma il fatto che non mi Linux funzioni mi ha lasciato perplesso

3 commenti »

RSS feed for comments on this post. TrackBack URI

  1. Ciao Cristian,
    se non prendo un abbaglio, non vedi le INSERT in B perchè hai richiesto il VERSIONS_XID (=XID della FLASHBACK_TRANSACTION_QUERY) della sola tabella A.

    SELECT xid
    ,operation
    ,undo_sql
    FROM flashback_transaction_query
    WHERE table_owner = ….
    AND table_name IN (‘A’,’B’);

  2. Ciao Stefano,
    lo XID è lo stesso, in quanto indentificativo della transazione che è unica. In un primo momento era venuto anche a me questo dubbio, ma se provi a fare il test ne avrai conferma. Quello che accade a me è che nella FLASHBACL_TRANSACTION_QUERY non vi è proprio traccia della tabella B, la seconda. Se inverti le insert compare solo la B.

  3. Metalink effettivamente indica che le Oracle Flashback features nella 10.2 non sono parte
    della Standard Edition o della Standard Edition One. Probabile allora che il dizionario
    contenga la FLASHBACK_TRANSACTION_QUERY ma che poi le interrogazioni su quest’ultima
    mostrino risultati inaffidabili, come nel tuo caso.

    Resta il mistero: perchè in Standard Edition su Linux 64-bit funziona ?
    Ask Tom then !!
    Ciao.


Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Blog su WordPress.com.
Entries e commenti feeds.

%d blogger cliccano Mi Piace per questo: