Materialized View Kullanımı

--Önce kullanacağımız tablo ve materialized VIEW varsa onları bir DROP edelim de problem çıkarmasınlar.
DROP TABLE tablo1 ;
DROP materialized VIEW mv_tablo1;
DROP MATERIALIZED VIEW LOG ON tablo1;

/*Elimizde bulunan kaynak tablodaki dataları kullanacağımız tabloya aktarıyoruz.

Çünkü MATERIALIZED VIEW güncellemesini görebilmek için kullandığımız bu tablo1 tablosunda veri değişikliği yapacağız*/

CREATE TABLE tablo1 AS
SELECT fis_numarasi, islem_tarihi, brut_tahsilat, referans
FROM kaynak_tablo
WHERE islem_tarihi = to_date('01062012', 'ddmmyyy') ;

SELECT * FROM tablo1 ; -- tabloya kayıtlar atıldı
ALTER TABLE tablo1 ADD CONSTRAINT tablo1_pk PRIMARY KEY(referans) ; -- Tablo1'e primary key ekliyoruz,Kayıt değişikliklerini loglamak için kullanacak


-- tablo1 deki data değişikliklerini loglaması

CREATE MATERIALIZED VIEW LOG ON tablo1
WITH (fis_numarasi, brut_tahsilat), rowid including NEW VALUES ;
ALTER MATERIALIZED VIEW LOG ON tablo1 ;


/*Nihayet Materialized view'ı oluşturuyoruz.*/
CREATE MATERIALIZED VIEW mv_tablo1 REFRESH FAST ON COMMIT
WITH PRIMARY KEY AS
SELECT SUM(brut_tahsilat), fis_numarasi FROM tablo1 GROUP BY fis_numarasi;

-- Bakalım tabloda ve mv'de neler var
SELECT * FROM mv_tablo1 ;
SELECT * FROM tablo1 ;
SELECT * FROM MLOG$_tablo1 ;

-- Tabloya başka kayıtlarda atalım bakalık neler olacak :)
INSERT INTO tablo1
SELECT fis_numarasi, islem_tarihi, brut_tahsilat, referans FROM kaynak_tablo
WHERE islem_tarihi = to_date('30052012', 'ddmmyyyy') ;


SELECT * FROM mv_tablo1 ;

SELECT * FROM tablo1 ;

SELECT * FROM MLOG$_tablo1 ;

COMMIT;

SELECT * FROM MLOG$_tablo1 ;

SELECT * FROM mv_tablo1 ;


-- Peki mv'leri nereden takip edebiliriz
SELECT * FROM ALL_MVIEWS;
SELECT * FROM ALL_MVIEW_LOGS ;



/*ths tablo1mv_ths mv_tablo1islem_ref fis_numarasiislem_tar islem_tarihireferans_no referanstahsilat_table kaynak_tablo*/

Yorumlar

Bu blogdaki popüler yayınlar

DBA SCHEDULER JOB

Drop Edilen Tabloyu Geri Getirme

ORA-20001