PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK



Podobné dokumenty
Text úlohy. Systémový katalog (DICTIONARY):

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Ukázka knihy z internetového knihkupectví

Transakce a zamykání. Administrace MS SQL Serveru (NDBI039) Pavel Hryzlík

Transakce a zamykání Jiří Tomeš

Databáze II. 1. přednáška. Helena Palovská

Jazyk PL/SQL Úvod, blok

Databáze I. 5. přednáška. Helena Palovská

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Stručný obsah. část III Aktualizace dat Kapitola 10: Aktualizace databáze 257 Kapitola 11: Integrita dat 275 Kapitola 12: Zpracování transakcí 307

1. Webový server, instalace PHP a MySQL 13

Maturitní otázky z předmětu PROGRAMOVÁNÍ

2. blok Zabezpečení a ochrana dat

Fakulta elektrotechniky a informatiky Databázové systémy 2. Leden 2010 souhrn. Červené dobře (nejspíš), modré možná

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Deklarativní IO shrnutí minulé přednášky

Transakce. Ing. Marek Sušický, RNDr. Ondřej Zýka

Administrace Oracle. Práva a role, audit

Databáze II. 2. přednáška. Helena Palovská

Databázové systémy úvod

Databázové systémy Cvičení 5.2

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

01. Kdy se začala formovat koncept relačních databází (Vznik relačního modelu, první definice SQL)? a) 1950 b) 1960 c) 1970 d) 1980

1. blok Systémový katalog

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

B Organizace databáze na fyzické úrovni u serveru Oracle

Jazyk SQL 3 - DML, DDL, TCL, DCL

Databáze I. 1. přednáška. Helena Palovská

Náhled testu. Přijímací zkouška magisterského studia. konečný automat bez zbytečných stavů, který přijímá jazyk popsaný tímto výrazem, má:

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

Databázové systémy BIK-DBS

8.2 Používání a tvorba databází

Náhled testu. Přijímací zkouška magisterského studia. konečný automat bez zbytečných stavů, který přijímá jazyk popsaný tímto výrazem, má:

Databáze SQL SELECT. David Hoksza

1 Webový server, instalace PHP a MySQL 13

Jazyk SQL databáze SQLite. připravil ing. petr polách

O Apache Derby detailněji. Hynek Mlnařík

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

Zranitelnost databáze a ochrana vašich citlivých dat. Michal Lukanič, Database Specialist

Administrace Oracle - Správa zdrojů

Vstupní požadavky, doporučení a metodické pokyny

Programování a implementace Microsoft SQL Server 2014 databází

Ukládání a vyhledávání XML dat

Replikace je proces kopírování a udržování databázových objektů, které tvoří distribuovaný databázový systém. Změny aplikované na jednu část jsou

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Použití databází na Webu

17. července :51 z moravec@yahoo.com

4. lekce Přístup k databázi z vyššího programovacího jazyka

Databázové systémy a SQL

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Oracle XML DB. Tomáš Nykodým

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

FRED & PostgreSQL. CZ.NIC, z.s.p.o. Jaromír Talíř <jaromir.talir@nic.cz>

5. POČÍTAČOVÉ CVIČENÍ

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Zkušební test. Kdy se začala formovat koncept relačních databází (Vznik relačního modelu, první definice SQL)? a) 1950 b) 1960 c) 1970 d) 1980

Virtual Private Database (VPD) Jaroslav Kotrč

DATABÁZOVÉ A INFORMAČNÍ SYSTÉMY

Struktura pamětí a procesů v DB Oracle. Radek Strnad

Práva a role. Martin Polák. NDBI013 Administrace Oracle

Úvod do databázových systémů

řízení transakcí 2-3 hodiny

MySQLi (objektově) Příklad vytvoření instance třídy včetně parametrů pro připojení: $mysqli = new mysqli('localhost', 'login', 'heslo', 'databaze');

9. Transakční zpracování

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

Optimalizace dotazů a databázové transakce v Oracle

Sada 1 - PHP. 03. Proměnné, konstanty

Distanční opora předmětu: Databázové systémy Tématický blok č. 8: Transact SQL Autor: RNDr. Jan Lánský, Ph.D.

Univerzita Pardubice. Fakulta elektrotechniky a informatiky

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Embedded SQL v C/C++ úvod. Administrace Oracle Kateřina Opočenská

KIV/ZIS cvičení 5. Tomáš Potužák

KAPITOLA 1 Představení platformy Microsoft SQL Server 2008

Programovací jazyk Pascal

Databáze 2013/2014. Konceptuální model DB. RNDr. David Hoksza, Ph.D.

Novinky v Microsoft SQL Serveru RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Okruhy z odborných předmětů

Databáze I. Přednáška 4

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Zabezpečení proti SQL injection

Databáze pro evidenci výrobků

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Databázové systémy. Cvičení 6: SQL

DUM 15 téma: Příkazy pro řízení přístupu

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Kapitola 6: Omezení integrity. Omezení domény

Databázové systémy a SQL

Databázové systémy úvod

10. Architektura klient/server a třívrstvá architektura

