290 likes | 528 Views
Wykład 3 – Programowanie procedur wbudowanych w języku PL/SQL Bezpieczeństwo Odtwarzanie bazy danych po awarii Hurtownie danych. Bazy danych. Język PL/SQL. instrukcje warunkowe pętle zmienne dynamiczne tworzenie obiektów (kursorów) obsługa wyjątków. Polecenie create procedure.
E N D
Wykład 3 – Programowanie procedur wbudowanych w języku PL/SQLBezpieczeństwo Odtwarzanie bazy danych po awarii Hurtownie danych Bazy danych
Język PL/SQL • instrukcje warunkowe • pętle • zmienne dynamiczne • tworzenie obiektów (kursorów) • obsługa wyjątków
Polecenie createprocedure create procedure procedura([lista parametrow]) as [atrybut typ] -- dwie kreski to komentarz [atrybut typ] ... [kod funkcji] /
Uruchomienie procedury SQL> execute nazwa_schematu.nazwa_procedury(parametry); SQL> execute nazwa_schematu.nazwa_pakietu.nazwa_procedury_w_pakiecie(parametry);
Grupowanie procedur w pakietach create or replace package NAZWA_PAKIETU [lista funkcji (same deklaracje)]; / create or replace package body NAZWA_PAKIETU [definicja funkcji 1 / definicja funkcji 2 / definicja funkcji 3 /];
Trigery (Triggers) funkcje samo-wyzwalające się, „uruchamiane zdarzeniem”, np. na tabeli przy wstawianiu create trigger NAZWA_TRIGERA before insert on NAZWA_TABELI begin ... end;
Przykład CREATE OR REPLACE PACKAGE mojpakiet AS x NUMBER(1); slowo CHAR(100); CURSOR kur IS SELECT * FROM tabela; PROCEDURE mojaprocedura1; PROCEDURE mojaprocedura2; TYPE typwiersz IS RECORD (imie tabela.imie%TYPE, nazwisko nazwisko.imie%TYPE, pesel pesel.imie%TYPE); wiersz typwiersz; END mojpakiet; /
… CREATE OR REPLACE PACKAGE BODY mojpakiet AS PROCEDURE mojaprocedura1 AS BEGIN OPEN kur; LOOP FETCH kur INTO wiersz.imie, wiersz.nazwisko, wiersz.pesel; EXIT WHEN kur%NOTFOUND; mojpakiet.mojaprocedura2(wiersz); END LOOP; CLOSE kur; EXCEPTION WHEN OTHERS THEN ........ END;
… PROCEDURE mojaprocedura2(w typwiersz) AS BEGIN ... END; END; /
Bezpieczeństwo Dwa aspekty: • ochrona przed niepowołanym dostępem • utrata danych, lub utrata ich spójności
Użytkownicy (Users) Utworzenie nowego użytkownika create user ANTEK identified by HASLO; Informacje o użytkownikach – patrz perspektywy: DBA_USERS ALL_USERS
Uprawnienia (Privilages) nadawanie grant connect, resource to ANTEK; odbieranie revoke selectanytable from ANTEK; zmiana hasła alter user ANTEK identified by NOWEHASLO;
ROLE (Roles) Rola jest zbiorem uprawnień create role sprzedawca; grant [nazwauprawnienia_1] to sprzedawca; grant [nazwauprawnienia_2] to sprzedawca; ... grant [nazwauprawnienia_n] to sprzedawca; create role kierowca; grant [nazwauprawnienia_1] to kierowca; grant [nazwauprawnienia_2] to kierowca; ... grant [nazwauprawnienia_m] to kierowca;
… przydzielenie/odebranie roli użytkownikowi grant sprzedawca to ANTEK; revoke kierowca from ADAM;
Profile (Profiles) profile są ograniczeniami uprawnień nakładanymi na użytkowników create profile NAZWA_PROFILU limit session_per_user 2 connect_time 10 ...; nadanie profilu alter user ANTEK profile NAZWA_PROFILU;
Wielodostęp, transakcje, blokady Podział blokad ze względu na blokowany obszar • na tabeli • na rekordzie Typy blokad • S (shareable) współdzielone • X (exclusive) na wyłączność
Archiwizacja fizyczna w trybie off-line • określenie położenia plików select status, enabled, name from v$datafile; select * from v$logfile; select * from v$controlfile; • kolejność czynności shutdown [normal] kopiowanie wszystkich plików b.d. + pliku parametrów • startup
Archiwizacja fizyczna w trybie on-line kopia zawartości przestrzeni tabel (bez plików dziennika powtórzeń), użyteczne gdy baza danych musi być dostępna 24 h na dobę i przez 7 dni w tygodniu, punkty kontrolne nie są w czasie kopiowanie zapisywane do plików przestrzeni alter tablespace NAZWA_TBS begin backup; przerwanie kopiowania alter tablespace NAZWA_TBS end backup;
Archiwizacja logiczna – mechanizmy EXPORT/IMPORT tryby pracy programu EXPORT • table mode • user mode • database mode (incremental, cumulative, complete) rodzaje eksportu • dane i strukura • tylko struktura
… • parametry programu exp.exe USERID FILE (*.dmp) FULL (Y/N) (konieczne uprawnienie sysoper, lub sysdba) OWNER TABLES INCTYPE • otwarcie bazy danych w trybie restricted; • narzędzie IMPORT – przenoszenie danych pomiędzy serwerami pracującymi na różnych systemachoperacyjnych
Konfiguracja połączenia sieciowego TNSNAMES.ORA – plik definiujący aliasy, zawierający nazwy i adresy baz danych BAZA=(ADDRESS=(PROTOCOL=TCP)(HOST=156.17.40.40)(PORT=1521))CONNECT_DATA=(SOURCE_NAME=baza) Połączenie klienta SQLPlus> connect antek@baza;
Ładowanie danych z plików tekstowych do tabel Narzędzie SQLLoader sqlldr.exe ctl=’plik_sterujący’ log=’plik_raportu’ userid=scott/tiger] Przykładowa postać pliku sterującego LOAD DATA INFILE * INTO TABLE NAZWA_TABELI FIELD TERMINATED BY ‘|’ OPTIONALLY ENCLOSED BY ‘”’ (kolumna1,kolumna2,kolumna3,kolumna4 DATE „DD-MonthYYYY”) 1|”Kowalski”|Jan|21-January-2001 2|Nowak|”Wojciech”|01-December-1999 ...
Odtwarzanie danych po awarii Tryby pracy NOARCHIVELOG – szybki, ale bez zapisywania śladów transakcji ARCHIVELOG – wolniejszy (serwer zapisuje wszystkie zatwierdzone transakcje w plikachv*.log i okresowo je archiwizuje do *.arc, katalog docelowy plików śladu transakcji zawiera ustawienie LOG_ARCHIVE_DEST)
Hurtownie danych Wybrane elementy/techniki • serwery lustrzane • partycjonowanie obiektów
Serwery lustrzane Cel Umożliwienie odtworzenia danych • z momentu przed awarią • bez przestoju (minimalizacja czasu niedostępności bazy danych) Postulaty • dwa identyczne, w miarę niezależnie pracujące komputery (production database, standby database) • te same systemy operacyjne • te same wersje Oracle Server
Obiekty partycjonowane Każda partycja jest oddzielnym segmentemi może być przechowywana w oddzielnym TBS-ie (nawet na innym dysku). Zalety • łatwiejsze archiwizowanie i reorganizacja • lepsza efektywność dostępu • możliwość równoległych procesów DML (współbieżność) – skrócenie czasu przetwarzania
… Każda partycja jest oddzielnym segmentemi może być przechowywana w oddzielnym TBS-ie (nawet na innym dysku). Zalety • łatwiejsze archiwizowanie i reorganizacja • lepsza efektywność dostępu • możliwość równoległych procesów DML (współbieżność) – skrócenie czasu przetwarzania
Tabela partycjonowana - przykład create table OSOBY (nr_id number(10), imie varchar2(15), nazwisko verchar2(15), data_ur date,kod_pocztowy number(5)) partition by range(kod_pocztowy) (partition f1 values less than 10000 tablespace TBS1, partition f2 values less than 20000 tablespace TBS2, partition f3 values less than 30000 tablespace TBS);
… Odwołanie do całej tabeli select * from osoby; Odwołanie do partycji select * from osoby partition(f1); Usunięcie partycji alter table osoby drop partition f2;