2. Databázový systém Oracle8i

2.1 Úvodní popis

Společnost Oracle získala významný podíl na trhu hi-end databázových systémů již v roce 1991 uvedením databáze Oracle7. Další vývojový stupeň znamenala databáze Oracle8 a po ní verze Oracle8i, která byla navržena speciálně pro vývoj a provoz aplikací na Internetu. Právě Oracle8i (konkrétně Oracle8i Enterprise Edition 8.1.6 for MS Windows NT) jsem měl k dispozici pro tuto práci.

2.1.1 Objektově relační přístup

Oracle8i je objektově relační SQL databáze typu klient/server. I nadále zůstává plně podporován relační databázový model a navíc jsou k dispozici určité objektové vlastnosti. Z tohoto pohledu se systém nazývá hybridní.

Základní objektově orientované vlastnosti:

§         Objektové typy – umožňují vytvářet uživatelské datové typy a těmi pak v objektových tabulkách nahradit standardní datové typy

§         Objektové pohledy – slouží v případě, že potřebujeme přistupovat k datům uloženým v relační tabulce pomocí objektových technologií

§         Objektová rozšíření – definování a práce s objekty pomocí nových příkazů jazyků SQL a PL/SQL[1]

Vzhledem k povaze problematiky a zaměření této práce odkazuji na publikaci [1] nebo obecně na zdroje o objektovém programování.

2.1.2 Klient / Sever

Důležitou charakteristikou relačních databázových systémů je skutečnost, že fyzická struktura databáze (soubory na disku, do kterých se ukládají databázové informace) je před koncovým uživatelem skryta. Uživatel vidí pouze logickou strukturu dat (databázové tabulky) a nemusí nic vědět o jejich fyzickém uspořádání. O mapování dat ze sloupců a řádků tabulek do souborů uložených na disku se stará databázový server. Výhodou databází klient/server oproti tradičním PC databázím (např. dBASE, FoxPro) je kromě rychlosti a spolehlivosti také rozdělení zátěže mezi klientský systém a databázový server. Na straně klienta běží aplikace, pomocí které uživatel pracuje s daty. Databázový server provádí správu datových zdrojů pro více klientů. Teoreticky lze obě části systému spustit na jednom stroji, ale tím zanikne řada výhod tohoto typu aplikací.

2.1.3 Správa databáze

Základní rozhraní pro provádění všech administrátorských úkonů představuje Oracle Enterprise Manager 2. Aplikace využívá třívrstvou architekturu, která umožnila přenést většinu zátěže na server (viz. obr. 2.1.3).
První vrstvu tvoří správcovská konzole (Enterprise Manager Console) a integrované aplikace. Grafické uživatelské rozhraní obsahuje menu, nástrojové lišty a 4 konfigurovatelné panely:

§         Navigator - zobrazení jednotlivých databází a objektů[2] v databázi ve stromové struktuře

§         Group - umožňuje vytvářet logická seskupení databázových serverů nebo objektů na grafickém pozadí (například na mapě)

§         Jobs - automatické spouštění úloh (umožňuje plánovat nebo vzdáleně spouštět např. zálohování)

§         Events - monitorování předdefinovaných událostí (např. dojde-li k důležité události, automaticky se provede příslušná akce)

Z prostředí konzole se lze připojit k libovolné oraclovské databázi v síti a spouštět řadu nástrojů určených pro řízení jednotlivých operací (např. vytváření a rušení objektů, spouštění či ukončení běhu databáze).
Druhou vrstvu tvoří jeden nebo více Management Serverů. Jejich úkolem je zpracovávat a řídit distribuci všech zadaných úloh. Pro uchování systémových i aplikačních dat a informací o stavu jednotlivých uzlů (nodes) používá Enterprise Manager Repository.
Třetí vrstvu představují jednotlivé servery v síti, které prostřednictvím agentů (Intelligent Agent) vykonávají příslušné úlohy.

Některé konkrétní úkony v databázi (včetně jejího vytvoření) budou popsány v kapitole 3.

2.1.4 Podpora Javy