10. Architektura klient/server a třívrstvá architektura

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Transkript:

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK listopad 2009 souhrn v1 Červené dobře (nejspíš), modré možná Oracle Internet Directory OID: Databáze nemůže z OID přebírat seznam uživatelů *Databáze může získat z OID seznam rolí přiřazených uživatelům Databáze nemůže získat z OID seznam rolí přiřazených uživatelům *Databáze může z OID přebírat seznam uživatelů SELECT * from user_objects vypíše: Chybovou zprávu všechny vytvořené databázové objekty všech uživatelů vybrané vytvořené databázové objekty *všechny vytvořené databázové objekty uživatele Šifrování komunikace: není transparentní pro samotnou aplikaci znamená nutnost zásahu do kódu aplikace *neznamená nutnost zásahu do kódu aplikace *je transparentní pro samotnou aplikaci Systémová přístupová práva přístupu k databázi vytváříme příkazem: *GRANT CREATE SESSION TO CREATE REVOKE SESSION TO CREATE GRANT SESSION TO REVOKE CREATE SESSION TO Pohledy: *můžou skrýt skutečnou strukturu tabulek pomocí pohledu nemohu omezit, že některé pohledy mají sloužit pouze ke čtení (read only) *mohou omezit přístupné řádky *pomocí pohledu mohu omezit, že některé pohledy mají sloužit pouze ke čtení (read only) Mechanismus Proxy Authentication: nedovoluje předat informace o skutečném uživateli, který s aplikací pracuje *dovoluje předat informace o skutečném uživateli, který s aplikací pracuje *umožní aplikaci přistupovat do databáze stále pod stejným jménem a heslem neumožní aplikaci přistupovat do databáze stále pod stejným jménem a heslem Chyba při provádění SQL příkazu: způsobí narušení referenční integrity *způsobí, že všechny změny provedené příkazem jsou odrolovány zpět *nezpůsobí změny provedené předchozími příkazy v rámci dané transakce způsobí změny provedené předchozími příkazy v rámci dané transakce Transakce - vytvoření: *je inicializována implicitně není inicializována implicitně je inicializována implicitně po požití příkazu ROLLBACK je inicializována implicitně pouze použitím příkazu PL http://fei.trtkal.net S t r a n a 1

Jakékoli příkazy DDL: způsobí ukončení aktivní transakce nezpůsobí ukončení aktivní transakce a implicitní vytvoření nové transakce způsobí ukončení aktivní transakce, ale nenastane implicitní vytvoření nové transakce *způsobí ukončení aktivní transakce a implicitní vytvoření nové transakce Po odrolování transakce k návratovému bodu: jsou vráceny všechny změny provedené SQL příkazy *jsou vráceny pouze změny provedené SQL příkazy po nastavení návratového bodu *transakce zůstává aktivní a může dále pokračovat *jsou všechny návratové body nastavené po daném savepointu ztraceny Nonrepeatable (fuzzy - zmatené) reads znamená, že: Transakce nečte data zapsaná jinou transakcí a shledává, že jsou ovlivněna (upravena či smazána) jinou transakcí *Transakce čte data již jednou čtená a shledává, že jsou ovlivněna (upravena či smazána) jinou transakcí, jejíž potvrzení nastalo během probíhání dané transakce Transakce opětovně spouští dotazy vracející množinu řádků vyhovující vyhledávacím podmínkám a nachází, že jiná potvrzená transakce přidala další řádky, které splňují podmínky vyhledávání Systémová přístupová práva přístupu k databázi odebíráme příkazem: CREATE REVOKE SESSION FROM CREATE GRANT SESSION FROM *REVOKE CREATE SESSION FROM GRANT CREATE SESSION FROM Když dva uživatelé zadají stejný dotaz: *může každý získat jiná data nelze zadat stejný dotaz v jedné transakci dotaz skončí chybou nemůže každý získat jiná data Mezi příkazy pro řízení transakcí patří: SAVEPOINT *ROLLBACK LEVEL ROLLBACK *COMMIT Dirty reads znamená, že: *Transakce čte data zapsaná jinou transakcí, která již byla potvrzena Transakce čte data již jednou čtená a shledává, že jsou ovlivněna (upravena či smazána) jinou transakcí Transakce opětovně spouští dotazy vracející množinu řádků vyhovující vyhledávacím podmínkám Phantom reads (or phantoms - zjevení) znamená, že: *Transakce opětovně spouští dotazy vracející množinu řádků vyhovující vyhledávacím podmínkám a nachází, že jiná potvrzená transakce přidala další řádky, které splňují podmínky vyhledávání Transakce čte data již jednou čtená a shledává, že jsou ovlivněna (upravena či smazána) jinou transakcí, jejíž potvrzení nastalo během probíhání dané transakce. Transakce opětovně spouští dotazy vracející množinu řádků nevyhovující vyhledávacím podmínkám a nachází, že jiná potvrzená transakce přidala další řádky, které nesplňují podmínky vyhledávání http://fei.trtkal.net S t r a n a 2

