Wykład  3 – Programowanie procedur wbudowanych w języku PL/SQL
Download
1 / 29

Bazy danych - PowerPoint PPT Presentation


  • 184 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Bazy danych' - jodie


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

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
Język PL/SQL PL/SQL

  • instrukcje warunkowe

  • pętle

  • zmienne dynamiczne

  • tworzenie obiektów (kursorów)

  • obsługa wyjątków


Polecenie create procedure
Polecenie PL/SQLcreateprocedure

create procedure procedura([lista parametrow])

as

[atrybut typ] -- dwie kreski to komentarz

[atrybut typ]

...

[kod funkcji]

/


Uruchomienie procedury
Uruchomienie procedury PL/SQL

SQL> execute nazwa_schematu.nazwa_procedury(parametry);

SQL> execute nazwa_schematu.nazwa_pakietu.nazwa_procedury_w_pakiecie(parametry);


Grupowanie procedur w pakietach
Grupowanie procedur w pakietach PL/SQL

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
Trigery PL/SQL (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
Przykład PL/SQL

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;

/


PL/SQL

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;


PL/SQL

PROCEDURE mojaprocedura2(w typwiersz) AS

BEGIN

...

END;

END;

/


Bezpiecze stwo
Bezpieczeństwo PL/SQL

Dwa aspekty:

  • ochrona przed niepowołanym dostępem

  • utrata danych, lub utrata ich spójności


U ytkownicy users
Użytkownicy ( PL/SQLUsers)

Utworzenie nowego użytkownika

create user ANTEK identified by HASLO;

Informacje o użytkownikach – patrz perspektywy:

DBA_USERS

ALL_USERS


Uprawnienia privilages
Uprawnienia ( PL/SQLPrivilages)

nadawanie

grant connect, resource to ANTEK;

odbieranie

revoke selectanytable from ANTEK;

zmiana hasła

alter user ANTEK identified by NOWEHASLO;


Role roles
ROLE ( PL/SQLRoles)

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;


PL/SQL

przydzielenie/odebranie roli użytkownikowi

grant sprzedawca to ANTEK;

revoke kierowca from ADAM;


Profile profiles
Profile ( PL/SQLProfiles)

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
Wielodostęp, transakcje, blokady PL/SQL

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
Archiwizacja fizyczna w trybie PL/SQLoff-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
Archiwizacja fizyczna w trybie PL/SQLon-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
Archiwizacja logiczna – mechanizmy EXPORT/IMPORT PL/SQL

tryby pracy programu EXPORT

  • table mode

  • user mode

  • database mode (incremental, cumulative, complete)

    rodzaje eksportu

  • dane i strukura

  • tylko struktura


PL/SQL

  • 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
Konfiguracja połączenia sieciowego PL/SQL

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 [email protected];


Adowanie danych z plik w tekstowych do tabel
Ładowanie danych z plików tekstowych do tabel PL/SQL

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
Odtwarzanie danych po awarii PL/SQL

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
Hurtownie danych PL/SQL

Wybrane elementy/techniki

  • serwery lustrzane

  • partycjonowanie obiektów


Serwery lustrzane
Serwery lustrzane PL/SQL

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
Obiekty partycjonowane PL/SQL

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


PL/SQL

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
Tabela partycjonowana - przykład PL/SQL

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);


PL/SQL

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;


ad