- předchozí článek - následující článek - obsah - úvodní stránka -

Linuxové noviny 11/99

Oracle WebDB

Vladimír Náprstek

Oracle WEBDB (OW) je nový produkt firmy Oracle. Jedná se o "nadstavbu" databázového stroje Oracle RDBMS 8.0.x nebo 8i (8.1.5). A k čemu to je? To se dovíte v následujícím textu. Protože již vyšlo několik recenzí (např. v Chipu) a i na www firmy Oracle CZ najdete dost informací, budeme se zabývat hlavně instalací a prvními dojmy.

Takže jenom na úvod, co je cílem WebDB? Pomocí něho můžete vytvářet dynamické www aplikace, kompletně uložené v databázi. Co je velmi, velmi zajímavé, je to, že veškerý kontakt s databázovým strojem probíhá pouze prostřednictvím www prohlížeče (libovolného, umí-li rámy a javaskripty). Tzn. veškerá správa, programování a posléze i využívání hotové aplikace probíhá pomocí Vašeho oblíbeného brousku.

[ WebDB ]

Architektura

Základem je samozřejmě databázový stroj Oracle 8.0.x nebo 8i (8i má být standardní součástí, ale v současné době ještě není verze pro Linux dostupná). WEBDB je package, který se pouze nainstaluje. Pro komunikaci s uživatelem je potřeba ještě nějaký http démon. To může být webdb listener, nějaký WWW server (jako příklad je uváděn Apache nebo IIS) nebo cartridge pro Aplikační server Oracle. Preferovanou možností je využití webdb listeneru, protože ten si při startu vytvoří spojení do databáze a udržuje jej po celou dobu svého života (ve skutečnosti se těch listenerů pustí vícero - jako u Apache). Naproti tomu použití std. WWW serveru znamená jít cestou cgi skriptů. Funkčně je to stejné, jen rychlost by měla být v případě webdb listeneru vyšší, protože odpadá režie s přihlašováním do DB. Prozatím jsme zkoušeli jen webdb listener, takže nemůžeme podat svědectví o rozdílu.

[ WebDB ]

Podporované OS

Kromě WinNT a většiny Unixů nás bude zajímat verze pro Linux, kterou jsme také zakoupili a instalovali. Dále se budeme věnovat právě verzi pro náš oblíbený Linux.

[ WebDB ]

Instalace celého balíku

V poměrně dobře připravených instalačních příručkách je nejdůležitější požadavek na glibc 2.0.7 a jádro 2.0.34 nebo vyšší v podstatě jediný v případě databáze. U disků instalační příručka doporučuje použít více malých disků než jeden velký. Je to otázka bezpečnosti a záleží jen na uživateli, jak moc si cení svých dat. Budete-li chtít tomuto požadavku vyhovět, vězte, že budete potřebovat 4 mount pointy. Bezpečnost systému můžete však zajistit i jinak - např. RAIDem. Ostatní minimální HW požadavky opravdu nejsou nic moc - 32MB RAM, trojnásobek swapu, 400MB HDD pro plnou instalaci a samozřejmě mechanika CD. Jak dobře však DB poběží na takovémto stroji si nedovedu představit.

Instalační příručka WebDB už požaduje přímo RedHat 5.1 a nainstalovaný databázový motor 7.3.4, 8.0.5 nebo 8i.

[ WebDB ]

Na čem jsme pracovali

Jako databázový server byl použit PC od Vikomtu (model Danaus) s procesorem PIII, jedním diskem 13GB a 384MB RAM. Instalovali jsme Debian 2.1 s jádrem 2.2.11 (ovšem rychle nahrazeným 2.2.12) a přistoupili k instalaci DB.

[ WebDB ]

Poznámky k instalační proceduře DB

Nejprve databáze - znalci nechť tento odstavec přeskočí :)

Po vytvoření mountpointů a uživatele (majitele databáze) je potřeba spustit skript oratab.sh. Příručka Vás neupozorní, ale skript ano - před spuštěním je potřeba nastavit proměnnou prostředí ORACLE_OWNER. Navíc skript požaduje sh v /usr/bin, který jsem zatím viděl jen v /bin. Takže jsme skript zkopírovali na disk, opravili první řádku a nahradili používanou proměnnou GROUPS na GROUPSS (jinak sh hlásil, že tato proměnná je jen pro čtení, což je zřejmě problém bashe 2.0, na RedHatu mu to nevadilo). Pokud si při instalaci zvolíte instalaci i dokumentace k RDBMS, asi Vás zaskočí hláška o chybějícím adresáři. Pomůže ruční zásah z jiného terminálu. Také si předem zkontrolujte, máte-li /usr/lib/libtcl.so. Máte-li nainstalovánu jen jednu verzi tcl, asi to bude v pořádku. My jsme měli tcl 7.6 i tcl 8.0 a museli jsme ručně vytvořit link na příslušnou knihovnu (verze 8.0). Tento problém se také objevuje pouze u Debianu.