Konzistentní čtení na úrovni SQL dotazu: *konzistence čtení je zajištěna automaticky bez účasti uživatele konzistence čtení je zajištěna automaticky parametrem SCN Oracle nezajišťuje konzistenci pro čtení na úrovni dotazu *Oracle vždy zajišťuje konzistenci pro čtení na úrovni dotazu Jakékoli příkazy DDL: způsobí ukončení aktivní transakce, ale nenastane implicitní vytvoření nové transakce způsobí ukončení aktivní transakce *způsobí ukončení aktivní transakce a implicitní vytvoření nové transakce nezpůsobí ukončení aktivní transakce a implicitní vytvoření nové transakce Oracle používá tuto kategorii zámků: PL zámky *DDL zámky *DML zámky *Interní zámky SELECT * from user_objects vypíše: všechny vytvořené databázové objekty všech uživatelů vybrané vytvořené databázové objekty *všechny vytvořené databázové objekty uživatele Chybovou zprávu Databázovými objekty mohou být: tabulky, pohledy, granty, selecty, printy, indexy, clustery, sekvence, synonyma tabulky, pohledy, indexy, synonyma, uložené triggery, databázové linky pouze tabulky, pohledy, indexy, clustery, sekvence a synonyma *tabulky, pohledy, indexy, clustery, sekvence, synonyma, uložené procedury, uložené triggery, databázové linky, snapshoty Přístupová práva k objektům: jsou poskytnuta jednorázově při vytvoření objektu práva může poskytovat administrátor *může poskytovat správce nebo vlastník objektu práva může poskytovat pouze vlastník objektu Mechanismus Proxy Authentication: *umožní aplikaci přistupovat do databáze stále pod stejným jménem a heslem *dovoluje předat informace o skutečném uživateli, který s aplikací pracuje nedovoluje předat informace o skutečném uživateli, který s aplikací pracuje neumožní aplikaci přistupovat do databáze stále pod stejným jménem a heslem Systémová přístupová práva přístupu k databázi odebíráme příkazem: *REVOKE CREATE SESSION FROM CREATE GRANT SESSION FROM CREATE REVOKE SESSION FROM GRANT CREATE SESSION FROM Z pohledu bezpečnosti dat Integrita (integrity) znamená: modifikovat data nemůže jen neautorizovaný uživatel modifikovat data může jen vlastník dat modifikovat data může jen uživatel s právem read *modifikovat data může jen autorizovaný uživatel http://fei.trtkal.net S t r a n a 3

Transakce je ukončena: *pouhým ukončením spojení se serverem Oracle vždy po zadání libovolného příkazu SQL *příkazem COMMIT abnormálním ukončením spojení uživatele se serverem Konzistentní čtení na úrovni SQL dotazu: konzistence čtení je zajištěna automaticky parametrem SCN *Oracle vždy zajišťuje konzistenci pro čtení na úrovni dotazu *konzistence čtení je zajištěna automaticky bez účasti uživatele Oracle nezajišťuje konzistenci pro čtení na úrovni dotazu Chyba při provádění SQL příkazu: způsobí narušení referenční integrity *nezpůsobí změny provedené předchozími příkazy v rámci dané transakce způsobí změny provedené předchozími příkazy v rámci dané transakce *způsobí, že všechny změny provedené příkazem jsou odrolovány zpět Jakékoli příkazy DDL: nezpůsobí ukončení aktivní transakce a implicitní vytvoření nové transakce způsobí ukončení aktivní transakce způsobí ukončení aktivní transakce, ale nenastane implicitní vytvoření nové transakce *způsobí ukončení aktivní transakce a implicitní vytvoření nové transakce Automatické zamykání slouží: Pro řešení přístupu k sdílenému adresáři při přístupu více klientů K potvrzení každého dotazu, kdy není možný návrat zpět *Pro řešení sdíleného (konkurenčního) přístupu více klientů k datům v tabulkách K zamknutí definovaných tabulek uživatele Oracle Internet Directory OID: Databáze nemůže z OID přebírat seznam uživatelů *Databáze může získat z OID seznam rolí přiřazených uživatelům Databáze nemůže získat z OID seznam rolí přiřazených uživatelům *Databáze může z OID přebírat seznam uživatelů SELECT * from user_objects vypíše: Chybovou zprávu všechny vytvořené databázové objekty všech uživatelů vybrané vytvořené databázové objekty *všechny vytvořené databázové objekty uživatele Šifrování komunikace: není transparentní pro samotnou aplikaci znamená nutnost zásahu do kódu aplikace *neznamená nutnost zásahu do kódu aplikace *je transparentní pro samotnou aplikaci Systémová přístupová práva přístupu k databázi vytváříme příkazem: *GRANT CREATE SESSION TO CREATE REVOKE SESSION TO CREATE GRANT SESSION TO REVOKE CREATE SESSION TO http://fei.trtkal.net S t r a n a 4

