2012-01-25 11 views
5

Supponiamo di disporre di due database Oracle, DB_A e DB_B. C'è una tabella denominata TAB1 in DB_A con un registro vista materializzata, e una vista materializzata nome SNAP_TAB1 in DB_B creato conEsiste un modo per interrogare le modifiche apportate da una visualizzazione materializzata per un rapido aggiornamento in Oracle?

CREATE SNAPSHOT SNAP_TAB1 
REFRESH FAST 
AS SELECT * FROM [email protected]_A; 

C'è un modo per interrogare in DB_B le modifiche apportate SNAP_TAB1 dopo ogni chiamata per l'avvolgimento rapido aggiornare la vista materializzata?

DBMS_SNAPSHOT.REFRESH('SNAP_TAB1', 'F'); 

In DB_A, prima l'aggiornamento, è possibile interrogare il tavolo vista del registro materializzata, Mlog $ _TAB1, per vedere quali file sono stati modificati in TAB1. Sto cercando un modo per interrogare in DB_B, dopo ogni aggiornamento, quali righe sono state aggiornate in SNAP_TAB1.

Grazie!

risposta

1

penso che le linee sotto il lavoro con tavolo precompilati:

È possibile aggiungere una colonna della tabella SNAP_TAB1.

Per inserti Puoi metterlo su default sysdate => per ogni inserto avrai il timestamp dell'inserto.

Per gli aggiornamenti è possibile utilizzare un trigger. Poiché la colonna non è coinvolta nella Vista materializzata, l'aggiornamento della colonna con il trigger non costituirà un problema.

esaltante meglio, con il grilletto è possibile utilizzare un ID unico per memorizzare in quella colonna, incrementato prima di ogni nuovo aggiornamento. (Come ottenere l'ID univoco può avere differenti aproaches.)

Ovviamente, si puo' t track elimina con questa idea.

Problemi correlati