Archiwizacja. i odtwarzanie bazy



Podobne dokumenty
Paweł Rajba

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

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

Wykład 8. SQL praca z tabelami 5

Bazy danych 7. SQL podstawy

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

SQL Server. Odtwarzanie baz danych.

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Wykład 2. SQL 1 Structured Query Lenguage

Bazy danych 10. SQL Widoki

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

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

Archiwizacja i odtwarzanie bazy danych

Klastrowanie bazy IBM DB2. Adam Duszeńko

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

Przyczyny awarii. Struktury wykorzystywane do odtwarzania bd. Archiwizowanie plików dziennika. Archiwizowanie danych. danych

Język SQL, zajęcia nr 1

Ref. 7 - Język SQL - polecenia DDL i DML

Tworzenie kopii zapasowej baz danych programu Lotus Connections 3.0 (oraz 3.0.1)

Aspekty aktywne baz danych

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

Wykład 4. SQL praca z tabelami 1

Bazy danych - Materiały do laboratoriów VIII

Bazy danych 5. Samozłaczenie SQL podstawy

Bazy Danych i Usługi Sieciowe

Bazy danych. Dr inż. Paweł Kasprowski

Administracja i programowanie pod Microsoft SQL Server 2000

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

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

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

Bazy danych i usługi sieciowe

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

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

Bazy danych 6. Klucze obce. P. F. Góra

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

Wykład 05 Bazy danych

SQL w praktyce. Miłej i owocnej nauki!!!

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

Hurtownia Świętego Mikołaja projekt bazy danych

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

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

Obiekty bazy danych DB2

SQL :: Data Definition Language

Autor: Joanna Karwowska

Bazy danych 4. SQL podstawy. P. F. Góra

Oracle PL/SQL. Paweł Rajba.

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Przygotowanie bazy do wykonywania kopii bezpieczeństwa

Widok Connections po utworzeniu połączenia. Obszar roboczy

Server Oracle - System Zarządzania Bazą Danych - składa się z instancji Oracle i bazy danych Oracle Instancja Oracle - pewne procesy drugoplanowe i

Wykład 5. SQL praca z tabelami 2

Administracja i programowanie pod Microsoft SQL Server 2000

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

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

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

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

Bazy danych Ćwiczenia projektowe

Instrukcja CREATE TABLE

Administracja i programowanie pod Microsoft SQL Server 2000

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

Bazy danych 9. SQL Klucze obce Transakcje

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

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Systemy GIS Tworzenie zapytań w bazach danych

Projektowanie systemów baz danych

Typy Oracle atrybutów relacji Typ NUMBER (1)

Wykład :45 BD-1 W_3

Komunikacja z bazą danych psql

Typy Oracle atrybutów relacji Typ NUMBER (1)

Bazy danych 2. Wykład 5 Structured Query Language (SQL) c.d. DDL

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Oracle PL/SQL. Paweł Rajba.

Zarządzanie obiektami bazy danych Oracle11g

Zarządzanie strukturą bazy danych Oracle11g

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

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

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

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Bazy danych Ćwiczenia projektowe

Administracja i programowanie pod Microsoft SQL Server 2000

Paweł Cieśla. Dokumentacja projektu

Tabela wewnętrzna - definicja

2 Przygotował: mgr inż. Maciej Lasota

P o d s t a w y j ę z y k a S Q L

Systemowe aspekty baz

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Bazy danych. Polecenia SQL

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Cwiczenie 7. Retrospekcja

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

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

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

Kopie zapasowe w SQL Server. Michał Bleja

Transkrypt:

Archiwizacja i odtwarzanie bazy

O czym będzie Metody odzyskiwania danych w DB2 Dzienniki transakcji Metody tworzenia kopii zapasowych Metody odtwarzania Operacje rollforward Odbudowa indeksów

Problemy... Nigdy nie wiadomo, kiedy awaria systemu może nastąpić Wiele powodów może być przyczyną utraty danych Czynniki zewnętrzne Czynniki wewnętrzne Pytania: Czy archiwizowaliśmy bazę? Czy jesteśmy w stanie odtworzyć wszystkie transakcje do ostatniego momentu z przed awarii

Strategia odtwarzania By minimalizować utratę danych musimy: opracować strategię odtwarzania upewnić się co do jej skuteczności ciągle przećwiczyć, testować i przystosować do zmian Mogą wystąpić takie scenariusze: Zatrzymanie systemu: brak zasilania, awaria sprzętu, błąd aplikacji mogą doprowadzić do niespójności bazy danych Błąd transakcji: nieumyślne umieszczenie błędnych danych przez użytkownika Awaria sprzętu: uszkodzenie nośnika danych (dysku(ów)) może powodować utratę części lub całej bazy danych Katastrofa: pożar, powódź i inne