Pohledy: *můžou skrýt skutečnou strukturu tabulek pomocí pohledu nemohu omezit, že některé pohledy mají sloužit pouze ke čtení (read only) *mohou omezit přístupné řádky *pomocí pohledu mohu omezit, že některé pohledy mají sloužit pouze ke čtení (read only) Mechanismus Proxy Authentication: nedovoluje předat informace o skutečném uživateli, který s aplikací pracuje *dovoluje předat informace o skutečném uživateli, který s aplikací pracuje *umožní aplikaci přistupovat do databáze stále pod stejným jménem a heslem neumožní aplikaci přistupovat do databáze stále pod stejným jménem a heslem Chyba při provádění SQL příkazu: způsobí narušení referenční integrity *způsobí, že všechny změny provedené příkazem jsou odrolovány zpět *nezpůsobí změny provedené předchozími příkazy v rámci dané transakce způsobí změny provedené předchozími příkazy v rámci dané transakce Transakce - vytvoření: *je inicializována implicitně není inicializována implicitně je inicializována implicitně po požití příkazu ROLLBACK je inicializována implicitně pouze použitím příkazu PL Jakékoli příkazy DDL: způsobí ukončení aktivní transakce nezpůsobí ukončení aktivní transakce a implicitní vytvoření nové transakce způsobí ukončení aktivní transakce, ale nenastane implicitní vytvoření nové transakce *způsobí ukončení aktivní transakce a implicitní vytvoření nové transakce Po odrolování transakce k návratovému bodu: jsou vráceny všechny změny provedené SQL příkazy *jsou vráceny pouze změny provedené SQL příkazy po nastavení návratového bodu *transakce zůstává aktivní a může dále pokračovat *jsou všechny návratové body nastavené po daném savepointu ztraceny Nonrepeatable (fuzzy - zmatené) reads znamená, že: Transakce nečte data zapsaná jinou transakcí a shledává, že jsou ovlivněna (upravena či smazána) jinou transakcí *Transakce čte data již jednou čtená a shledává, že jsou ovlivněna (upravena či smazána) jinou transakcí, jejíž potvrzení nastalo během probíhání dané transakce Transakce opětovně spouští dotazy vracející množinu řádků vyhovující vyhledávacím podmínkám a nachází, že jiná potvrzená transakce přidala další řádky,které splňují podmínky vyhledávání Šifrování komunikace: znamená nutnost zásahu do kódu aplikace *neznamená nutnost zásahu do kódu aplikace *je transparentní pro samotnou aplikaci není transparentní pro samotnou aplikaci Z pohledu bezpečnosti dat Důvěrnost (secrecy) znamená: *informace by neměly být přístupné neautorizovaným uživatelům informace by měly být přístupné pouze vlastníkovi dat informace by měly být přístupné neautorizovaným uživatelům pouze na čtení *informace by měly být přístupné pouze autorizovaným uživatelům http://fei.trtkal.net S t r a n a 5

Mechanismus Proxy Authentication: *dovoluje předat informace o skutečném uživateli, který s aplikací pracuje nedovoluje předat informace o skutečném uživateli, který s aplikací pracuje *umožní aplikaci přistupovat do databáze stále pod stejným jménem a heslem neumožní aplikaci přistupovat do databáze stále pod stejným jménem a heslem Pohledy: pomocí pohledu nemohu omezit, že některé pohledy mají sloužit pouze ke čtení (read only) *pomocí pohledu mohu omezit, že některé pohledy mají sloužit pouze ke čtení (read only) *můžou skrýt skutečnou strukturu tabulek *mohou omezit přístupné řádky Systémová přístupová práva přístupu k databázi odebíráme příkazem: CREATE REVOKE SESSION FROM *REVOKE CREATE SESSION FROM CREATE GRANT SESSION FROM GRANT CREATE SESSION FROM Když dva uživatelé zadají stejný dotaz: nemůže každý získat jiná data *může každý získat jiná data dotaz skončí chybou nelze zadat stejný dotaz v jedné transakci Nonrepeatable (fuzzy - zmatené) reads znamená, že: Transakce nečte data zapsaná jinou transakcí a shledává, že jsou ovlivněna (upravena či smazána) jinou transakcí *Transakce čte data již jednou čtená a shledává, že jsou ovlivněna (upravena či smazána) jinou transakcí, jejíž potvrzení nastalo během probíhání dané transakce Transakce opětovně spouští dotazy vracející množinu řádků vyhovující vyhledávacím podmínkám a nachází, že jiná potvrzená transakce přidala další řádky, které splňují podmínky vyhledávání Transakce je ukončena: abnormálním ukončením spojení uživatele se serverem vždy po zadání libovolného příkazu SQL *pouhým ukončením spojení se serverem Oracle *příkazem COMMIT Chyba při provádění SQL příkazu: způsobí změny provedené předchozími příkazy v rámci dané transakce *nezpůsobí změny provedené předchozími příkazy v rámci dané transakce *způsobí, že všechny změny provedené příkazem jsou odrolovány zpět způsobí narušení referenční integrity Dirty reads znamená, že: Transakce opětovně spouští dotazy vracející množinu řádků vyhovující vyhledávacím podmínkám Transakce čte data již jednou čtená a shledává, že jsou ovlivněna (upravena či smazána) jinou transakcí Transakce čte data zapsaná jinou transakcí, která již byla potvrzena *Transakce čte data zapsaná jinou transakcí, která ještě nebyla potvrzena http://fei.trtkal.net S t r a n a 6