Jedním z charakteristických rysů Oracle8i je široká podpora Javy. Java (přesně řečeno Java Virtual Machine) je integrována přímo do databázového stroje. Výsledkem je, kromě zvýšení spolehlivosti a rychlosti, možnost v databázi psát, ukládat a spouštět libovolný Java kód. To přináší mnoho předností – nezávislost na platformě, vytváření inteligentních objektů a opakovatelné využití komponent.
Oracle8i podporuje také jazyk SQLJ, který umožňuje použít SQL příkazy v programech napsaných v Javě a komunikovat tak s databází. Na vývoji tohoto standardu se podílely firmy Oracle, IBM a Sun. SQLJ lze použít jak na straně klienta, kdy přístup k databázi zajišťuje rozhraní JDBC[3] (viz. více v kapitole 4.4), tak na straně serveru, kde Java aplikace pracují s databází přímo.

2.2 Základní komponenty Oracle8i

Jak již bylo řečeno, systém je rozdělen na dvě základní části: na stranu serveru a stranu klienta.
V následujících odstavcích budou stručně představeny jen ty nejzákladnější komponenty systému Oracle8i Enterprise Edition. Některé součásti, které se přímo týkají zaměření této práce, budou detailněji popsány v následujících kapitolách. Podrobnější informace viz. [1] nebo originální dokumentace.

2.2.1 Oracle8i server

Serverová část systému zahrnuje samotné databázové jádro a procesy běžící na pozadí, které zajišťují chod vlastní databáze. Obsahuje také elementární nástroje, které umožňují takové základní operace jako spouštění a zastavení databáze. Tyto utility i samotná databáze se chovají na všech platformách naprosto stejně – rozdíly jsou ukryty přímo v jádře, kde Oracle využívá jednotlivé platformy k uložení dat, jejich čtení a zápisu.

Server Manager

Nebo též SVRMGR - umožňuje provádět důležité operace jako spouštění a zastavování databáze nebo přímo zadávat příkazy jazyka SQL.

Net8

Tento nástroj zajišťuje přenos dat a příkazů z databázového serveru k ostatním komponentám, které se nacházejí vně základních utilit – tzn. spojuje serverovou část s částí klientskou (popř. spojuje server-server) a data uložená v databázi. Z toho plyne, že je součástí serveru i klientů. Net8 zároveň umožňuje síťové připojení z dalších nástrojů, které nejsou standardní součástí základního programového balíku.

SQL*Plus

Tento nástroj umožňuje vytvářet a spouštět SQL dotazy, vkládat záznamy nebo měnit data. Může být spuštěn na straně serveru i klienta. „Plus“ v názvu značí, že obvyklý rozsah SQL příkazů byl rozšířen mimo jiné o možnost přizpůsobovat výstupní sestavy (např. nastavit velikost stránky, záhlaví a zápatí), upravovat a ukládat soubory, definovat proměnné, výzvy pro vstupy od uživatelů nebo vyvolávat příkazy operačního systému.

EXP80 a IMP80

Pomocí těchto utilit je možno data exportovat (EXP80) z databáze nebo je do ní importovat (IMP80). Takovýmto způsobem lze data z tabulky exportovat do souboru, ten poté např. přenést na jinou platformu (např. na Unix) a naimportovat je do databáze.

Loader

Tento nástroj umožňuje do databáze vložit data z jiné databázové platformy. Data je možno načíst (po nastavení příslušných parametrů) ze standardního textového souboru, který obsahuje tabulky.
Vedle tohoto nástroje již dnes existují další možnosti. Můžeme využít například standardu ODBC (viz. více v kapitole 4.4) nebo asistentů systému Oracle. Ti slouží k propojení např. se systémemy MS SQL Server nebo MS Access a většinou je možno stáhnout je zadarmo z webových stránek Oracle[4].

Precompilers

Předkompilátor je překladač, který umožňuje vývoj aplikací v různých jazycích využívajících vložených příkazů jazyka SQL pro přístup do databáze. K dispozici je standardně jeden předkompilátor pro každý podporovaný programovací jazyk jako COBOL, Ada, C, C++ nebo FORTHRAN (ne na NT). Množství podporovaných jazyků se liší podle platforem.

2.2.2 Oracle8i klient

Klientská část systému se skládá z utilit a pomocných programů, které je možné spustit na libovolném počítači v síti. Jejich součástí je obvykle také grafické uživatelské rozhraní, které velmi usnadňuje ovládání systému.

Net8 a SQL*Plus

Tyto komponenty jsou součástí serverové i klientské části systému – jejich stručný popis viz. kapitola 2.2.1

Assistants