Planowanie Aby zaplanować strategię odtwarzania i odzyskiwania danych należy sobie odpowiedzieć na następujące pytania Czy dane mogą być ponownie załadowane z innego źródła Na utratę jakiego rozmiaru danych możemy sobie pozwolić Ile czasu mamy na odzyskiwanie bazy danych Jakie zasoby (nośniki danych) posiadamy do przechowywania kopii zapasowych i pliki dziennika transakcji

Koncepcje odzyskiwania DB2 prowadzi następujące koncepcje odzyskiwania danych Crash recovery: pozwala na odtwarzanie bazy danych do stanu spójności poprzez wycofanie wszystkich nie zatwierdzonych transakcji Version recovery: pozwala na odtwarzanie bazy danych na podstawie ostatniego zachowanego obrazu bazy (komenda BACKUP). Wszystkie zmiany, które zachodziły w bazie od momentu wykonania komendy BACKUP do wystąpienia awarii są stracone! Rollforward recovery: Rozszerzenie version recovery o odzyskiwanie nie zapisanych zmian na podstawie zapisów w plikach dziennika transakcji Pozwala również na przywracanie bazy do określonej chwili czasu Wymaga zastosowania logów archiwalnych

Dziennik transakcji Jest decydującym czynnikiem w procesie odtwarzania bazy danych Przechowuje ścieżki wszystkich zmian zachodzących w obiektach i plikach bazy Dla zapewnienia integralności danych DB2 stosuje metodę uprzedni zapis (writeahead) Zapis do dziennika transakcji przed zapisaniem do plików bazy danych

Schemat zapisu danych

Wyjaśnienie Package cache: obszar pamięci do przechowywania przetwarzanych poleceń SQL Buffer pool: obszar pamięci do przechowywania danych Data page: strona pamięci (4kB może mieć do 32 kb) Log buffer: obszar pamięci do przechowywania zapisów dziennika transakcji Podczas przetwarzania poleceń SQL, zmiany są najpierw zachowane w buforze dziennika transakcji, następnie zapisane do pliku pliku dziennika (log buffer jest pełny lub zatwierdzenie transakcji commit-) Zapis do plików bazy danych nastąpi w momencie zapełnienia buffer pool (brak miejsca w pamięci na nowe strony) lub asynchroniczne (optymalizacja dostępu do danych)

Podstawowe i wtórne pliki dziennika transakcji Podstawowe pliki dziennika są tworzone natychmiast po połączeniu z bazą danych Wtórne pliki dziennika są tworzone dynamicznie w razie potrzeby Podstawowe parametry konfiguracji LOGPRIMARY: określa liczbę podstawowych plików dziennika do tworzenia LOGSECOND:określa maksymalną liczbę wtórnych plików dziennika do tworzenia LOGFILSIZ: rozmiar pliku dziennika (po 4kB)

Przykład konfiguracji LOGFILSIZ = 250 LOGPRIMARY= 3 LOGSECOND = 2 LOGPATH = C:\mylogs\ Zawartość c:\mylogs\ 2005-10-24 07:40p 1,032,192 S0000000.LOG 2005-10-24 07:40p 1,032,192 S0000001.LOG 2005-10-24 07:40p 1,032,192 S0000002.LOG

Typy plików dziennika Aktywny - wtedy gdy: Zawiera transakcje nie zatwierdzone (commited) lub nie wycofane (rolled back) Zawiera transakcje zatwierdzone ale jeszcze nie zapisane w plikach bazy danych Bieżący archiwalny plik dziennika: Zawiera informacje dot. transakcji zatwierdzonych zapisanych w plikach bazy danych Przechowywany w tym samym katalogu co aktywny plik dziennika Archiwalny plik dziennika: Plik dziennika przechowywany w innym katalogu lub urządzeniu

Rodzaje dzienników - Cykliczny Cykliczny dziennik (circular logging): domyślny rodzaj dziennika Jeśli zostało zdefiniowanych 4 podstawowe pliki dziennika (LOGPRIMARY=4) będą one użyte następująco: log#1, log#2, log#3, log#4, log#1, log#2... Plik dziennika może być ponownie użyty jeśli nie jest w stanie aktywnym Jeśli transakcja wymaga więcej plików dziennika niż zdefiniowano w LOGPRIMARY, DB2 wykorzysta wtórny plik dziennika (secondary log file)

