Perspektywy zmaterializowane - migawki

Podobne dokumenty
Rozproszone bazy danych Oracle. (c) Politechnika Poznańska, Instytut Informatyki 367

Integracja systemów transakcyjnych

Rozproszone bazy danych Oracle

Rozproszone bazy danych Oracle

Rozproszone bazy danych 1

Rozproszone bazy danych Oracle. (c) Politechnika Poznańska, Instytut Informatyki 367

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych

Modelowanie wymiarów

Materializowanie wyników zapytania

Ćwiczenie 8. Rozproszone bazy danych

Rozproszone bazy danych

Bazy danych - Materiały do laboratoriów VIII

Uprawnienia, role, synonimy

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy];

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Zbiór pytań nr 5. 2 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

System Oracle podstawowe czynności administracyjne

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Administracja bazy danych Oracle 10g

Optymalizacja poleceń SQL

startup pfile= '$HOME/admin/pfile/initDBx.ora'; create spfile from pfile= '$HOME/admin/pfile/initDBx.ora';

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. UŜytkownicy i schematy (2) UŜytkownicy i schematy (1) baza danych: ZESP99

Oracle10g Database: struktury fizyczne dla hurtowni danych

Rozproszone i obiektowe systemy baz danych Charakterystyka rozproszonego systemu baz danych

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Zbiór pytań nr 2. 1 Tabela DEPARTMENTS ma następującą strukturę:

Wykład 8. SQL praca z tabelami 5

Język SQL, zajęcia nr 1

Zadania do wykonania na laboratorium

Zarządzanie obiektami bazy danych Oracle11g

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Rozproszone bazy danych 3

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Architektura Systemu Zarządzania Bazą Danych Oracle

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

Ile rekordów będzie zawierała tabela przy założeniu, że na początku była pusta?

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

Performance Tuning. w środowisku RAC/WebLogic na maszynach Sun T5220

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

1 Projekt fizyczny 1. 3 Perspektywy słownika danych Źródła 12

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Wydajność hurtowni danych opartej o Oracle10g Database

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Hurtownie danych - przegląd technologii Robert Wrembel Politechnika Poznańska Instytut Informatyki

Język PL/SQL. Rozdział 6. Procedury wyzwalane

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

Relacyjne bazy danych. Podstawy SQL

Oracle PL/SQL. Paweł Rajba.

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Perspektywy zmaterializowane

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

Bazy Danych i Usługi Sieciowe

Wykład 5. SQL praca z tabelami 2

Język SQL. Rozdział 8. Język manipulowania danymi DML

1. Wyzwalacze BD (ang. triggers)

Bazy danych 10. SQL Widoki

Cwiczenie 7. Retrospekcja

Paweł Rajba

Baza danych inside. Biologiczne Aplikacje Baz Danych

Zaawansowane bazy danych i hurtownie danych semestr I

PODSTAWY BAZ DANYCH. 10. Partycjonowanie tabel i indeksów. 2009/ Notatki do wykładu "Podstawy baz danych"

Widok Connections po utworzeniu połączenia. Obszar roboczy

Administracja i programowanie pod Microsoft SQL Server 2000

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Replikacja danych w bazach danych Oracle9i

Technologie baz danych

Partycjonowanie. Partycjonowanie tabel (1)

Partycjonowanie tabel (1)

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

SQL> startup pfile=./admin/pfile/initdbx.ora. SQL> create spfile from pfile='$home/admin/pfile/initdbx.ora' create user bolek identified by bolek;

Bazy danych i usługi sieciowe

(c) Politechnika Poznańska, Instytut Informatyki

Relacyjne bazy danych. Podstawy SQL

Technologie baz danych WYKŁAD 7: Wyjątki

Przed modyfikacją buforów danych proces serwera zapisuje w buforze dziennika powtórzeń wszystkie zmiany dokonane w bazie danych.

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

(a) T (b) N (c) N (d) T