Asistenti jsou pomocníci, kteří vedou uživatele některými úkoly jako například přenos dat z Oracle7 nebo jiných databázových platforem (MS Access apod.). Další takovým úkolem je překlopení relačních databázových struktur do objektových. Jeden ze standardních asistentů také napomáhá vytvořit webové stránky – podrobněji viz. kapitola 4.2.

Enterprise Manager

Enterprise Manager je nejdůležitější komponentou klientské části. Proto bude blíže popsán v samostatné (následující) kapitole a prakticky předveden v kapitole 3.

2.2.3 Enterprise Manager

Tato sada nástrojů slouží k plnění mnoha administrátorských úkonů jako například spravovat databázové objekty nebo řešit problémy výkonnosti. Sada umožňuje centrálně spravovat mnoho databází (ať už lokálních či vzdálených). Některé nástroje jsou standardní součástí Oracle8i, jiné se dodávají zvlášť.
Většina nástrojů poskytuje grafické uživatelské rozhraní, které umožňuje vykonávat mnoho administrátorských úkonů bez nutnosti zadávat příkazy jazyka SQL. Máme však možnost nechat si SQL kód zobrazovat ve spodní části okna a tam ho podle potřeby dolaďovat. Zároveň nám to umožňuje vygenerovaný kód uložit do souboru a ten poté spustit ve chvíli, kdy chceme akci opakovat (bez nutnosti znovu procházet všechny ovládací prvky).

Enterprise Manager Console

Tento nástroj byl popsán v kapitole 2.1.3 – Správa databáze.

DBA Studio

Tato komponenta zobrazuje ve stromové struktuře všechny dostupné databáze a objekty v nich. V této struktuře je možno objekty třídit podle typů objektů nebo podle schémat[5] (vlastníků). Zároveň v rámci databáze poskytuje přístup k nejdůležitějším nástrojům pro její správu:

Z hlediska nutnosti (a možnosti) zadávat příkazy SQL platí skutečnosti uvedené v úvodu této kapitoly (2.2.3).

Data Manager

Tento nástroj umožňuje provádět export a import dat, spouštět skripty nebo zpřístupnit data ke sdílení jiné databázi.

Backup Manager a Recovery Manager

Tyto utility poskytují průvodce pro ukládání dat na disk nebo pásku, různé varianty záloh a v případě nutnosti obnovení databáze ze zálohových souborů.

SQL*Plus Worksheet

Tato utilita má dělené okno – v horní části je možno zadávat SQL (SQL*Plus, PL/SQL) příkazy a v dolní části se zobrazuje výsledek. Umožňuje editovat příkazy, vracet se zpět v historii a znovu příkazy spouštět. Zároveň dovoluje kód (i výsledek) ukládat do souborů a uložené zpětně spouštět.

SQL*Plus Worksheet

 

 

[1] PL/SQL (Procedural Language for Structured Query Language) – Procedurální jazyk strukturovaného dotazovacího jazyka. Jde o množinu příkazů jazyka SQL rozšířenou o procedurální prvky [4].

[2] V tomto případě (a i v dalších kapitolách) jsou pojmem objekty míněny objekty v databázi – např.  tabulky, uživatelé, role apod.

[3] JDBC – Java DataBase Connectivity. Více viz. kapitola 4.4

[4] Oficiální webové stránky Oracle Corporation: http://www.oracle.com

[5] SCHÉMA je dáno uživatelským jménem uživatele – zahrnuje a identifikuje všechny objekty, které daný uživatel v rámci databáze vytvořil.

[6] POHLED je fiktivní tabulka vzniklá vybráním určitých sloupců (popř. i řádků) z původní tabulky. Tímto způsobem je možno zpřístupnit jen určitá data z původní tabulky.

[7] SYNONYMA jsou alternativní pojmenování databázových objektů, které většinou slouží ke zjednodušení jmen. Ty je možno používat v SQL dotazech.

[8] ROLE je skupina práv. Uživatelům se stejnými právy k databázi není nutno tyto práva jednotlivě definovat, ale stačí jim přiřadit příslušnou roli.

[9] PROFIL je, podobně jako role, skupina vlastností, která se jako celek přiřadí uživateli. V tomto případě se jedná o vlastnosti jako omezení systémových zdrojů, doba připojení nebo maximální počet připojení jednoho uživatele. V Oracle8i standardně existuje jeden implicitní profil Default.

[10] TABULKOVÝ PROSTOR je logický prostor, kterému je přiřazen jeden nebo více fyzických datových souborů.