Phantom reads (or phantoms - zjevení) znamená, že: *Transakce opětovně spouští dotazy vracející množinu řádků vyhovující vyhledávacím podmínkám a nachází, že jiná potvrzená transakce přidala další řádky, které splňují podmínky vyhledávání Transakce čte data již jednou čtená a shledává, že jsou ovlivněna (upravena či smazána) jinou transakcí, jejíž potvrzení nastalo během probíhání dané transakce. Transakce opětovně spouští dotazy vracející množinu řádků nevyhovující vyhledávacím podmínkám a nachází, že jiná potvrzená transakce přidala další řádky, které nesplňují podmínky vyhledávání Přístupová práva k objektům: jsou poskytnuta jednorázově při vytvoření objektu práva může poskytovat pouze vlastník objektu *může poskytovat správce nebo vlastník objektu práva může poskytovat administrátor Když dva uživatelé zadají stejný dotaz: nelze zadat stejný dotaz v jedné transakci dotaz skončí chybou *může každý získat jiná data nemůže každý získat jiná data Mechanismus Proxy Authentication: *dovoluje předat informace o skutečném uživateli, který s aplikací pracuje neumožní aplikaci přistupovat do databáze stále pod stejným jménem a heslem nedovoluje předat informace o skutečném uživateli, který s aplikací pracuje *umožní aplikaci přistupovat do databáze stále pod stejným jménem a heslem Nonrepeatable (fuzzy - zmatené) reads znamená, že: Transakce opětovně spouští dotazy vracející množinu řádků vyhovující vyhledávacím podmínkám a nachází, že jiná potvrzená transakce přidala další řádky, které splňují podmínky vyhledávání *Transakce čte data již jednou čtená a shledává, že jsou ovlivněna (upravena či smazána) jinou transakcí, jejíž potvrzení nastalo během probíhání dané transakce Transakce nečte data zapsaná jinou transakcí a shledává, že jsou ovlivněna (upravena či smazána) jinou transakcí Transakce - vytvoření: je inicializována implicitně pouze použitím příkazu PL *je inicializována implicitně je inicializována implicitně po požití příkazu ROLLBACK není inicializována implicitně Oracle používá mód zamykání: *Exklusívní *Sdílený Inkluzivní Automatický EXCEPTION : lze použít v jazyce DDL/SQL lze použít v jazyce DML/SQL *je sekce pro zpracování výjimek *Lze použít v jazyce PL/SQL http://fei.trtkal.net S t r a n a 7