PODSTAWY BAZ DANYCH. 7. Metody Implementacji Baz Danych. 2009/ Notatki do wykładu "Podstawy baz danych" 1

Oracle Label Security

Projekt z rozproszonych i obiektowych systemów baz danych

Bazy danych 7. SQL podstawy

Systemowe aspekty baz

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Tworzenie u ytkownika. ORACLE (Wykład 6) Uwierzytelnianie u ytkowników. Przył czenie u ytkownika do bazy. Nadawanie uprawnie systemowych

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

PODSTAWY BAZ DANYCH 13. PL/SQL

Transkrypt:

Perspektywy zmaterializowane - migawki CIO.WAR.PL Ogólna architektura NET8 dblink SIEC CIO2.POZ.PL NET8 WO select... from konta@wo.cio.war.pl, klienci@po2.cio2.poz.pl...; insert into konta@cio.war.pl...; update konta@cio2.poz.pl...; commit; PO2 (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 2

Dolaczenie bazodanowe CREATE [PUBLIC] DATABASE LINK nazwa CONNECT TO uzytkownik IDENTIFIED BY haslo USING nazwa_bazy_danych ; create database link LAB.WORLD connect to scott identified by tiger using 'LAB.WORLD'; domyslnie tworzone dolaczenie prywatne tworzenie dolaczenia publicznego wymaga uprawnienia CREATE PUBLIC DATABASE LINK select * from emp@lab.world; select * from scott.emp@lab.world; select * from usr.accounts@lab.world; scott musi posiadac uprawnienie SELECT do tabeli accounts w schemacie USR (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 3 Dolaczenie bazodanowe (2) update emp@lab.world set sal=sal*. where deptno=0; create table employees as select * from emp@lab.world; pierwsze odwolanie do dolaczenia otwiera je dolaczenie pozostaje otwarte do konca sesji lub jawnego jego zamkniecia poleceniem: ALTER SESSION CLOSE DATABASE LINK nazwa; przed zamknieciem dolaczenia nalezy zakonczyc transakcje korzystajaca z niego select * from scott.emp@lab.world; alter session close database link LAB.WORLD; ERROR: ORA-02080: database link is in use (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 4 2

Replikacja danych synchroniczna / natychmiastowa asynchroniczna / opózniona standardowa LAB update emp@orc...; insert into emp@orc...; delete emp@orc...; SIEC ORC select emp replika select insert update delete emp tabela master (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 5 Replikacja danych (2) zaawansowana (Oracle Advanced Replication Option) LAB SIEC ORC insert update delete insert update delete emp replika insert, update, delete emp tabela master (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 6 3

Replika replika - migawka (ang. snapshot) -> kopia tabel znajdujacych sie w odleglych bazach danych definicja zawiera: zapytanie odwolujace sie do tabel (zwanych master) w zdalnych bazach danych sposób odswierzania danych migawki czestotliwosc odswierzania danych migawki standardowo tylko do odczytu przywileje systemowe niezbedne do tworzenia: CREATE SNAPSHOT, CREATE TABLE, CREATE VIEW CREATE ANY SNAPSHOT (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 7 Migawka rodzaje migawek PRIMARY KEY tabela master musi posiadac wlaczone ograniczenie PRIMARY KEY klauzula SELECT musi zawierac wszystkie atrybuty wchodzace w sklad klucza podstawowego tabeli master ROWID migawka prosta bazujaca na jednej tabeli master brak klauzul: GROUP BY, CONNECT BY, DISTINCT brak funkcji, polaczen, operatorów zbiorowych migawka zlozona implementacja migawki: tabela + perspektywa + indeksy (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 8 4

Tworzenie migawki CREATE SNAPSHOT [schemat.]migawka [ parametry_fizyczne ] [ TABLESPACE nazwa_przestrzeni ] [ USING INDEX [ parametry_fizyczne ] [ TABLESPACE nazwa_przestrzeni ] ] [ REFRESH { FAST COMPLETE FORCE } ] [ WITH { PRIMARY KEY ROWID } ] [ START WITH data ] [ NEXT data ] [ USING [ LOCAL ROLLBACK SEGMENT rbs ] [ MASTER ROLLBACK SEGMENT rbs ] ] AS SELECT...; parametry_fizyczne bloku: PCTFREE, PCTUSED (nie dla indeksu), INITRANS, MAXTRANS rozszerzen: STORAGE INITIAL, NEXT, MINEXTENTS, MAXEXTENTS, PCTINCREASE (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 9 sposób odswiezania Odswiezanie migawki REFRESH FAST -> odswiezanie przyrostowe dla migawek prostych musi istniec SNAPSHOT LOG dla tabeli master REFRESH COMPLETE -> odswiezanie pelne REFRESH FORCE -> automatyczny wybór metody odswiezania; jezeli mozliwe to Oracle wybiera FAST okres odswiezania START WITH -> data pierwszego odswiezenia NEXT -> wyrazenie okreslajace czestotliwosc odswiezania Odswiezanie automatyczne musi byc wyspecyfikowany parametr NEXT okreslenie czestotliwosci odswiezania REFRESH FAST START WITH sysdate NEXT sysdate+ REFRESH FAST NEXT sysdate+ (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 0 5

Odswiezanie automatyczne (2) wlaczenie procesu odpowiedzialnego za odswiezanie parametr konfiguracyjny SNAPSHOT_REFRESH_PROCESSES -> wartosc wieksza od 0 (max. 0) -> procesy drugoplanowe SNP 0 - SNP 9 SNAPSHOT_REFRESH_INTERVAL domyslnie 60 sekund SNAPSHOT_REFRES_KEEP_CONNECTIONS domyslnie FALSE Odswiezanie reczne wylaczenie procesu odpowiedzialnego za odswiezanie SNAPSHOT_REFRESH_PROCESSES=0 brak parametru NEXT REFRESH FAST START WITH sysdate migawka odswiezona raz, w momencie jej tworzenia (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki Odswiezanie reczne (2) procedura DBMS_SNAPSHOT.REFRESH DBMS_SNAPSHOT.REFRESH ( sn, sn 2,..., sn n, metoda ) sn, sn 2,..., sn n : migawki metoda: metoda odswiezania f lub F: FAST c lub C: COMPLETE?: domyslny DBMS_SNAPSHOT.REFRESH ( s_dept, s_emp, s_emp, C ) DBMS_SNAPSHOT.REFRESH ( s_dept, s_emp, s_emp, CF ) domyslny (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 2 6

Przyklad create snapshot sn_emp pctfree 30 pctused 30 storage (initial 0K next 0K pctincrease 0 minextents maxextents 0) tablespace usr refresh fast start with sysdate+/(24*60) next sysdate+/(24*60*6) with rowid odswiezanie co 0 sek. using local rollback segment rb master rollback segment rb04 as select * from emp@lab.world; SNAP$_SN_EMP -> TABLE I_SNAP$_SN_EMP -> INDEX SN_EMP -> VIEW zawiera kolumne M_ROW$$ przechowujaca ROWID rekordów tabeli emp@lab.world na kolumnie SNAP$_SN_EMP.M_ROW$$ (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 3 Modyfikowanie migawki ALTER SNAPSHOT [schemat.]migawka [ parametry_fizyczne ] [ USING INDEX [ parametry_fizyczne ] [ REFRESH { FAST COMPLETE FORCE } ] [ WITH PRIMARY KEY ] [ START WITH data ] [ NEXT data ] [ USING MASTER ROLLBACK SEGMENT rbs ]; parametry_fizyczne bloku: PCTFREE, PCTUSED (nie dla indeksu), INITRANS, MAXTRANS rozszerzen: STORAGE NEXT, MINEXTENTS, MAXEXTENTS, PCTINCREASE alter snapshot sn_emp pctfree 20 pctused 40 initrans 4 storage (next 20K pctincrease 0 minextents maxextents 20) refresh complete start with sysdate next sysdate+/(24*60*0) with primary key using master rollback segment rb03; (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 4 7

Dziennik migawki (ang. snapshot log) tabela zwiazana z tabela master migawki przechowuje zmiany dokonane na danych tabeli master wykorzystywany do odswiezania przyrostowego tworzenie: CREATE SNAPSHOT LOG ON [schemat.]tabela [ parametry_fizyczne ] [ TABLESPACE nazwa_przestrzeni ] [ WITH { PRIMARY KEY ROWID { PRIMARY KEY, ROWID } } WITH PRIMARY KEY: wartosci atrybutów wchodzacych w sklad klucza rekordów uaktualninych sa rejestrowane w dzienniku WITH ROWID: ROWID rekordów uaktualnionych rejestrowane w dzienniku WITH PRIMARY KEY, ROWID: w dzienniku rejestrowane zarówno wartosci atr. kluczowych, jak i ROWID (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 5 Przyklad create snapshot log on scott.emp pctfree 30 pctused 30 initrans 2 maxtrans 0 storage (initial 0K next 0K pctincrease 0 minextents maxextents 0) tablespace lab_dane with primary key, rowid; MLOG$_EMP Name Type ----------------- ------------- EMPNO NUMBER(4) M_ROW$$ VARCHAR2(255) SNAPTIME$$ DATE DMLTYPE$$ VARCHAR2() OLD_NEW$$ VARCHAR2() CHANGE_VECTOR$$ RAW(255) (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 6 8

Przyklad (2) insert into emp values (000, 'BOND', 'MANAGER', NULL, '0-JAN-99', 6000, 500, 30); update emp set comm=comm+300 where empno=7839; delete from emp where empno=7698; select * from mlog$_emp; EMPNO M_ROW$$ SNAPTIME$ DML OLD_ CHANGE_ TYPE$$ NEW$$ VECTOR$$ ----- ------------------ --------- ------ ----- -------- 000 AAAApTAACAAAAn5AAD 0-JAN-00 I N FEFF 7839 AAAApTAACAAAAn5AAA 0-JAN-00 U U 8000 7698 AAAApTAACAAAAn5AAB 0-JAN-00 D O 0000 (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 7 Modyfikowanie dziennika migawki ALTER SNAPSHOT LOG ON [schemat.]tabela [ parametry_fizyczne ] [ ADD { PRIMARY KEY ROWID } ]; parametry_fizyczne bloku: PCTFREE, PCTUSED, INITRANS, MAXTRANS rozszerzen: STORAGE NEXT, MINEXTENTS, MAXEXTENTS, PCTINCREASE Usuwanie migawki DROP SNAPSHOT [schemat.]migawka; Usuwanie dziennika migawki DROP SNAPSHOT LOG ON [schemat.]tabela; (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 8 9

Informacje o migawkach USER_SNAPSHOTS, ALL_SNAPSHOTS, DBA_SNAPSHOTS select name, table_name, master_owner, master, master_link, refresh_method, type, master_rollback_seg from dba_snapshots; NAME TABLE_NAME MASTER MASTER MASTER REFRESH TYPE MASTER OWNER LINK METHOD RBS ---------- ------------- ----- ------ ---------- ----------- -------- ------ SN_EMP SNAP$_SN_EMP SCOTT EMP @LAB.WORLD ROWID FAST SN_EMP SNAP$_SN_EMP SCOTT EMP @LAB.WORLD PRIMARY KEY COMPLETE RB04 (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 9 Informacje o dziennikach migawek USER_SNAPSHOT_LOGS, ALL_SNAPSHOT_LOGS, DBA_SNAPSHOT_LOGS select log_owner, master, log_table, rowids, primary_key, filter_columns, current_snapshots, snapshot_id from user_snapshot_logs; LOG MASTER LOG_TABLE ROWIDS PRIMARY FILTER CURRENT SNAPS. OWNER KEYS COLS. SNAPS. ID ------ ---------- ------------ ------ ------- ------ --------- -------- SCOTT EMP MLOG$_EMP YES YES NO 25-JAN-00 57 SCOTT EMP MLOG$_EMP YES YES NO 25-JAN-00 58 (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 20

Informacje o odswiezaniu migawek USER_SNAPSHOT_REFRESH_TMIES, ALL_SNAPSHOT_REFRESH_TIMES, DBA_SNAPSHOT_REFRESH_TIMES select owner, master_owner, name, master, to_char(last_refresh, 'dd-mm-yyyy:hh24:mi:ss') refresh from user_snapshot_refresh_times; MASTER LAST OWNER OWNER NAME MASTER REFRESH ----- ----- ------- ------ ------------------- ORC SCOTT SN_EMP EMP 26-0-2000::5:36 ORC SCOTT SN_EMP EMP 25-0-2000:22:07:28 (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 2 Informacje o zarejestrowanych migawkach w bazie master DBA_REGISTERED_SNAPSHOTS select owner, name, snapshot_site, can_use_log, updatable, refresh_method, snapshot_id, version from dba_registered_snapshots; REFRESH OWNER NAME CAN_USE_LOG UPD METHOD SNAPSHOT_ID VERSION ------ -------- ------------ --- ----------- ----------- ----------------- ORC SN_EMP ORC.WORLD NO ROWID 58 ORACLE 8 SNAPSHOT ORC SN_EMP ORC.WORLD NO PRIMARY KEY 57 ORACLE 8 SNAPSHOT select sl.master "Master table", sl.log_table, rs.name as "Snp.name" from dba_snapshot_logs sl, dba_registered_snapshots rs where sl.snapshot_id=rs.snapshot_id; Master table LOG_TABLE Snp.name ------------ ------------ --------- EMP MLOG$_EMP SN_EMP EMP MLOG$_EMP SN_EMP (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 22

Wiele niezaleznych migawek - problem migawka sn_dept dept tabela master 0 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS insert into dept values (50, 'INF.TECHNOLOGY', 'LONDON'); update emp set deptno=50 where ename= BLAKE ; migawka sn_emp 2 emp tabela master 3 exec dbms_snapshot.refresh('sn_emp', 'f') ename deptno ---------- ---------- BLAKE 50? (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 23 Grupy odswiezania (ang. refresh groups) odswiezane jednoczesnie spójnosc danych migawek Tworzenie grupy odswiezania DBMS_REFRESH.MAKE ( name, list, next_date, interval, implicit_destroy, rollback_seg ) nazwa grupy lista migawek przypisywanych do grupy; data nastepnego odswiezenia okres odswiezania TRUE: usuniecie grupy jezeli nie zawiera migawek (zob. SUBTRACT) domyslnie FALSE rbs wykorzystywany do odswiezania lista migawek migawki musza byc w tej samej bd moga byc w róznych schematach max. 00 migawek w grupie (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 24

Tworzenie grupy odswiezania(2) exec DBMS_REFRESH.MAKE (name => 'orc.rg_dept_emp', - list => 'orc.sn_dept, orc.sn_emp', - next_date => sysdate+/48, - interval => 'next_day(trunc(sysdate), ''FRIDAY'')+0/24', - implicit_destroy => TRUE, - rollback_seg => 'rb') Dodanie migawki do grupy exec DBMS_REFRESH.ADD ('orc.rg_dept_emp', orc.sn_emp') Usuniecie migawki z grupy exec DBMS_REFRESH.SUBTRACT('orc.rg_dept_emp', 'orc.sn_emp') (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 25 Zmiana parametrów grupy DBMS_REFRESH.CHANGE ( name, exec DBMS_REFRESH.CHANGE next_date, ( name => 'orc.rg_dept_emp', - interval, next_date => sysdate+/(48*60), - implicit_destroy, interval => 'next_day(trunc(sysdate), ''SATURDAY'')+8/24', - rollback_seg ) implicit_destroy => FALSE, - rollback_seg => 'rb0') Manualne odswiezanie grupy exec DBMS_REFRESH.REFRESH('orc.rg_dept_emp') Usuniecie grupy odswiezania usuwa grupe z migawkami lub pusta exec DBMS_REFRESH.DESTROY('orc.rg_dept_emp') (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 26

Informacje na temat utworzonych grup USER_REFRESH_CHILDREN, ALL_REFRESH_CHILDREN, DBA_REFRESH_CHILDREN select rowner, rname, refgroup, implicit_destroy, rollback_seg, next_date, interval, broken from user_refresh; Impl. Rollb. ROWNER RNAME REFGROUP destr. segm. NEXT_DATE INTERVAL Broken ------ ----------- --------- ------ ------ --------- ------------------------ ------ ORC RG_DEPT_EMP 96 N RB0 26-JAN-00 next_day(trunc(sysdate), N 'SATURDAY')+8/24 jezeli automatyczne odswiezanie stalo sie niemozliwe: proces odswiezajacy wykonuje n prób odswiezenia w odstepach, 2, 4, 8, 6,... minut (nie przekracza zadanego okresu odswiezania grupy, n= max. 6) jezeli n-ta próba niepomyslna ustawiana wartosc BROKEN=Y po usunieciu problemu odswiezenie manualne (BROKEN=N) -> przywrócenie odswiezania automatycznego (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 27 Informacje na temat migawek w grupie USER_REFRESH, ALL_REFRESH, DBA_REFRESH select owner, name, type, rowner, rname from user_refresh_children; OWNER NAME TYPE ROWNER RNAME -------- ------------ --------- -------- ------------ ORC SN_DEPT SNAPSHOT ORC RG_DEPT_EMP ORC SN_EMP SNAPSHOT ORC RG_DEPT_EMP (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 28

Przepisywanie zapytania Query rewriting create materialized view suma_sprzedazy build immediate refresh complete enable query rewrite as select nazwa, sum(l_sztuk*cena_jedn) suma from sprzedaz sp, sklepy sk where sp.sklep_id=sk.sklep_id group by nazwa; select nazwa, sum(l_sztuk*cena_jedn) suma from sprzedaz sp, sklepy sk where sp.sklep_id=sk.sklep_id having sum(l_sztuk*cena_jedn) > 30000 group by nazwa; Execution Plan --------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 0 TABLE ACCESS (FULL) OF 'SUMA_SPRZEDAZY' (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 29 Przepisywanie zapytania (2) select nazwa, sum(l_sztuk*cena_jedn) suma from sprzedaz sp, sklepy sk where sp.sklep_id=sk.sklep_id and sk.miasto='poznan' group by nazwa; Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 0 SORT (GROUP BY) 2 NESTED LOOPS 3 2 TABLE ACCESS (FULL) OF 'SKLEPY' 4 2 TABLE ACCESS (FULL) OF 'SPRZEDAZ' (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 30

Przepisywanie zapytania (3) alter materialized view nazwa_perspektywy {enable disable} query rewrite; O tym, czy zmaterializowana perspektywa zostanie wykorzystana do zamiany zapytania decyduja dodatkowo trzy parametry konfiguracyjne instancji: OPTIMIZER_MODE, QUERY_REWRITE_ENABLED i QUERY_REWRITE_INTEGRITY Zamiana zapytania jest mozliwa tylko wówczas, gdy: System wykorzystuje optymalizator kosztowy, tj. () parametr konfiguracyjny instancji OPTIMIZER_MODE przyjmuje wartosc choose i (2) dla tabel bazowych zebrano statystyki Parametr konfiguracyjny QUERY_REWRITE_ENABLED przyjmie wartosc true (c) Robert Wrembel, Politechnika Poznanska, Instytut Informatyki 3