Ilustracja Cykliczny plik dziennika

Rodzaje dzienników Przechowywany (retain) Plik dziennika nie może być użyty ponownie Po wykorzystaniu wszystkich plików dziennika są one archiwizowane do innego katalogu lub urządzeniu Należy inicjować taki rodzaj dziennika db2 update db cfg for database_name using LOGRETAIN ON db2 update db cfg for database_name using USEREXIT ON Userexits: programy pozwalające na przeniesienie archiwalnych plików dziennika do innego katalogu niż pliki aktywnego dziennika lub do innego urządzenia

Ilustracja Przechowywany plik dziennika (retain)

Archiwizacja bazy Sporządza kompletną kopię bazy danych Zawiera informacje dot. przestrzeni tablicowych, konfigurację bazy, dzienniki transakcji... Wymaga posiadania uprawnienia: SYSADM, SYSCTRL, SYSMAINT Składnia: BACKUP DATABASE database-alias [USER username [USING password]] [TABLESPACE (tblspace-name [ {,tblspace-name}... ])] [ONLINE] [INCREMENTAL [DELTA]] [USE {TSM XBSA} [OPEN num-sess SESSIONS]] TO dir/dev [ {,dir/dev}... ] LOAD lib-name [OPEN num-sess SESSIONS]] [WITH num-buff BUFFERS] [BUFFER buffer-size] [PARALLELISM n] [WITHOUT PROMPTING]

Przykład Archiwizacja bazy sample do katalogu mybackups BACKUP DATABASE sample TO d:\mybackups Archiwizacja z dodatkowymi parametrami BACKUP DATABASE sample TO /db2backup/dir1, /db2backup/dir2 WITH 4 BUFFERS BUFFER 4096 PARALLELISM 2 Archiwizacja w trybie online BACKUP DATABASE sample ONLINE TO /dev/rdir1, /dev/rdir2 //nazwa bazy //lokalizacja //liczba buforów //rozmiar bufora //liczba wątków

Archiwizacja przestrzeni tablicowych Jeśli w bazie danych większe zmiany dotyczą jedynie niektórych tablic można archiwizować tylko wybranych przestrzeni tablicowych Składnia: BACKUP DATABASE sample TABLESPACE ( syscatspace, userspace1, userspace2 ) ONLINE TO /db2tbsp/backup1, /db2tbsp/backup2

Archiwa przyrostowe Dzielą się na 2 rodzaje Przyrostowy: DB2 archiwizuje wszystkie dane, które zmieniły się od ostatniego pełnego archiwum Delta: DB2 archiwizuje dane, które zmieniły się od ostatniego pełnego, przerostowego lub delta archiwum Ilustracja

Wykorzystanie Control Center

Parametry backup u

Nazwy plików archiwum Windows: Alias Instancja Nr katalogu węzła Miesiąc GodzinaSekunda DBALIAS.0\DB2INST\NODE0000\CATN0000\20051023\201050.001 Typ Unix/Linux Węzeł Rok Dzień Minuta DBALIAS.0.DB2INST.NODE0000.CATN0000.20051023201050.001 Nr kolejny Typ: 0: pełne archiwum 3: archiwum przestrzeni tablicowej Dla nie partycjonowanej bazy zawsze NODE0000 i CATN0000

Odtwarzanie bazy Odtwarzanie bazy wykonuje się komendą RESTORE Składnia: RESTORE DATABASE source-database-alias { restore-options CONTINUE ABORT } Opcje: [USER username [USING password]] [{TABLESPACE [ONLINE] TABLESPACE (tblspace-name [ {,tblspace-name}... ]) [ONLINE] HISTORY FILE [ONLINE]}] [INCREMENTAL [AUTOMATIC ABORT]] [{USE {TSM XBSA} [OPEN num-sess SESSIONS] FROM dir/dev [ {,dir/dev}... ] LOAD shared-lib [OPEN num-sess SESSIONS]}] [TAKEN AT date-time] [TO target-directory] [INTO target-database-alias] [NEWLOGPATH directory] [WITH num-buff BUFFERS] [BUFFER buffer-size] [DLREPORT file-name] [REPLACE EXISTING] [REDIRECT] [PARALLELISM n] [WITHOUT ROLLING FORWARD] [WITHOUT DATALINK] [WITHOUT PROMPTING]

