Administracja serwerem bazy danych Oracle 11g Zarządzanie obiekami bazy danych Wykład nr 4 Michał Szkopiński.

Slides:



Advertisements
Podobne prezentacje
Indeksy w bazie danych Oracle
Advertisements

Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Projektowanie bazy danych
Wykład 3 Prowadzący: dr Paweł Drozda
SQL – Strukturalny język zapytań
SQL INJECTION Wykorzystanie błędów w językach skryptowych
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Język SQL Część II.
BD-LAB4 Wojciech Pieprzyca
Podejście relacyjne Podejście relacyjne opiera się na wykorzystaniu do przedstawiania danych modelu relacyjnego i zarządzania nimi matematycznego modelu.
Bazy danych 8. SQL podstawy P. F. Góra semestr letni 2004/05.
WPROWADZENIE DO BAZ DANYCH
MS Access 2003 Kwerendy Paweł Górczyński.
25/08/ Bazy danych II Piotr Górczyński MS Access – Action Query.
MS Access 2000 Tworzenie tabel Piotr Górczyński 2005.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 7: Relacje i ograniczenia integralnościowe Język definiowania danych - DDL (Data Definition.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 8: Perspektywy i sekwencery.
Bezpieczeństwo Procedury składowane Funkcje i Wyzwalacze
ZSBD PL/SQL CZĘŚĆ 3 Wykład 5 Prowadzący: dr Paweł Drozda.
Język definicji danych (Data Definition Language)
Język definicji danych (Data Definition Language)
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
Zapytania SQL: wydajność i optymalizacja
Wykład 5 Wojciech Pieprzyca
SQL - język relacyjnych i obiektowo-relacyjnych baz danych
Projektowanie fizycznej bazy danych
WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Relacyjne Bazy Danych (Oracle) Prezentacja jest współfinansowana.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Relacyjne Bazy Danych (Oracle) Prezentacja jest współfinansowana.
„Relacyjne Bazy Danych (Oracle)”
Rozproszone bazy danych – 1 Replikacja danych
Zarządzanie transakcjami w SQL Server
Język SQL (Structured Query Language) DDL (Data Definition Language)
Bezpieczeństwo baz danych
Teoria relacyjnych baz danych
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
PROJEKTOWANIE TABEL W PROGRAMIE: ACCESS
SQL – Structured Query Language (3)
Administracja serwerem bazy danych Oracle 11g Zarządzanie strukturą bazy danych Wykład nr 2 Michał Szkopiński.
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
SQL – Structured Query Language (1)
dr hab. Ryszard Walkowiak prof. nadzw.
Użytkownicy i przywileje Sesja - przykład Błędy Komunikacja międzyskryptowa Wykład 83PD Technologie internetowe.
Andrzej Macioł Bazy danych – SQL – cz. 1. Andrzej Macioł Składowe SZBD Jądro SZBD realizuje podstawowe funkcje związane z przechowywaniem danych, kontrolą
Tworzenie typów danych i tabel
SQL - Structured Query Language
Jak zacząć w MS SQL? USE master; GO IF DB_ID (Nbaza') IS NOT NULL DROP DATABASE baza; GO CREATE DATABASE baza; GO USE baza; GO.
Wybrane zagadnienia relacyjnych baz danych
Systemy Zarządzania Bazami Danych Laboratorium 05 Widoki i eksport tabel/widoków 1.
Komendy SQL do pracy z tabelami i bazami
PL/SQL – dalsza wędrówka
SQL – część II.
Projektowanie bazy danych
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Systemy Baz Danych Wykład III
Michał Krawczykowski kl. IIIB
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Autor: Damian Urbańczyk
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Komendy SQL do pracy z danymi
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
ASP.NET Kontrolki źródła danych i prezentacji danych w ASP.Net
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Oracle Data Modeler (4.1). Aplikacja Wymagania biznesowe Tworzenie systemu informacyjnego Procesy Informacje Analiza Projektowanie Browser: Hollywood.
1 Definicja danych: Do utworzenia tabeli służy instrukcja CREATE TABLE, wymagająca podania nazwy tworzonej tabeli, nazwy każdej kolumny w tej tabeli, typu.
Temat: Tworzenie bazy danych
DDL język definiowania danych
Strukturalny język zapytań SQL - historia
Technologie Informacyjne Bazy danych
Zapis prezentacji:

Administracja serwerem bazy danych Oracle 11g Zarządzanie obiekami bazy danych Wykład nr 4 Michał Szkopiński

Obiekty w bazie danych Oracle Obiekty to struktury przechowujące, porządkujące lub operujące na danych Tabele Więzy integralności Indeksy Widoki Widoki zmaterializowane Sekwencje Procedury Linki bazodanowe Obiekty przechowywane są w schematach użytkowników Oracle Database 11g: Administration Workshop I 7 - 2

Co to jest Schemat w bazie? Schemat JAN Użytkownik JAN posiada Dostęp się do swoich obiektów bezpośrednio po nazwie SELECT * FROM T1 Dostęp do obiektów innych użytkowników z przedrostkiem: SELECT * FROM JAN.T1 Oracle Database 11g: Administration Workshop I 8 - 3

Dostęp do informacji o obiektach w EM Oracle Database 11g: Administration Workshop I 8 - 4

Ale przecież MY lubimy SQLPLUS-a

Konwencje nazewnicze obiektów Nazwy obiektów o rozmiarze od 1 do 30 bajtów z następującymi wyjątkami Nazwa instancji bazy maksymalnie 8 bytów. Nazy linków bazodanowych max. 128 bajtów. Nazwy bez apostrofów: nie mogą być słowami zarezerwowanymi. muszą zaczynać się od znaku. są przechowywane jako wielkie litery Nazwy z apostrofami: są wrażliwe na wielkość znaków nie są zalecane! Oracle Database 11g: Administration Workshop I 8 - 6

Typy kolumn w tabelach Najczęściej używane typy kolumn: CHAR(size [BYTE|CHAR]): Tekst o stałej długości Maksymalna długość 2000, minimalna i domyślna: 1 VARCHAR2(size [BYTE|CHAR]): Tekst o zmienne długości Maksymalna długość 4000 DATE: Data od 1-go stycznia 4712 (pne) do 31 grudnia, 9999 (ne) NUMBER(p,s): Liczba całkowita lub zmiennoprzecinkowa z precyzją p – całkowitą ilością cyfr ze skalą s – ilością cyfr po przecinku dodatnie: 1 x 10-130 do 9.99...9 x 10125 z mak. 38 cyframi przed przecinkiem ujemne: -1 x 10-130 do -9.99...99 x 10125 z mak. 38 cyframi przed przecinkiem Oracle Database 11g: Administration Workshop I 8 - 7

Typy binarne CLOB: zawartość binarna tekstowa BLOB: zawartość binarna o dowolnej strukturze Maksymalny rozmiar: (4 GB – 1) * CHUNK Chunk - jeden lub wielokrotność bloku (mak. 32 kB) BFILE: Link do pliku znajdującego się w systemie plików Maksymalny rozmiar: 4GB Oracle Database 11g: Administration Workshop I 8 - 8

Struktura tabel w bazie Oracle Kolumny Bloki Tabela A Tabela B Wiersze Segment Segment Tabela Przestrzeń tabel Tablespace Extent Wiersz Oracle Database 11g: Administration Workshop I 6 - 9

Tworzenie tabeli i modyfikacje CREATE TABLE SHOPOWNER.JOBS ( Job_id NUMBER(5), Job_title VARCHAR2(30), MIN_SALARY NUMBER(6), MAX_SALARY NUMBER(6) ) TABLESPACE USERS; ALTER TABLE SHOPOWNER.JOBS ADD bonus NUMBER(6); ALTER TABLE SHOPOWNER.JOBS ADD CONSTRAINT PRIMARY KEY (JOB_ID); Oracle Database 11g: Administration Workshop I 8 - 10

Usuwanie tabeli Tabele usuwa się poleceniem: DROP TABLE T1 Razem z tabelą usuwane są: Definicja tabeli Dane Wyzwalacze Indeksy związane z tą tabelą Uprawnienia przydzielone do tej tabeli Opcje związane z poleceniem DROP TABLE: CASCADE CONSTRAINTS: Wymagane jeśli z tabelą związane są klucze obce PURGE: bez tej opcji tabela jest przenoszona do KOSZA i może być odzyskana. Z opcją PURGE usunięcie jest permanentne! Oracle Database 11g: Administration Workshop I 8 - 11

Usuwanie danych z tabeli Polecenie DELETE Pozwala selektywnie usuwać wiersze Zmienia segmenty wycofania Automatycznie aktualizuje indeksy Uruchamia wyzwalacze Polecenie TRUNCATE usuwa wszystkie wiersze z tabeli. Jest poleceniem DDL więc wykonywany jest automatyczny COMMIT Przesuwa „Wskaźnik wysokiej wody” na początek segmentu tabeli. Nie zmienia segmentów wycofania Nie uruchamia wyzwalaczy Oracle Database 11g: Administration Workshop I 8 - 12

Tabele tymczasowe Są obiektami przechowującymi dane na czas trwania sesji lub transakcji ON COMMIT DELETE ROWS ON COMMIT PRESERVE ROWS Dostarczają prywatnej przestrzeni na dane w trakcie sesji Są dostępne jednocześnie dla wszystkich sesji, nie ingerując w prywatną przestrzeń danych Oracle Database 11g: Administration Workshop I 8 - 13

Cechy tabel tymczasowych Tabele tymczasowe tworzymy klauzulą: CREATE GLOBAL TEMPORARY TABLE Operacje DML nie zmieniają segmentów wycofania (undo data) Są tworzone tylko w tymczasowej przestrzeni tabel Na tabelach tymczasowych można tworzyć: Indeksy Widoki Wyzwalacze (Triggers) CREATE GLOBAL TEMPORARY TABLE employees_temp ON COMMIT PRESERVE ROWS AS SELECT * FROM employees; Oracle Database 11g: Administration Workshop I 8 - 14

Więzy integralności DEPARTMENTS LOCATIONS JOB_HISTORY EMPLOYEES EMPLOYEE_ID (PK,FK) START_DATE (PK) END_DATE JOB_ID (FK) DEPARTMENT_ID (FK) EMPLOYEES EMPLOYEE_ID (PK) FIRST_NAME LAST_NAME ESALARY COMMISION_PCT MANAGER_ID (FK) MAIL PHONE_NUMBER HIRE_DATE DEPARTMENTS DEPARTMENT_ID (PK) DEPARTMENT_NAME MANAGER_ID LOCATION_ID (FK) JOBS JOB_ID (PK) JOB_TITLE MIN_SALARY MAX_SALARY REGIONS REGION_ID (PK) REGION_NAME COUNTRIES COUNTRY_ID (PK) COUNTRY_NAME REGION_ID (FK) LOCATIONS LOCATION_ID (PK) STREET_ADDRESS POSTAL_CODE CITY STATE_PROVINCE COUNTRY_ID (FK) Oracle Database 11g: Administration Workshop I 8 - 15

Rodzaje więzów integralności PRIMARY KEY - Klucz główny, unikalny i niepusty UNIQUE – Unikalność wartości FOREIGN KEY - Klucz obcy: związek między kolumnami z dwóch różnych lub tej samej tabeli NOT NULL – zawsze jakaś wartość CHECK – pozytywnie zweryfikowany warunek na kolumnie Kiedy więzy integralności są sprawdzane: Po wykonaniu operacji DML – IMMEDIATE W momencie zatwierdzania transakcji - DEFERRED Oracle Database 11g: Administration Workshop I 8 - 16

Naruszenie więzów integralności Przykłady Wprowadzenie istniejącej wartości klucza głównego Usunięcie wiersza w tabeli nadrzędnej z wartością wykorzystywaną w tabeli podrzędnej Aktualizacja wartości poza zakresem ID AGE X 101 … 102 103 … 22 49 16 5 –30 101 Oracle Database 11g: Administration Workshop I 8 - 17

Stany pracy więzów integralności DISABLE NOVALIDATE DISABLE VALIDATE ENABLE NOVALIDATE ENABLE VALIDATE bez DML Nowe dane Istniejące dane Oracle Database 11g: Administration Workshop I 8 - 18

Weryfikacja więzów integralności Więzy są sprawdzane w momencie: Wykonania polecenia DML (IMMEDIATE) W momencie zatwierdzania transakcji( DEFERRED) 1 Wykonanie polecenia DML (I, U, D) Sprawdzenie więzów IMMEDIATE 2 Próba zatwierdzenia transakcji - COMMIT 3 4 Sprawdzenie więzów DEFERRED Zakończenie zatwierdzania transakcji – COMMIT COMPLETE 5 Oracle Database 11g: Administration Workshop I 8 - 19

Przykłady tworzenia więzów integralności ALTER TABLE countries ADD (UNIQUE(country_name) ENABLE NOVALIDATE); ALTER TABLE shopowner.jobs ADD CONSTRAINT job_pk PRIMARY KEY (job_id); CREATE TABLE emp (emp_no NUMBER PRIMARY KEY,Last_name VARCHAR2(30), first_name VARCHAR2(30), dept_no NUMBER, Mgr_no NUMBER, hire_date date,salary NUMBER, CONSTRAINT Mgr_FK FOREIGN KEY (mgr_no) REFERENCES emp(emp_no), CONSTRAINT ck1 CHECK (salary > 0)); Oracle Database 11g: Administration Workshop I 8 - 20

Indeksy … WHERE klucz = 22 22 22 Indeks Tabela Wskaźnik wiersza Klucz Oracle Database 11g: Administration Workshop I 8 - 21

Typy indeksów W bazie Oracle występują dwa najczęściej stosowane typy indeksów Indeks typu B-tree Domyślny typ indeksu w postaci zbalansowanego drzewa Indeks typu Bitmap: Posiada mapę bitową dla każdej unikalnej wartości Każdy bit w mapie wskazuje na wiersz w tabeli Wartość bitu wskazuje czy kolumna w wierszu ma wskazaną wartość czy nie Oracle Database 11g: Administration Workshop I 8 - 22

Indeks B-Tree Wpis w liściu Korzeń Węzeł Nagłówek Liść Długość klucza w kolumnie Wartość klucza w kolumnie ROWID Oracle Database 11g: Administration Workshop I 8 - 23

Indeks bitmapowy Plik 3 Tabela Blok 10 Blok 11 Indeks Blok 12 Klucz <Blue, 10.0.3, 12.8.3, 1000100100010010100> <Green, 10.0.3, 12.8.3, 0001010000100100000> <Red, 10.0.3, 12.8.3, 0100000011000001001> <Yellow, 10.0.3, 12.8.3, 0010001000001000010> Klucz Start ROWID Koniec Bitmap Oracle Database 11g: Administration Workshop I 8 - 24

Opcje Indeksów Indeks unikalny Indeks z odwróconym kluczem Zapewnia unikalność wartości klucza w całej tabeli Indeks z odwróconym kluczem Klucz jest przechowywany w odwrotnej kolejności binarnej Indeks złożony Na więcej niż jednej kolumnie Indeks bazujący na funkcji Kluczem jest wartość zwracana przez funkcję Indeks skompresowany Z usuniętymi duplikatami kluczy i wartości z liści Oracle Database 11g: Administration Workshop I 8 - 25

Tworzenie indeksów Automatyczne Ręczne – poleceniami SQL Przy zakładaniu więzów integralości klucza głównego PRIMARY KEY Unikalności - UNIQUE Ręczne – poleceniami SQL CREATE INDEX T1_IDX1 ON T1 (K1, K2); T1_IDX1 – nazwa indeksu T1 – tabela na której zakładamy indeks K1, K2 – dwie kolumny indeksu Oracle Database 11g: Administration Workshop I 8 - 26

Widoki Widok to zapisane zapytanie SQL Zachowuje się prawie jak tabela W zapytaniach używamy widoku tak samo jak tabel Przy spełnieniu określonych warunków można na widoku używać poleceń DML (I, U, D) W definicji widoku można używać funkcji lub zmiennych np. USER, SYSDATE Dane zwracane przez widok będą różne w zależności od okoliczności np. kto wykonuje zapytanie czy czasu wykonania Widoki służą do: Ukrywania złożoności zapytań SQL Selektywnego udostępniania danych innym użytkownikom

Tworzenie widoków CREATE VIEW V1 AS SELECT K1, K2 FROM T1 WHERE ... CREATE VIEW MY_EMP_VIEW AS SELECT * FROM EMPLOYEES WHERE EMPLOYEE=USER SELECT * FROM V1; SELECT * FROM MY_EMP_VIEW, T1 WHERE ...

Uprawnienia do Widoków Do tworzenia widoków wymagane jest uprawnienie CREATE VIEW Innym użytkownikom pozwalamy czytać z widoku, a nie z tabel Do czytania danych z widoków wymagane jest uprawnienie obiektowe SELECT lub SELECT ANY TABLE

Sekwencje Sekwencja generuje unikalne liczby całkowite Posiada nazwę 1 2 3 4 5 Sekwencja generuje unikalne liczby całkowite Posiada nazwę Nie jest związana z żadną tabelą czy kolumną Wartości mogą rosnąć lub maleć Interwał między kolejnymi liczbami jest konfigurowalny Sekwencja może być cykliczna Maksymalna wartość sekwencji to 1027 a minimalna to -1026 Wartości z sekwencji pobiera się funckją NEXTVAL SELECT MY_SEQ.NEXTVAL FROM DUAL; INSERT INTO T1 VALUES (MY_SEQ.NEXTVAL, ‘test’) Oracle Database 11g: Administration Workshop I 8 - 30

Tworzenie sekwencji CREATE SEQUENCE MY_SEQ START WITH 1000 MINVALUE 1 NOMAXVALUE INCREMENT BY 1 NOCACHE NOCYCLE; Oracle Database 11g: Administration Workshop I 8 - 31

Mechanizmy zapewniające spójność danych Lock – mechanizm blokujący aktualizacje tych samych danych w tym samym czasie przez wiele sesji użytkowników Blokowanie następuje na najniższym z dostępnych poziomów (wiersz, wiersze, blok, tabela itp) Blokowanie najczęściej jest wykonywane automatycznie, ale można też ręcznie Transakcja 1 SQL> UPDATE employees 2 SET salary=salary*1.1 3 WHERE employee_id=100; 2 SET salary=salary+100 3 WHERE employee_id=100; Transakcja 2 Oracle Database 11g: Administration Workshop I 9 - 32

Cechy mechanizmu blokowania Blokowanie na poziomach: Wierszy dla operacji DML (IUD) Brak blokowania dla zapytań Blokowanie jest utrzymywane aż do zakończenia transakcji COMMIT lub ROLLBACK Transaction 1 Transaction 2 SQL> UPDATE employees 2 SET salary=salary+100 3 WHERE employee_id=100; SQL> UPDATE employees 2 SET salary=salary*1.1 3 WHERE employee_id=101; Oracle Database 11g: Administration Workshop I 9 - 33

Współbieżność operacji Czas: 09:00:00 Transakcja 1 UPDATE hr.employees SET salary=salary+100 WHERE employee_id=100; Transakcja 2 WHERE employee_id=101; Transakcja 3 WHERE employee_id=102; ... Transakcja x WHERE employee_id=xxx; Oracle Database 11g: Administration Workshop I 9 - 34

Typy blokad Każda operacja DML zakłada 2 blokady: Transakcja 1 SQL> UPDATE employees 2 SET salary=salary*1.1 3 WHERE employee_id= 107; 1 row updated. SQL> UPDATE employees 2 SET salary=salary*1.1 3 WHERE employee_id= 106; 1 row updated. Każda operacja DML zakłada 2 blokady: EXCLUSIVE - na wierszach które są zmieniane ROW EXCLUSIVE – na tabeli w której są zmieniane wiersze Oracle Database 11g: Administration Workshop I 9 - 35

Mechanizm kolejkowania Mechanizm kolejkowania zarządza: Listą sesji które oczekują na założenie blokady Typami blokad nałożonymi na obiekty bazy danych Kolejnością zgłoszeń o założenie blokady Oracle Database 11g: Administration Workshop I 9 - 36

Konflikty Transakcja 1 Czas Transakcja 2 UPDATE employees SET salary=salary+100 WHERE employee_id=100; 1 row updated. 9:00:00 UPDATE employees SET salary=salary+100 WHERE employee_id=101; UPDATE employees SET COMMISION_PCT=2 WHERE employee_id=101; Sesja oczekuje na zatwierdzenie transkcji 2. 9:00:05 SELECT sum(salary) FROM employees; SUM(SALARY) ----------- 692634 Sesja nadal oczekuje na transakcję 2 16:30:00 Wykonywane jest wiele operacji DML ale brak COMMIT lub ROLLBACK Sesja wznawia prace 16:30:01 commit; Oracle Database 11g: Administration Workshop I 9 - 37

Przyczyny konfliktów Niezatwierdzone zmiany Długo działające transakcje Niepotrzebnie wysoki poziom blokowania Oracle Database 11g: Administration Workshop I 9 - 38

Rozwiązywanie konfliktów Najpierw należy zidentyfikować sesję która blokuje: SQL> select sid, serial#, username from v$session where sid in (select blocking_session from v$session) 1 Result: 2 SQL> alter system kill session '144,8982' immediate; Następnie „zabić” blokującą sesje  Oracle Database 11g: Administration Workshop I 9 - 39

Deadlocks – wzajemne blokowanie Transaction 2 Transaction 1 UPDATE employees SET salary = salary x 1.1 WHERE employee_id = 1000; UPDATE employees SET salary = salary x 1.1 WHERE employee_id = 2000; ORA-00060: Deadlock detected while waiting for resource UPDATE employees SET manager = 1342 WHERE employee_id = 2000; UPDATE employees SET manager = 1342 WHERE employee_id = 1000; 9:00 9:15 9:16 Oracle Database 11g: Administration Workshop I 9 - 40

zapraszam na ćwiczenia Dziękuję za uwagę i zapraszam na ćwiczenia