Mezi vývojové nástroje patří: PL/SQL Developer SQL Programmer PL/SQL PSPad Oracle 9i JDeveloper SQL je: *strukturovaný dotazovací jazyk objektově orientovaný jazyk *neprocedurální jazyk procedurální jazyk Příkazy SQL: mohou manipulovat s obsahem databáze pouze ve vlastním schematu uživatele nemohou modifikovat strukturu databáze *mohou manipulovat s obsahem databáze *mohou modifikovat strukturu databáze Jazyk PL/SQL: umožňuje deklarovat konstanty, proměnné a kurzory v prostředí MySql *nabízí podporu dynamických deklarací *umožňuje deklarovat konstanty, proměnné a kurzory nenabízí podporu dynamických deklarací PHP: *nepovoluje vykonávání několika SQL dotazů v jednom volání funkce mysql_query() povoluje vykonávání několika SQL dotazů v jednom volání funkce mysql_query()oddělených čárkou (,) povoluje vykonávání několika SQL dotazů v jednom volání funkce mysql_query() povoluje vykonávání několika SQL dotazů v jednom volání funkce mysql_query()oddělených apostrofem (') Z pohledu bezpečnosti dat Důvěrnost (secrecy) znamená: informace by měly být přístupné neautorizovaným uživatelům pouze na čtení *informace by neměly být přístupné neautorizovaným uživatelům informace by měly být přístupné pouze vlastníkovi dat *informace by měly být přístupné pouze autorizovaným uživatelům Po odrolování transakce k návratovému bodu: *jsou vráceny pouze změny provedené SQL příkazy po nastavení návratového bodu *jsou všechny návratové body nastavené po daném savepointu ztraceny jsou vráceny všechny změny provedené SQL příkazy *transakce zůstává aktivní a může dále pokračovat Data v návratovém tabulkovém prostoru mohou být ve stavu: *Aktivní (platná, unexpired) *Nepoužitá Vždy aktivní (platná, unexpired) Neaktivní (neplatná, unexpired) /* toto je špatně, ale v odpovědích má být */ Dirty reads znamená, že: Transakce opětovně spouští dotazy vracející množinu řádků vyhovující vyhledávacím podmínkám Transakce čte data zapsaná jinou transakcí, která již byla potvrzena *Transakce čte data zapsaná jinou transakcí, která ještě nebyla potvrzena Transakce čte data již jednou čtená a shledává, že jsou ovlivněna (upravena či smazána) jinou transakcí http://fei.trtkal.net S t r a n a 8

EXCEPTION: lze použít v jazyce DML/SQL *je sekce pro zpracování výjimek lze použít v jazyce DDL/SQL *lze použít v jazyce PL/SQL Vstupní formuláře lze ošetřit v souvislosti s SQL Injection (proti vsunutí do SQL kódu): *použitím regulárních výrazů *omezením délky vstupního pole formuláře *využitím konverzních funkcí využitím logických operátorů Proměnné v PL/SQL: je nutné před prvním použitím vždy inicializovat je nutné před prvním použitím vždy deklarovat a omezit, aby nenabývala hodnoty NULL není nutné před prvním použitím vždy deklarovat *je nutné před prvním použitím vždy deklarovat Příkazy SQL: *mohou modifikovat strukturu databáze nemohou modifikovat strukturu databáze *mohou manipulovat s obsahem databáze mohou manipulovat s obsahem databáze pouze ve vlastním schematu uživatele PHP: povoluje vykonávání několika SQL dotazů v jednom volání funkce mysql_query()oddělených čárkou (,) povoluje vykonávání několika SQL dotazů v jednom volání funkce mysql_query()oddělených apostrofem (') *nepovoluje vykonávání několika SQL dotazů v jednom volání funkce mysql_query() povoluje vykonávání několika SQL dotazů v jednom volání funkce mysql_query() Mezi vývojové nástroje patří: *SQL Programmer *Oracle 9i JDeveloper PL/SQL PSPad *PL/SQL Developer Šifrování komunikace: není transparentní pro samotnou aplikaci *neznamená nutnost zásahu do kódu aplikace *Je transparentní pro samotnou aplikaci znamená nutnost zásahu do kódu aplikace Z pohledu bezpečnosti dat Integrita (integrity) znamená: *modifikovat data může jen autorizovaný uživatel modifikovat data může jen vlastník dat modifikovat data nemůže jen neautorizovaný uživatel modifikovat data může jen uživatel s právem read Systémová přístupová práva přístupu k databázi odebíráme příkazem: CREATE REVOKE SESSION FROM CREATE GRANT SESSION FROM GRANT CREATE SESSION FROM *REVOKE CREATE SESSION FROM http://fei.trtkal.net S t r a n a 9

Automatické zamykání slouží: K zamknutí definovaných tabulek uživatele *Pro řešení sdíleného (konkurenčního) přístupu více klientů k datům v tabulkách K potvrzení každého dotazu, kdy není možný návrat zpět Pro řešení přístupu k sdílenému adresáři při přístupu více klientů Chyba při provádění SQL příkazu: způsobí narušení referenční integrity *nezpůsobí změny provedené předchozími příkazy v rámci dané transakce způsobí změny provedené předchozími příkazy v rámci dané transakce *způsobí, že všechny změny provedené příkazem jsou odrolovány zpět Data v návratovém tabulkovém prostoru mohou být ve stavu: *Aktivní (platná, unexpired) Vždy aktivní (platná, unexpired) *Nepoužitá Neaktivní (neplatná, unexpired) /* toto je špatně, ale v odpovědích má být */ Proměnné v PL/SQL: *je nutné před prvním použitím vždy deklarovat není nutné před prvním použitím vždy deklarovat je nutné před prvním použitím vždy inicializovat je nutné před prvním použitím vždy deklarovat a omezit, aby nenabývala hodnoty NULL Vstupní formuláře lze ošetřit v souvislosti s SQL Injection ( proti vsunutí do SQL kódu): *omezením délky vstupního pole formuláře *použitím regulárních výrazů *využitím konverzních funkcí využitím logických operátorů PHP: *nepovoluje vykonávání několika SQL dotazů v jednom volání funkce mysql_query() povoluje vykonávání několika SQL dotazů v jednom volání funkce mysql_query()oddělených apostrofem (') povoluje vykonávání několika SQL dotazů v jednom volání funkce mysql_query() povoluje vykonávání několika SQL dotazů v jednom volání funkce mysql_query()oddělených čárkou (,) Příkazy SQL: *mohou modifikovat strukturu databáze *mohou manipulovat s obsahem databáze nemohou modifikovat strukturu databáze mohou manipulovat s obsahem databáze pouze ve vlastním schematu uživatele Jazyk PL/SQL: nenabízí podporu dynamických deklarací *nabízí podporu dynamických deklarací umožňuje deklarovat konstanty, proměnné a kurzory v prostředí MySql *umožňuje deklarovat konstanty, proměnné a kurzory V jazyce PL/SQL lze použít příkaz: *DECLARE NO_EXCEPTION START_DBMS_OUTPUT.PUT_LINE *EXCEPTION http://fei.trtkal.net S t r a n a 10

Pro výpis textu na konsoli v PL/SQL se využívá: *příkaz SET SERVEROUT ON *DBMS_OUTPUT.PUT_LINE procedura DBMS_PUT_LINE balík DBMS_OUTPUT_LINE Jazyk PL/SQL: nemá podporu modularity nemá podporu transakčního zpracování *má podporu transakčního zpracování *má podporu modularity Nejdůležitější pomůcka pro ruční test na SQL Injection je řetězec: *' or 1=1 -- ' or 1=1 -- ' ' and 1=1 -- *' or 1=1 http://fei.trtkal.net S t r a n a 11

Z pohledu bezpečnosti dat Důvěrnost (secrecy) znamená: informace by neměly být přístupné neautorizovaným uživatelům informace by měly být přístupné pouze autorizovaným uživatelům informace by měly být přístupné pouze vlastníkovi dat informace by měly být přístupné neautorizovaným uživatelům pouze na čtení Oracle Internet Directory OID: Databáze může z OID přebírat seznam uživatelů Databáze může získat z OID seznam rolí přiřazených uživatelům Databáze nemůže z OID přebírat seznam uživatelů Databáze nemůže získat z OID seznam rolí přiřazených uživatelům SELECT * from user_objects vypíše: všechny vytvořené databázové objekty uživatele všechny vytvořené databázové objekty všech uživatelů vybrané vytvořené databázové objekty Chybovou zprávu Z pohledu bezpečnosti dat Dostupnost (availability) znamená: neautorizovaným uživatelům by nemělo být bráněno v přístupu čtení dat autorizovaným uživatelům by nemělo být bráněno v přístupu neautorizovaným uživatelům by mělo být bráněno v přístupu neautorizovaným uživatelům by nemělo být bráněno v přístupu Konzistentní čtení na úrovni SQL dotazu: Oracle vždy zajišťuje konzistenci pro čtení na úrovni dotazu konzistence čtení je zajištěna automaticky parametrem SCN Oracle nezajišťuje konzistenci pro čtení na úrovni dotazu konzistence čtení je zajištěna automaticky bez účasti uživatele Mezi příkazy pro řízení transakcí patří: SAVEPOINT LEVEL ROLLBACK ROLLBACK COMMIT Po odrolování transakce k návratovému bodu: transakce zůstává aktivní a může dále pokračovat jsou vráceny pouze změny provedené SQL příkazy po nastavení návratového bodu jsou všechny návratové body nastavené po daném savepointu ztraceny jsou vráceny všechny změny provedené SQL příkazy Transakce proběhne: jen po ukončení spojení se serverem Oracle jako celek jako dílčí část celku po zadání příkazu commit ukončením příkazu DDL V jazyce PL/SQL lze použít příkaz: EXCEPTION DECLARE NO_EXCEPTION START_DBMS_OUTPUT.PUT_LINE SQL je: strukturovaný dotazovací jazyk procedurální jazyk http://fei.trtkal.net S t r a n a 12

neprocedurální jazyk objektově orientovaný jazyk Jazyk PL/SQL: nabízí podporu dynamických deklarací umožňuje deklarovat konstanty, proměnné a kurzory nenabízí podporu dynamických deklarací umožňuje deklarovat konstanty, proměnné a kurzory v prostředí MySql Příkazy SQL: mohou manipulovat s obsahem databáze mohou manipulovat s obsahem databáze pouze ve vlastním schematu uživatele mohou modifikovat strukturu databáze nemohou modifikovat strukturu databáze Pohledy: můžou skrýt skutečnou strukturu tabulek pomocí pohledu nemohu omezit, že některé pohledy mají sloužit pouze ke čtení (read only) mohou omezit přístupné řádky pomocí pohledu mohu omezit, že některé pohledy mají sloužit pouze ke čtení (read only) SELECT * from user_objects vypíše: Chybovou zprávu všechny vytvořené databázové objekty všech uživatelů vybrané vytvořené databázové objekty všechny vytvořené databázové objekty uživatele Z pohledu bezpečnosti dat Integrita (integrity) znamená: modifikovat data může jen vlastník dat modifikovat data může jen autorizovaný uživatel modifikovat data nemůže jen neautorizovaný uživatel. modifikovat data může jen uživatel s právem read Z pohledu bezpečnosti dat Důvěrnost (secrecy) znamená: informace by měly být přístupné pouze vlastníkovi dat informace by neměly být přístupné neautorizovaným uživatelům informace by měly být přístupné neautorizovaným uživatelům pouze na čtení informace by měly být přístupné pouze autorizovaným uživatelům Systémová přístupová práva přístupu k databázi vytváříme příkazem: GRANT CREATE SESSION TO... CREATE REVOKE SESSION TO... CREATE GRANT SESSION TO... REVOKE CREATE SESSION TO... Když dva uživatelé zadají stejný dotaz: může každý získat jiná data nemůže každý získat jiná data nelze zadat stejný dotaz v jedné transakci dotaz skončí chybou Oracle používá tuto kategorii zámků: Interní zámky DDL zámky DML zámky PL zámky http://fei.trtkal.net S t r a n a 13

Oracle používá mód zamykání: Exklusívní Automatický Sdílený Inkluzivní SQL je: procedurální jazyk objektově orientovaný jazyk neprocedurální jazyk strukturovaný dotazovací jazyk EXCEPTION : lze použít v jazyce DML/SQL je sekce pro zpracování výjimek lze použít v jazyce DDL/SQL lze použít v jazyce PL/SQL Šifrování komunikace: znamená nutnost zásahu do kódu aplikace je transparentní pro samotnou aplikaci není transparentní pro samotnou aplikaci neznamená nutnost zásahu do kódu aplikace Mechanismus Proxy Authentication: nedovoluje předat informace o skutečném uživateli, který s aplikací pracuje dovoluje předat informace o skutečném uživateli, který s aplikací pracuje umožní aplikaci přistupovat do databáze stále pod stejným jménem a heslem neumožní aplikaci přistupovat do databáze stále pod stejným jménem a heslem Oracle Internet Directory OID: Databáze nemůže z OID přebírat seznam uživatelů Databáze může získat z OID seznam rolí přiřazených uživatelům Databáze nemůže získat z OID seznam rolí přiřazených uživatelům Databáze může z OID přebírat seznam uživatelů Přístupová práva k objektům: práva může poskytovat administrátor práva může poskytovat pouze vlastník objektu může poskytovat správce nebo vlastník objektu jsou poskytnuta jednorázově při vytvoření objektu Transakce proběhne: jen po ukončení spojení se serverem Oracle jako celek jako dílčí část celku po zadání příkazu commit ukončením příkazu DDL Transakce - vytvoření: je inicializována implicitně po požití příkazu ROLLBACK je inicializována implicitně je inicializována implicitně pouze použitím příkazu PL není inicializována implicitně http://fei.trtkal.net S t r a n a 14

Transakce je ukončena: pouhým ukončením spojení se serverem Oracle vždy po zadání libovolného příkazu SQL příkazem COMMIT abnormálním ukončením spojení uživatele se serverem Mezi příkazy pro řízení transakcí patří: LEVEL ROLLBACK ROLLBACK SAVEPOINT COMMIT Po odrolování transakce k návratovému bodu: jsou vráceny všechny změny provedené SQL příkazy jsou vráceny pouze změny provedené SQL příkazy po nastavení návratového bodu transakce zůstává aktivní a může dále pokračovat jsou všechny návratové body nastavené po daném savepointu ztraceny Nonrepeatable (fuzzy - zmatené) reads znamená, že: Transakce nečte data zapsaná jinou transakcí a shledává, že jsou ovlivněna (upravena či smazána) jinou transakcí Transakce čte data již jednou čtená a shledává, že jsou ovlivněna (upravena či smazána) jinou transakcí, jejíž potvrzení nastalo během probíhání dané transakce Transakce opětovně spouští dotazy vracející množinu řádků vyhovující vyhledávacím podmínkám a nachází, že jiná potvrzená transakce přidala další řádky, které splňují podmínky vyhledávání Dirty reads znamená, že: Transakce čte data zapsaná jinou transakcí, která již byla potvrzena Transakce čte data již jednou čtená a shledává, že jsou ovlivněna (upravena či smazána) jinou transakcí Transakce opětovně spouští dotazy vracející množinu řádků vyhovující vyhledávacím podmínkám Phantom reads (or phantoms - zjevení) znamená, že: Transakce opětovně spouští dotazy vracející množinu řádků nevyhovující vyhledávacím podmínkám a nachází, že jiná potvrzená transakce přidala další řádky, které nesplňují podmínky vyhledávání Transakce čte data již jednou čtená a shledává, že jsou ovlivněna (upravena či smazána) jinou transakcí, jejíž potvrzení nastalo během probíhání dané transakce. Transakce opětovně spouští dotazy vracející množinu řádků vyhovující vyhledávacím podmínkám a nachází, že jiná potvrzená transakce přidala další řádky, které splňují podmínky vyhledávání Chyba při provádění SQL příkazu: způsobí narušení referenční integrity způsobí, že všechny změny provedené příkazem jsou odrolovány zpět nezpůsobí změny provedené předchozími příkazy v rámci dané transakce způsobí změny provedené předchozími příkazy v rámci dané transakce Jakékoli příkazy DDL: způsobí ukončení aktivní transakce, ale nenastane implicitní vytvoření nové transakce způsobí ukončení aktivní transakce způsobí ukončení aktivní transakce a implicitní vytvoření nové transakce nezpůsobí ukončení aktivní transakce a implicitní vytvoření nové transakce http://fei.trtkal.net S t r a n a 15

PHP: povoluje vykonávání několika SQL dotazů v jednom volání funkce mysql_query()oddělených čárkou (,) povoluje vykonávání několika SQL dotazů v jednom volání funkce mysql_query() nepovoluje vykonávání několika SQL dotazů v jednom volání funkce mysql_query() povoluje vykonávání několika SQL dotazů v jednom volání funkce mysql_query()oddělených apostrofem (') V jazyce PL/SQL lze použít příkaz: EXCEPTION DECLARE START_DBMS_OUTPUT.PUT_LINE NO_EXCEPTION Příkazy SQL: nemohou modifikovat strukturu databáze mohou manipulovat s obsahem databáze pouze ve vlastním schematu uživatele mohou modifikovat strukturu databáze mohou manipulovat s obsahem databáze Proměnné v PL/SQL: je nutné před prvním použitím vždy deklarovat není nutné před prvním použitím vždy deklarovat je nutné před prvním použitím vždy inicializovat je nutné před prvním použitím vždy deklarovat a omezit, aby nenabývala hodnoty NULL Nejdůležitější pomůcka pro ruční test na SQL Injection je řetězec: ' or 1=1 ' or 1=1 -- ' and 1=1 -- ' or 1=1 -- ' Vstupní formuláře lze ošetřit v souvislosti s SQL Injection ( proti vsunutí do SQL kódu): využitím konverzních funkcí použitím regulárních výrazů využitím logických operátorů omezením délky vstupního pole formuláře Jazyk PL/SQL: nemá podporu modularity má podporu transakčního zpracování nemá podporu transakčního zpracování má podporu modularity Mezi vývojové nástroje patří: SQL Programmer PL/SQL PSPad PL/SQL Developer Oracle 9i JDeveloper Pro výpis textu na konsoli v PL/SQL se využívá: DBMS_OUTPUT.PUT_LINE příkaz SET SERVEROUT ON procedura DBMS_PUT_LINE balík DBMS_OUTPUT_LINE http://fei.trtkal.net S t r a n a 16