Przykład (1)RESTORE DATABASE sample (2) FROM C:\DBBACKUP (3) TAKEN AT 20051023201050 (4) WITHOUT ROLLING FORWARD (5) WITHOUT PROMPTING (1) nazwa bazy (2) źródło (miejsce archiwum) (3) data i czas wykonania archiwum (4) jeśli były wykorzystane archiwalne pliki dziennika, przy odtwarzanie bazy jest ona automatycznie ustawiona w trybie Rollforward recovery (rozszerzenie version recovery o odzyskiwanie nie zapisanych zmian na podstawie zapisów w plikach dziennika transakcji) Tu rezygnacja z ROLLFORWARD (5) bez potwierdzenia rozpoczęcia odtwarzania

Odtwarzanie przestrzeni tablicowych Można odtworzyć z archiwum bazy lub przestrzeni tablicowej Przykład: (1) RESTORE DATABASE sample (2) TABLESPACE ( mytblspace1 ) (3) ONLINE (4) FROM /db2tbsp/backup1, /db2tbsp/backup2 (3) online: umożliwia odtwarzania przestrzeni tablicowej podczas pracy innych użytkowników. W przypadku odtwarzania bazy opcja online jest niedozwolona

Wykorzystanie Control Center

Parametry odtwarzania

Odtwarzanie bazy - Rollforward Pozwala na odtwarzanie bazy do wybranego momentu czasu na podstawie zapisów dziennika transakcji Podczas odtwarzania DB2: Szuka pliki dziennika w odpowiednich katalogach Ponownie wykona wszystkie transakcje z pliku dziennika Wymaga uprawnienia: SYSADM, SYSCTRL, SYSMAINT ROLLFORWARD dla bazy wykonywany jest zawsze w trybie offline.

Przykłady (1)ROLLFORWARD DATABASE sample TO END OF LOGS AND COMPLETE (2)ROLLFORWARD DATABASE sample TO timestamp AND COMPLETE (3)ROLLFORWARD DATABASE sample TO timestamp USING LOCAL TIME AND COMPLETE (1) wykona odtwarzania bazy na podstawie archiwalnych i aktywnych plików dziennika, następnie wycofa wszystkich nie zatwierdzonych transakcji (2) odtwarza bazę do określonego momentu czasu (czas względem strefy czasowej) (3) jak (2) tylko dla lokalnego czasu

Odtwarzanie przestrzeni tablicowych ROLLFORWARD Może się odbywać zarówno w trybie online jak i offline za wyjątkiem tabeli systemowej SYSCATSPACE Przykład: ROLLFORWARD DATABASE sample TO END OF LOGS AND COMPLETE TABLESPACE ( userspace1 ) ONLINE

Wykorzystanie Control Center

Parametry odtwarzania

Obiekty w bazie DB2-UDB

Typy danych Poza standardowymi typami danych (INTEGER, CHAR, DATE) DB2 pozwala użytkownikom na definiowanie własnych typów Wbudowane kategorie typów danych: Numeryczny (Numeric) Łańcuch znaków (String) Data i czasu (Datetime) Datalinks: do obsługi plików poza bazą Typy danych użytkownika Odmienny: typ danych oparty o wbudowanych typach Strukturalny: składa się z wielu kolumn typu wbudowanego Referencyjny: wykorzystując typu strukturalnego można zdefiniować referencje do wierszy innej tabeli za pomocą typu referencyjnego

Integer: Typy numeryczne Smallint (2 bajty): -32,768 do 32,767 Integer (4 bajty): -2,147,483,648 do 2,147,483,647 Bigint (8 bajtów): -9,223,372,036,854,775,808 do 9,223,372,036,854,775,807 Decimal(p,s) (p/2 + 1 bajtów) Decimal(10, 2) wymaga 6 bajtów Floating point Real (4 bajty) Double (8 bajtów)

Typy znakowe CHAR (CHARACTER): łańcuch znaków o określonej długości (max. 254 bajty) VARCHAR: łańcuch znaków o zmiennej długości(max 32,672 bajty) GRAPHIC: łańcuchy znaków dwubajtowych o określonej długości (max. 127 znaków) VARCHARGRAPHIC: łańcuchy znaków dwubajtowych o zmiennej długości (max. 16,336 znaków) Dodatkowe typy danych: LONG VARCHAR, CLOB (character large object), LONG VARGRAPHIC, DBCLOB (double byte CLOB), BLOB (Binary large object)

Typ daty i czasu DATE: przechowuje datę TIME: przechowuje czas TIMESTAMP: przechowuje datę i czas Wszystkie te typy są przechowywane w bazie w formacie wewnętrznym, aplikacje mogą również operować na nie jako łańcuchy znaków Wbudowane funkcje: DAYOFWEEK, DAYNAME, DAYS, CURRENT DATE