Po instalaci se musí spustit skript root.sh (jak požaduje instalátor i instalační příručka) - opět záležitost s požadavkem na /usr/bin/sh. Na závěr je potřeba ještě spustit catrep.sql pomocí sqlplus (takže jej nezapomeňte nainstalovat). Provede se to příkazem: @uplna_cesta_ke_scriptu. Při běhu tohoto skriptu proběhlo velmi mnoho hlášek, mezi nimi i nějaké chybové. Alespoň si to myslíme, ale bylo to moc rychlé a v logu jsme nic nenašli. Podle pozdějšího hovoru s hot-line je to v pořádku. Skript si totiž před vytvořením některých objektů udělá (pro jistotu) jejich zrušení, no a když neexistují... Na závěr ještě musíte opsat spouštěcí skript do /etc/init.d (na RedHatu do /etc/rc.d/init.d). Také by mohl být na instalačním CD. Tím byla základní instalace Oracle databáze hotová.

[ WebDB ]

A nyní to hlavní - instalace WebDB

Vždycky jsem si myslel, že příkaz mount /dev/cosi /mnt/něco -t fs udělá úplně stejnou věc jako příslušný zápis v /etc/fstab a zápis mount /mnt/něco. Až při instalaci WebDB jsem zjistil, že tomu tak není. Přimontování instalačního CD ROMu druhou variantou vede při spuštění ke hlášce "permission denied". První varianta ovšem vede k cíli - instalační skript se spustí a funguje (a instalační příručka požaduje připojení CD právě takto). Instalační příručka obsahuje i obrázky obrazovek instalátoru (na rozdíl od instalační příručky DB). Zde už na uživatele nečeká žádný zádrhel a vše běží k plné spokojenosti. Jen v jedné chvíli to vypadá, že skript umřel - disk nevrčí, CD mechanika nebliká - vydržte, za chvíli to bude pokračovat. Na konci opět opíšete spouštěcí skript (tentokrát je to jen jeden řádek) a můžeme do testování. Doufám, že jste si všimli hlášení o uživatelském jménu a heslu v průběhu instalace.

[ WebDB ]

První spuštění

Nejdříve musíme samozřejmě správně spustit DB i WebDB listener (o tom později). Pozor: listener spusťte jako root. Po spuštění brousku, zadání URL a autentifikaci se nám objeví úvodní obrazovka - obr 1. Máme zde základní volby další práce - prohlížení DB objektů, komponent atd; další možností je jejich tvorba, administrace (správa uživatelů, oprávnění, konfigurace listeneru,...) a poslední možností je monitorování systému.

Předpokládám, že každý začne vytvořením uživatele (sebe) a pod tímto uživatelem bude dále pracovat. Zde ovšem narazí na (již zdokumentovanou) chybu aplikace. Při pokusu o vytvoření tabulky (očekávám, že to bude druhým krokem) projde celým průvodcem až ke konečné chybové hlášce o nenalezených právech pro tabulkový prostor - viz obr. 2 (ano, DB mluví česky). Náprava je jednoduchá - každému uživateli, který má být vývojářem (role webdb_developer) je potřeba přidat ještě oprávnění "resource". Pak bude vše probíhat dobře (tedy pokud si správně nastavíte práva). HotLine (zaslouží si opravdu pochvalu) ještě poradila po instalaci spustit skript catalog.sql (kromě již uvedeného catrep.sql) - o něm se instalační příručka nezmiňuje.

[ WebDB ]

Nabodeníčka

Čeština je v současné době neúplná. Samotná databáze česky umí (to však asi poznáte jen z chybových hlášek), ale nyní dodávaná werze WebDB (2.0.5) češtinu ve svých možnostech nemá - tedy nemá česká menu. Jinak češtinu v datech samozřejmě používat můžete. ALE během velmi krátké doby (v řádu dní) bude dodávána nová verze a ta již česky umět má. A způsob nastavení jazyka je hezky řešen. Podle nastavení jazyka prohlížeče se automaticky nastaví jazyk odpovědí. Tedy systému WebDB samozřejmě. Aplikace a její jazyk je v rukou jejího tvůrce.

Ovšem aby vše česky běhalo, musíte vše správně nastavit. Tzn. nastavit vlastnosti DB a správně spustit WebDB listener. Abych Vás nenapínal a ušetřil Vám hledání v dokumentaci, tedy vězte, že stačí v souboru init<sid>.ora přidat dvě proměnné. No tři, jak uvidíme. Takže na konec souboru přidáme nejdříve dva řádky:

nls_territory="Czech Republic"

nls_language="CZECH"

Všechny proměnné týkající se národního prostředí začínají nls_. Stačí nastavit jenom tyto dvě proměnné, ostatní se nastaví podle nich a nastavit je musíme jen v případě, že je chceme změnit. Do spouštěcího skriptu DB ještě můžeme pro jistotu přidat řádek (a do skriptu pro WebDB listener POVINNĚ) přidáme:

export NLS_LANG=\
          "CZECH_Czech Republic.EE8ISO8859P2"

Když nyní spustíme DB a v sqlplus zadáme dotaz

select parameter, value from nls_session_parameters,

měli bychom obdžet takovouto odpověď:

PARAMETERVALUE