Datalinks Typ DATALINK służy do obsługi plików zewnętrznych Kolumna tabeli typu DATALINK pozwala na przechowywanie referencji do pliku poza bazą danych Plik zewnętrzny może być zapisany w tym samym systemie plików co baza lub na zdalnej maszynie Operowanie na danych tego typu wymaga użycie wbudowanych funkcji (DLVALUE)

Typy danych użytkownika 1/3 Odmienny (distinct type): zdefiniowane na podstawie wbudowanych (standardowych) typów DB2 Przykład: CREATE DISTINCT TYPE CANDOL AS DECIMAL(10,2) WITH COMPARISONS CREATE TABLE ITEMS (ITEMID CHAR(5), PRICE CANDOL ) INSERT INTO ITEMS VALUES('ABC11',CANDOL(30.50) )

Typy danych użytkownika 2/3 Strukturalny: składa się z wielu kolumn typu standardowego Np. definiujemy strukturę ADRES która składa się z atrybutów: ulica, miasto, nr domu... Można tak zdefiniowaną strukturę użyć przy definiowaniu struktury tabel

Typy danych użytkownika 3/3 Referencyjny: wykorzystując typu strukturalnego można zdefiniować referencje do wierszy innej tabeli za pomocą typu referencyjnego

Tabele CREATE TABLE BOOKS ( BOOKID INTEGER, BOOKNAME VARCHAR(100), ISBN CHAR(10) ) CREATE TABLE MYBOOKS LIKE BOOKS CREATE TABLE MYBOOKS AS (SELECT * FROM BOOKS) DEFINITION ONLY DESCRIBE TABLE MYBOOKS Tabele są przechowywane w przestrzeniach tablicowych - Przestrzeń tablicowa musi być stworzona przed tworzeniem tabeli - Można określić jawnie w jakiej przestrzeni tablicowej ma być stworzona tabela CREATE TABLE BOOKS ( BOOKID INTEGER, BOOKNAME VARCHAR(100),ISBN CHAR(10) ) IN BOOKINFO

Zmiana,usuwanie, NOT NULL, DEFAULT, GENERATED ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) DROP TABLE BOOKS CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL,BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD',ISBN CHAR(10) ) CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD',ISBN CHAR(10) ) CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY, LNAME VARCHAR(100), FNAME VARCHAR(100), FICTIONBOOKS INTEGER, NONFICTIONBOOKS INTEGER, TOTALBOOKS INTEGER GENERATED ALWAYS AS (FICTIONBOOKS + NONFICTIONBOOKS) )

Integralność (Constraints) Unikalność: zapewnia unikalność wartości kolumn w tabeli CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY, BOOKNAME VARCHAR(100), ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) Więzy referencyjne: CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY, LNAME VARCHAR(100), FNAME VARCHAR(100)) CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY, BOOKNAME VARCHAR(100), ISBN CHAR(10), AUTHORID INTEGER REFERENCES AUTHORS) RESTRICT, NO ACTION, CASCADE, SET NULL Dla tabeli (table check constraints) ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') )

Widoki Wsparcie dla INSERT, UPDATE, DELETE Dodatkowy poziom kontroli dostępu Użyteczny przy obsłudze danych historycznych Są przechowywane w tabeli SYSIBM.SYSVIEWS, Tabela SYSIBM.SYSVIEWS ma zdefiniowany widok: SYSCAT.VIEWS CREATE VIEW NONFICTIONBOOKS AS SELECT * FROM BOOKS WHERE BOOKTYPE = 'N' Tworzenie widoków z inną nazwą kolumn niż w tabeli CREATE VIEW MYBOOKVIEW (TITLE,TYPE) AS SELECT BOOKNAME,BOOKTYPE FROM BOOKS Sprawdzenie poprawności danych CREATE VIEW NONFICTIONBOOKS AS SELECT * FROM BOOKS WHERE BOOKTYPE = 'N' WITH CHECK OPTION

Indeksy Zapewniają unikalność wartości w kolumnach Przyspieszają wykonanie zapytań Mogą być unikalne lub nieunikalne CREATE INDEX IBOOKNAME ON BOOKS (BOOKNAME) CREATE INDEX I2BOOKNAME ON BOOKS (AUTHOID DESC, BOOKNAME ASC) CREATE INDEX BIBOOKNAME ON BOOKS (BOOKNAME) ALLOW REVERSE SCANS

Wyzwalacze Wykonywane przed operacją Wykonywane po operacji Wykonywane zamiast operacji Operacje: INSERT, DELETE, UPDATE