NLS_LANGUAGECZECH
NLS_TERRITORYCZECHREPUBLIC
NLS_CURRENCY
NLS_ISO_CURRENCYCZECHREPUBLIC
NLS_NUMERIC_CHARACTERS,.
NLS_CALENDARGREGORIAN
NLS_DATE_FORMATDD.MM.YY
NLS_DATE_LANGUAGECZECH
NLS_SORTCZECH
9 řádek vybráno.

No a podle výpisu vidíme, že asi budeme chtít nastavit NLS_DATE_FORMAT na "DD.MM.YYYY" - přece jen, tisíciletí se blíží. Takže doplníme init<sid>.ora o tuto proměnnou. To se však týká standardního výpisu datových atributů. V reportech a pod. si můžete formát data taktéž specifikovat, takže je to jen na Vašem zvážení.

Abychom měli jistotu, můžeme si ve WebDB vytvořit report založený na uvedeném dotazu a měli bychom obdržet stejný výsledek. Jestliže ano, jsme za vodou...

[ WebDB ]

Neodpustím si malou poznámku: v kapitole o národním prostředí dokumentace (v angličtině) se hovoří o tom, že máme místo typů CHAR, VARCHAR a VARCHAR2 používat NCHAR nebo NVARACHAR2. Zkusil jsem to a při pokusu o vložení dat jsem získal chybovou hlášku o tom, že si neodpovídají znakové sady. Použil jsem tedy VARCHAR2 a vše fungovalo OK. Asi budu muset ještě pilovat angličtinu...

K čemu WebDB použijeme

Předpokládám, že ti, kdo budou mít zájem, se obrátí na www.oracle.cz, proto jen stručně. Celá tato sestava slouží k vytváření int{er|ra}netových databázových aplikací. A výhoda oproti sestavě Apache/MySQL? V první řadě schopnosti databáze Oracle (bez komentáře) a navíc celá aplikace je kompletně uložená v databázi. Tedy konec změti statických stránek a CGI skriptů. I když nic nebrání jejich dalšímu používání a vybudování trojkombinace - Apache/WebDB/Oracle a koneckonců i MySQL a perl/PHP, skripty mohou dále plnit své úkoly. Nezanedbatelnou výhodou je také způsob "programování" - vše probíhá v prostředí brousku formou průvodců. Má to ale háček, průvodci Vám neumožní 100% využít možností databáze, ale v záloze je textový klient sqlplus, takže nic není ztraceno. A pokud chcete ručně programovat - i to můžete.

Obrovským kladem produktu je i množství průvodců pro mnoho různých ovládacích prvků, reportů, grafů a dalších a dalších - viz obr. 3 a 4. Prakticky vše, co byste mohli potřebovat při vývoji www aplikace, tu najdete. Nepočítejte však s tím, že uděláte aplikaci na úrovni SAP R/3. Ovšem takové ty evidence, které má každá firma (kniha odeslané pošty, evidence čehokoliv apod), jsou "udělatelné" během velmi kráké doby (začnete-li jako úplní laici, zvládnete to do týdne - asi).

[ WebDB ]

První postřehy

Budete-li vytvářet tabulky, používejte průvodců (viz obrázky 5 až 8). Je vidět, že asi nevyužijete všech možností - např. klausule DEFAULT a další. Pro jednoduché tabulky to nevadí. A budete-li tvořit nějakou složitější datovou strukturu, použijete stejně asi nějaký CASE nástroj nebo si po analýze napíšete ručně vytvářecí skript (ještě že máme vim, že?) a použijete klienta sqlplus.

A když už něco vytvoříte, je občas potřeba něco zrušit (DROP...) nebo změnit (ALTER...). Tuto možnost jsem však zatím nenašel. A ani nenajdu (podle hot-line). Takže opět sqlplus.

Pokud Vás zajímá, jak je to s transakcemi, vězte, že WebDB transakce používá, ale provádí automaticky COMMIT po stisku tlačítka ,,uložit". Pokud Vám toto nebude vyhovovat, budete muset trochu programovat. Zajistit se to však prý dá (nezkoušeli jsme, zatím...).

Co se týče textového klienta, musím říci, že obdobný klient pro MySQL se mi líbí víc (už jenom pro historii příkazů).

Naše dosavadní dojmy

Kromě uvedených poznámek (jsou opravdu všechny zatím objevené) jsme s produktem spokojeni, ba přímo nadšeni. Sice jej máme teprve několik dní, ale stojí to za to. Na uvedeném stroji je rychlost odezvy uspokojující - ovšem uvidíme, až server zatížíme plným provozem. Po grafické stránce se jedná o velmi povedený produkt. A pokud budete při návrhu prvků, reportů a stránek používat defaultní grafické rozvržení, určitě se nebudete muset za své výtvory stydět. A možností, jak si svá díla nastavit je ale opravdu mnoho, takže Vaše hotové aplikace se nemusí ani trochu podobat defaultnímu provedení.

[ WebDB ]

Závěrem

Pokud Vás produkt zaujal, doporučuji jej Vašemu zájmu. Podle informací fy. Oracle se připravuje kniha o WebDB a má obsahovat i CD s instalací WebDB pro Linux. *


- předchozí článek - následující článek - obsah - úvodní stránka -