zoznamenie.sk
Transkript
Urãite ste sa pri rie‰ení otázky ukladania údajov vo svojej firme snaÏili presadiÈ a následne implementovaÈ najkvalitnej‰ie rie‰enie. No pohºad na ceny ‰piãkov˘ch produktov vás moÏno doteraz nútil drÏaÈ sa viac pri zemi a preferovaÈ lacnej‰ie rie‰enie na úkor kvalitnej‰ieho. Napríklad veºmi kvalitná a bezpeãná databáza Oracle rozhodne nepatrila k lacn˘m a dostupn˘m rie‰eniam. Predchádzajúce verzie databázy Oracle sa síce technologicky hodili aj pre malé projekty, no z hºadiska licenãnej politiky to niekedy bolo pomerne investiãne nároãné. Nová licenãná politika v kombinácii s jednoduchou, a teda lacnou administráciou otvára nové moÏnosti nasadenia produktu aj v mal˘ch a stredn˘ch firmách. Maximálne dvojprocesorovú verziu databázy Oracle Standard Edition One je moÏné kúpiÈ za 171 663 Sk/ /133 701 Kã (CPU licencia), alebo 5 121 Sk/3 988 Kã na pouÏívateºa pri minimálnom poãte 5 pouÏívateºov. Základná cena databázy v tejto minimálnej konfigurácii sa tak dostala pod 26 000 Sk/20 000 Kã. Malé a stredné firmy budú taktieÏ môcÈ vyuÏívaÈ v˘hody zabudovanej databázy v komerãn˘ch aplikáciách zakúpen˘ch od tretích firiem. Verzia Oracle Standard Edition One tak ponúka v˘kon spoºahlivosÈ a zabezpeãenie databázy Oracle v cenovo v˘hod- nom jednoprocesorovom systéme. MôÏe byÈ základn˘m kameÀom pre ‰kálovateºnosÈ. Zákazníci tak budú môcÈ zaãaÈ svoj biznis „v malom“ a roz‰irovaÈ svoju in‰taláciu podºa rastúcich poÏiadaviek. Pre nekomerãné a ‰tudijné úãely je (a vÏdy bola) databáza Oracle 10g, podobne ako drvivá väã‰ina produktov spoloãnosti Oracle, zdarma a je moÏné ich plné verzie stiahnuÈ z webu. Licenãné poplatky sa platia aÏ pri komerãnom nasadení. Hlavnou podmienkou pre získanie databázy na nekomerãné úãely je ãlenstvo v Oracle Technology Network OTN (otn.oracle.com), ktoré je taktieÏ bezplatné. âlenom OTN sa môÏete staÈ po vyplnení prihlasovacieho formulára na webe. Podobné bezplatné licenãné ujednanie platí aj pre v˘voj aplikácií. No kaÏd˘ v˘voj raz skonãí, a ak bol úspe‰n˘ a koncepcia projektu bola dobrá, aplikáciu je potrebné komerãne nasadiÈ. Cieºom tejto minipublikácie je zoznámenie sa s databázov˘m serverom Oracle 10g. Nakoºko sa budeme venovaÈ len základom a spoloãnosÈ Oracle v znaãnej miere zachováva aj spätnú kompatibilitu, väã‰ina publikácie je pouÏiteºná aj pre verzie Oracle9i a 8i. Dizajn aplikácií, nástrojov a utilít je moÏno mierne odli‰n˘, no princípy zostávajú nezmenené. ªUBOSLAV LACKO g znamená grid ...................................................... 1 In‰talácia Oracle 10g ............................................. 3 Oracle Enterprise Manager .................................... 5 SQL konzoly ........................................................... 8 Jazyk PL/SQL ......................................................... 14 Príklad pre zoznámenie sa s jazykom SQL ............ 16 Struãn˘ úvod do procedurálneho jazyka PL/SQL .. 22 Na adrese http://otn.oracle.com/new/index.html nájdete detailn˘ a názorn˘ v˘ukov˘ materiál, ktor˘ umoÏÀuje v priebehu dvoch dní zvládnuÈ základy DBA na Oracle 10g. g znamená grid nia, podklady pre daÀové doklady a podobne. Skrátka a dobre server pracuje na maximum kapacity a nezriedka sa uvaÏuje, o jeho upgrade za v˘konnej‰í, nakoºko budúcoroãné uzávierky by moÏno nemusel stihnúÈ vãas… Na tomto jednoduchom príklade vidíme, Ïe predpokladané maximum v˘poãtovej kapacity vyuÏijeme len málokedy, priãom je nepríjemné hlavne to, Ïe tento v˘kon potrebujeme práve v obdobiach, ktoré sú pre ekonomiku firmy a jej chod Ïivotne dôleÏité. Rie‰ením by mohol byÈ prenájom v˘poãtovej kapacity, no ani toto rie‰enie nie je univerzálne. Nበpríklad s decembrovou záÈaÏou objednávkového servera a januárovou záÈaÏou finanãného a ekonomického servera naznaãuje, Ïe tieto obdobia rovnako ovplyvÀujú marketingovú politiku mnoh˘ch firiem, takÏe jednoducho môÏe nastaÈ situácia, kedy si nie je moÏné prenajaÈ ìal‰iu kapacitu. A skôr neÏ zaãneme uvaÏovaÈ o prenájme, pozrime sa podrobnej‰ie na na‰u IT infra‰truktúru. Vidíme, Ïe jedna ãasÈ na‰ej vlastnej informaãnej infra‰truktúry v podstate zaháºa. Zostáva len navrhnúÈ kvalitné a v˘konné rie‰enie pre moÏnosti spolupráce na‰ich vlastn˘ch serverov. Situácia v decembri, nastáva preÈaÏenie objednávkového servera Intuitívne sa ponúka rie‰enie s vyrovnávaním ich záÈaÏe. Prv˘ obrázok je z decembra. BlízkosÈ Vianoc vyvoláva zv˘‰enú vlnu nákupov. A tak server, na ktorom sa spracovávajú objednávky od zákazníkov, doslova praská vo ‰víkoch, zatiaº ão server na ekonomickom oddelení beÏne úãtuje, zo stavu relatívneho pokoja ho nevyvedie ani spracovanie v˘plat, veì je na to bohato dimenzovan˘. Druh˘ obrázok znázorÀuje situáciu v januári. Predaj tovaru sa dostal na beÏn˘ normál, ão znamená obdobie pokoja pre objednávkov˘ server. No situácia na ekonomickom oddelení sa zmenila. Skonãil sa fi‰kálny rok (nበpríklad pre jednoduchosÈ predpokladá zhodu kalendárneho a fi‰kálneho roka), je potrebné Situácia v januári, nastáva preÈaÏenie servera na ekonomickom oddespracovaÈ koncoroãné uzávierky, v˘kazy, vyhodnote- lení Kríza v IT na prelome tisícroãí jednak odhalila slabiny v tejto oblasti a podobne ako kaÏdá kríza a recesia akcelerovala ìal‰í rozvoj. V deväÈdesiatych rokoch minulého storoãia sme sa stali svedkami prudkého boomu investícií v podnikovej IT oblasti. Ak by sme v‰ak hodnotili efektívnosÈ t˘chto investícií, zistili by sme, Ïe mnohé servery beÏali väã‰inu ãasu na neveºk˘ zlomok svojej in‰talovanej kapacity. V období recesie, kedy nastal zv˘‰en˘ tlak na zhodnocovanie investícií, je markantná snaha o maximálnu efektívnosÈ. Jednou z ciest, ako to dosiahnuÈ, je grid computing. Princíp grid computingu vysvetlíme na zjednodu‰enom príklade z podnikovej praxe. V‰imnite si nasledujúce dva obrázky. 1 Rie‰enie vyuÏívaním spojenej v˘poãtovej kapacity Grid computing transformuje spôsob vyuÏitia zdrojov podnikmi; virtualizuje vyuÏitie podnikov˘ch zdrojov. Virtualizuje pouÏívanie podnikov˘ch zdrojov medzi servermi v dátovom centre, medzi dátov˘mi centrami v podniku a medzi podnikmi. ·tandardy grid computingu, ktoré umoÏÀujú jeho zavedenie medzi podnikmi, sa intenzívne vyvíjajú. Orgán ‰tandardov pre grid, GGF, je uÏ zaloÏen˘ a má podporu v‰etk˘ch v˘znamn˘ch dodávateºov technológií. KaÏd˘ v˘znamn˘ dodávateº informaãn˘ch technológií hovorí o grid computingu a sºubuje ponuku grid technológií pre podniky. Hoci dodávatelia majú svoju vlastnú interpretáciu pojmu grid computing, tieto interpretácie majú isté spoloãné atribúty. Ako to uÏ b˘va zvykom, ‰tandardizácia v tejto oblasti je záleÏitosÈ pomerne zloÏitá a pomalá, zatiaº ão poÏiadavka dosiahnuÈ prínosy gridu je u veºa firiem veºmi akútna. Firma Oracle sa v tejto súvislosti zamerala na implementáciu konceptu gridu priamo do databáze a aplikaãného serveru Oracle, aby ho bolo moÏné vyuÏiÈ aj v beÏn˘ch podnikov˘ch aplikáciách. V˘hoda takejto koncepcie je zrejmá na prv˘ pohºad. Nie je potrebné písaÈ aplikácie ‰pecificky proti rozhraniam umoÏÀujú- Grid computing zvy‰uje efektívnosÈ podnikov˘ch zdrojov, nakoºko ponúka spôsob zdruÏenia hardvéru na spracovanie, priãom odstraÀuje ostrovy nedostatoãne vyuÏit˘ch poãítaãov. MôÏete vytvoriÈ centralizované pooly v˘poãtov˘ch prostriedkov a dynamicky ich prideºovaÈ prioritám svojej organizácie. My‰lienka grid computingu môÏe byÈ realizovaná na viacer˘ch úrovniach. Na najvy‰‰ej úrovni je v˘poãtov˘ systém ako verejná sluÏba. Nemusíte sa staraÈ, kde sú zapísané va‰e dáta, alebo ktor˘ poãítaã spracúva va‰u poÏiadavku. Mali by ste maÈ moÏnosÈ ÏiadaÈ o informáciu alebo v˘poãet a dostaÈ, ão Ïiadate – koºko chcete a kedy chcete. Toto je analogické spôsobu, ktor˘m fungujú elektrické siete v tom zmysle, Ïe neviete, kde sa nachádza generátor alebo ako vyzerá schéma elektrickej siete. Jednoducho poÏiadate o elektrinu a dostanete ju. Je jedno, ãi energia, ktorú spotrebovávame, bola vyrobená v blízkej elektrárni, prípadne v Rakúsku alebo Taliansku. Jednoducho, kto mal dostatok alebo prebytok energie, tak ju dodal do centrálneho distribuãného systému. Cieºom je urobiÈ v˘poãtové systémy verejnou sluÏRie‰enie vyuÏívaním spojenej v˘poãtovej kapacity bou – komoditou, a to v‰adeprítomnou. cim vyuÏitie gridu. Je moÏné napríklad vziaÈ databáOdtiaº pochádza názov grid computing. Zo strany servera je grid computing hlavne o alokácii zovú aplikáciu napísanú pre prevádzku nad jednoduch˘m databázov˘m serverom a zaãaÈ ju prevádzkozdrojov, zdieºaní informácií a vysokej dostupnosti. vaÈ na databázovom clusteri (technológia Real AppliAlokácia zdrojov zabezpeãuje, Ïe v‰etci tí, ktorí cation Clusters je kºúãovou komponentou gridu na potrebujú alebo poÏadujú zdroje, dostanú, ão potredatabázovej úrovni) bez nutnosti zásahu do aplikábujú. NemôÏe potom nastaÈ situácia, Ïe niektoré zdroje neãinne zaháºajú a pritom niektoré poÏiadavky cie. Samozrejme, Ïe problematika prevádzky tak˘chto z dôvodu nedostatku lokálnej kapacity ostávajú rozsiahlych systémov prekraãuje rozsah tejto publinesplnené. Zdieºanie informácií zabezpeãuje, Ïe kácie a väã‰ina z vás bude asi pri zoznamovaní sa informácie, ktoré pouÏívatelia a aplikácie potrebujú, s databázou Oracle najskôr rie‰iÈ otázky oveºa jednosú k dispozícii vÏdy tam, kde sú potrebné, a vtedy, duch‰ie. Zaãnime teda s in‰taláciou. kedy sú potrebné. 2 Vo verzii 10g sa in‰talácia v˘razne zjednodu‰ila. Databázu je moÏné nain‰talovaÈ z jediného CD zhruba za 20 aÏ 30 minút. Nástroj Oracle Universal Installer (OUI) môÏe uskutoãniÈ aj viacuzlovú in‰taláciu clusterovanej databázy Oracle. Poãas in‰talácie je moÏné identifikovaÈ názvy hostiteºov. OUI potom nain‰taluje potrebn˘ softvér databázy Oracle na v‰etky tieto uzly. Je moÏné sa tieÏ rozhodnúÈ pre jedin˘ zdieºan˘ obraz softvéru alebo osobitn˘ obraz na kaÏdom hostiteºskom poãítaãi. ªahká in‰talácia klienta zjednodu‰uje nasadzovanie aplikácií na grid. Klienti databázy potrebujú len stiahnuÈ alebo skopírovaÈ veºmi malú podmnoÏinu súborov Oracle klienta a nastaviÈ premennú prostredia. Zjednodu‰ená in‰talácia klienta je jedn˘m zo základn˘ch predpokladov pre pouÏitie v grid prostrediach, kde sa klientské poãítaãe dynamicky identifikujú a konfigurujú. Ak nám staãí implicitná in‰talácia, cel˘ jej proces sa odohrá doslova na niekoºko málo kliknutí. Po kontrole vhodnosti operaãného systému sa zobrazí hlavná obrazovka in‰talaãného programu pre nastavenie parametrov. Tu sa môÏeme rozhodnúÈ pre základnú alebo roz‰írenú in‰taláciu. Pokiaº chceme vytvoriÈ aj implicitnú databázu, musíme zadaÈ heslo pre jej administráciu, teda heslo pre úãty SYS, SYSTEM, SYSMAN a DBSNMP. UÏ v procese in‰talácie je markantná snaha o bezpeãnosÈ. Ak sa pouÏívatelia budú snaÏiÈ zadaÈ klasické notoricky známe implicitné heslá, napríklad In‰talácia – o‰etrenie notoricky známych a ãasto pouÏívan˘ch hesiel 3 In‰talácia – zadanie administrátorského hesla CHANGE_ON_INSTALL alebo MANAGER, in‰talaãná rutina ich na túto záleÏitosÈ striktne upozorní. Pri roz‰írenej in‰talácii si môÏeme zvoliÈ nielen domovsk˘ adresár, ale aj typ in‰talácie a ‰pecifikovaÈ úãel pouÏitia databázy. K ponúkan˘m typom in‰talácie in‰talátor ponúka predbeÏn˘ odhad diskového priestoru, ktor˘ príslu‰ná in‰talácia zaberie. Enterprise in‰talácia je urãená pre podnikové databázové aplikácie, on-line transaction processing (OLTP), pre budovanie a prevádzku dátov˘ch skladov (data warehouse) a rozsiahle internetové aplikácie. Edícia Standard je urãená pre pracovné skupiny, prípadne oddelenia firiem a podobne. Pre jednopouÏívateºsk˘ v˘voj aplikácií je urãená edícia Personal. Túto voºbu pouÏije napríklad v˘vojár databázov˘ch aplikácií pre in‰taláciu databázového servera Oracle 10g na notebook. Najväã‰iu variabilitu poskytuje voliteºná in‰talácia. Pochopiteºne nie je urãená pre zaãiatoãníkov. Platí tu jednoduché pravidlo, Ïe musíme presne vedieÈ, ão chceme nain‰talovaÈ a pouÏívaÈ. Voºbou jednej z ponúkan˘ch moÏností v dialógu Set Database Configuration naznaãíme oblasÈ ìal‰ieho pouÏívania tejto databázy. Na základe tejto voºby bude databázov˘ server pri vytváraní novej databázy Pokiaº nain‰talujeme databázu Oracle 10g s vyuÏitím implicitn˘ch volieb, bude situácia na disku a s URL adresami nasledovná: Konfiguraãné súbory sú v adresári C:\oracle\product\10.1.0. Komponenty in‰talácie sa nachádzajú v adresári C:\oracle\product\10.1.0\Db_1. E‰te uvedieme dve dôleÏité URL adresy pre iSQL*Plus a Enterprise Manager iSQL*Plus URL: http://ncll:5560/isqlplus Enteprise Manager 10g Database Control URL: http://ncll:5500/em (ncll je názov autorovho lokálneho poãítaãa) Roz‰írená in‰talácia – v˘ber typu in‰talácie optimalizovaÈ napríklad uloÏenie údajov, prístup k údajom, spôsob manipulácie s nimi a podobne. Voºba General Purpose slúÏi k vytvoreniu databázy pre ‰irokú oblasÈ pouÏitia, od jednoduch˘ch transakcií po komplexné dotazy. Zaruãuje r˘chly prístup k údajom pre veºk˘ poãet súãasne pripojen˘ch pouÏívateºov. Poskytuje dostatoãn˘ v˘kon aj pre budovanie systémov pre podporu rozhodovania – Decision Support Systems (DSS). Voºba Transaction Processing poskytuje najvy‰‰í v˘kon pre jednoduché transakcie veºkého mnoÏstva súãastne pripojen˘ch pouÏívateºov. Pre dátové sklady je optimalizovaná voºba Data Warehouse Database. Nad t˘mito údajmi môÏeme robiÈ napríklad rozsiahle OLAP (Online Analytical Processing) anal˘zy. Pri voºbe Advanced musíme zadaÈ informácie pre vytvorenie a optimalizáciu databázy sami. V poslednom kroku in‰talácie sa dozvieme sumárne informácie o parametroch in‰talácie. In‰talácia – sumárne informácie o parametroch in‰talácie Databázov˘ server si môÏeme predstaviÈ ako sluÏbu v pozadí, ktorá spravuje údaje v databáze a reaguje na poÏiadavky klientov. Aby sme mohli pracovaÈ s databázov˘m serverom, potrebujeme k tomu dva druhy nástrojov. Jednak nástroj pre správu databázy Oracle Enterprise Manager a jednak konzolovú aplikáciu pre zadávanie SQL príkazov. Pre na‰e cviãné úãely budeme pouÏívaÈ schému testovacieho klienta SCOTT. V predchádzajúcich verziách bola táto schéma implicitne odomknutá a prihlasovalo sa do nej pomocou parametrov: PouÏívateºské meno: SCOTT Heslo: TIGER Vo verzii Oracle 10g je táto schéma implicitne zamknutá, preto ako prv˘ administrátorsk˘ úkon v aplikácii Oracle Enterprise Manager bude sprístupnenie schémy SCOTT a nastavenie prístupov˘ch parametrov. Roz‰írená in‰talácia – v˘ber konfigurácie databázy pre konkrétnu oblasÈ nasadenia 4 URL adresa http://ncll:5500/em (ncll je názov lokálneho poãítaãa) Aplikácia Oracle Enterprise Manager (OEM) nám poskytne najkomplexnej‰ie moÏnosti pre správu databázového serveru Oracle 10g aj podrobné informácie o stave v akom sa databázová server momentálne nachádza, prípadne sú signalizované potenciálne problémy. K OEM sa musíme prihlásiÈ zo správcovského úãtu, napríklad SYS. ZáloÏka Home „Domovská“ stránka Oracle Enterprise Manageru umoÏÀuje jednak zistiÈ základné parametre databázy a sledovaÈ záÈaÏ CPU a stav aktívnej session. OEM – základná obrazovka Jednotlivé informácie sú zoskupené do blokov. Blok General obsahuje tieto informácie: OEM – prihlásenie sa pouÏívateºa Po úspe‰nom prihlásení sa nachádzame na hlavnej stránke OEM. Táto stránka zahrÀuje ‰tyri záloÏky: ◆ ◆ ◆ ◆ Home Performance Administration Maintenance (údrÏba) Priãom po prihlásení sa nachádzame v záloÏke Home. 5 Status Aktuálny stav databázy. MôÏe byÈ „Up“, „Down“, „Under Blackout“, „Unmonitored“, alebo „Unknown“. Stav je taktieÏ signalizovan˘ pomocou ikony semaforu. Up Since Dátum a ãas posledného ‰tartu databázy. Time Zone âasová zóna oblasti kde je databáza nain‰talovaná. Availability (%) Percentuálna dostupnosÈ za posledn˘ch 24 hodín. . Najskôr ukáÏeme postup pre odomknutie schémy pouÏívateºa SCOTT, aby sme mohli túto cviãnú schému pouÏívaÈ pre prípadné experimenty s jazykom PL/SQL. Po prepnutí sa do zloÏky Administration sa zameriame na blok funkcií Security. Pomocou URL odkazu USERS v tomto bloku sa zobrazí stránka so zoznamom pouÏívateºov. Instance Name Názov in‰tancie databázy. Version âíslo verzie databázy. Oracle Home Umiestnenie adresára Oracle Home. Listener Listener. Host Názov hostovacieho poãítaãa, na ktorom databáza sídli. Okrem bloku General obsahuje záloÏka „Home“ e‰te bloky Host CPU, Active Sessions, High Availability, Space Usage Diagnostic Summary. OEM – nastavenie prístupov˘ch parametrov pre schému SCOTT Predmetom ná‰ho záujmu je úãet pouÏívateºa SCOTT, ktor˘ chceme odomknúÈ a nastaviÈ preÀ implicitné heslo TIGER. (Mimochodom TIGER bolo meno obºúbeného kocúra oraclovského programátora Bruce Scotta.) ManipulovaÈ s úãtami môÏeme aj cez klientskú konzolovú aplikáciu. Struãná syntax príkazov je v tabuºke (dole). SQL*Plus: Release 10.1.0.2.0 – Production on Pi Apr 23 14:07:32 2004 Copyright (c) 1982, 2004, Oracle. All rights reserved. OEM – záloÏka Administration ZáloÏka Administration Enter user-name: sys as sysdba Enter password: ****** Z jednotliv˘mi záloÏkami sa zoznámime postupne. âinnosÈ Príkaz jazyka SQL Odomknutie úãtu ALTER USER meno ACCOUNT UNLOCK Zamknutie úãtu ALTER USER meno ACCOUNT LOCK Zmena hesla pri odomknutom úãte ALTER USER meno IDENTIFIED BY heslo Zmena hesla pri zamknutom úãte ALTER USER meno IDENTIFIED BY heslo ACCOUNT UNLOCK 6 Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 – Production With the Partitioning, OLAP and Data Mining options SQL> ZáloÏka Maintenance Funkcie, ktoré je moÏné aktivovaÈ zo stránky Maintenence slúÏia pre export a import údajov, napríklad medzi databázou a súbormi, pre zobrazenie ‰tatistiky a podobne. Funkcie sú zdruÏené do troch blokov: Utilities, Backup/Recovery a Deployments. ALTER USER SCOTT ACCOUNT LOCK; ALTER USER SCOTT ACCOUNT UNLOCK; ALTER USER SCOTT IDENTIFIED BY SCTIGER; ALTER USER SCOTT IDENTIFIED BY TIGER; ZáloÏka Performance Na stránke Preformance sú zobrazené tri hlavné oblasti pre prehºadné grafické zobrazenie ãasového priebehu záÈaÏe: ◆ Host ◆ Sessions ◆ Instance Throughput OEM – záloÏka Performance 7 OEM – záloÏka Maintenance V bloku Utilities sú zdruÏené funkcie: ◆ Export to File(s) ◆ Import from File(s) ◆ Import from Database ◆ Load Data from File ◆ Gather Statistics ◆ Clone ◆ Reorganize Objects ◆ Make Tablespace Locally Managed Blok Backup/Recovery obsahuje funkcie: ◆ Schedule ◆ Perform Recovery ◆ Configure Backup ◆ Configure Recovery ◆ Manage Current ◆ Configure Recovery Catalog ZloÏka Deployments slúÏi pre Software Management. URL adresa: http://ncll:5560/isqlplus (ncll je názov lokálneho poãítaãa) Celkom logická otázka, hlavne od zaãiatoãníka v‰ak môÏe byÈ: Viem, Ïe s databázou sa pracuje pomocou SQL príkazov, ale ako? Potrebujeme nejakú konzolovú aplikáciu, prostredníctvom ktorej môÏeme jednak zadávaÈ príkazy a taktieÏ aj zobrazovaÈ odozvy databázového servera. Konzolová aplikácia teda slúÏi ako jednoduch˘ prostredník medzi klientom a databázov˘m serverom. Klient prostredníctvom konzolovej aplikácie zadáva príkazy (v jazyku SQL) databázovému serveru. Tento ich vyhodnotí, vykoná a v˘sledok, napríklad v˘pis obsahu databázovej tabuºky vráti klientovi. Databázová platforma Oracle 10g obsahuje niekoºko klientsk˘ch konzolov˘ch aplikácií: ◆ SQLPLUS ◆ SQL*Plus (Windows aplikácia) ◆ iSQL* Plus (Webová aplikácia) Databázovému serveru je úplne jedno, odkiaº SQL príkaz dostane. Rozdiely medzi jednotliv˘mi konzolov˘mi aplikáciami pramenia teda hlavne z hºadiska pouÏívateºského prístupu a filozofie. Najjednoduch‰iu konzolu SQLPLUS spustíme príkazom C:\> SQLPLUS priamo z konzoly operaãného systému, alebo prostredníctvom menu „START“ operaãného systému Windows. PouÏívateºské meno a heslo môÏeme zadaÈ aj v príkazovom riadku pomocou syntaxe: C:\> SQLPLUS pouÏívateºské_meno/heslo@identifikátor _pripojenia Konzola SQLPLUS Pokiaº nám takéto pouÏívateºské rozhranie z nejakého dôvodu nevyhovuje, môÏeme vyuÏiÈ typické pouÏívateºské rozhranie Windows aplikácie s podobn˘m názvom SQL *Plus. Aplikáciu môÏeme spustiÈ pomocou hlavného menu operaãného systému, alebo priamo príkazom SQLPLUSW. Podobne ako v predchádzajúcom prípade môÏeme zadaÈ v príkazovom riadku aj prihlasovacie parametre: C:\> SQLPLUSW pouÏívateºské_meno/heslo@identifikátor _pripojenia Parametrom identifikátor_pripojenia ‰pecifikujeme protokol, pomocou ktorého sa chceme pripojiÈ, názov poãítaãa, ãíslo portu a meno databázy, ku ktorej sa chceme pripojiÈ. PouÏívateº môÏe zadaÈ ako identifikátor pripojenia reÈazec v tvare: meno_pocitaca:cislo_portu:meno_databazy napríklad: mojepc: 1521:oraev 8 Jednoduch‰ie je v‰ak zadaÈ alias identifikátora pripojenia. Tento identifikátor je definovan˘ v súbore TNSNAMES.ORA, v prípade implicitnej in‰talácie Oracle9i na platforme Windows nájdeme tento súbor v adresári C:\oracle\product\10.1.0\Db_1\NETWORK\ADMIN \tnsnames.ora V na‰om prípade je alias ORCL definovan˘ ako: ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ncll)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) miesto obrazovkového bufferu zostáva kurzor na pôvodnej pozícii. Webová konzola iSQL*Plus V˘znam písmena g v oznaãení databáze sme vysvetlili (GRID). Predchádzajúce verzie databázy mali oznaãenie Oracle9i a predt˘m Oracle8i. Aj v˘znam písmena i je ºahko identifikovateºn˘ – znamená internet. Aby bolo moÏné jednoducho pracovaÈ s databázou na diaºku pomocou SQL príkazov, je súãasÈou dodávky databázy 10g aj webová konzola iSQL*Plus. OpäÈ sa mení len druh prístupu cez webov˘ prehliadaã a vzhºad aplikácie, princíp prihlasovania a práce s údajmi pomocou SQL príkazov zostáva rovnak˘. URL adresa: http://ncll:5560/isqlplus (ncll je názov lokálneho poãítaãa) Konzola SQL*Plus Aplikáciu je moÏné ovládaÈ pomocou príkazov menu, alebo pomocou klávesov˘ch skratiek. PouÏívateºom, ktorí pacujú s in˘mi konzolov˘mi aplikáciami tieto skratky budú viac – menej známe. Pri presune na iné iSQL*Plus – prihlásenie sa pouÏívateºa KLÁVESOVÉ SKRATKY [Home] presun na zaãiatok obrazovkového bufferu [End] presun na koniec obrazovkového bufferu [Page Up] presun na predchádzajúcu stránku [Page Down] presun na nasledujúcu stránku [Alt]+[F3] nájdi textov˘ reÈazec [F3] Find nájdi ìal‰í v˘skyt textového reÈazca [Ctrl]+[C] zru‰enie predt˘m spustenej úlohy v SQL*Plus. [Ctrl]+[C] kopírovaÈ text (ak nie je spustená úloha v SQL*Plus) [Ctrl+[V] vloÏiÈ text z clipboardu [Shift+[Del] vymaÏ obrazovku a obrazovkov˘ buffer 9 Syntax niektor˘ch ãastej‰ie pouÏívan˘ch príkazov si popí‰eme podrobnej‰ie: @ {uri|meno_suboru[.pripona] } [argumenty…] Príkaz umoÏÀuje vykonaÈ príkazy uloÏené na webovej adrese alebo v súbore. @c:\pokus.sql @HTTP://machine_name.domain:port/YEAREND.SQL VAL1 VAL2 @HTTP://machine_name.domain:port/SCRIPTSERVE R?ENDOFYEAR VAL1 VAL dvojit˘ zavináã @@ má rovnak˘ v˘znam ako @ pouÏíva sa pre lep‰iu úpravu skriptov. / Príkaz umoÏní opätovné spustenie predchádzajúceho príkazu, ktor˘ ma konzola vo svojom bufferi. iSQL*Plus – SQL príkaz zadan˘ cez konzolu Pre na‰e cviãné úãely budeme pouÏívaÈ schému testovacieho klienta SCOTT a prihlasovaÈ sa budeme pomocou implicitn˘ch parametrov (ich nastavenie je popísané v stati Oracle Enterprise Manager): ARCHIVE LOG {LIST|STOP}|{START|NEXT|ALL|cislo } [TO ciel] Príkaz umoÏÀuje ovládanie mechanizmu pre vyuÏívanie archívnych redo log súborov. Aktuálny stav môÏeme vypísaÈ príkazom ARCHIVE LOG LIST; PouÏívateºské meno: SCOTT Heslo: TIGER BTITLE [printspec [text|variable] …] [ON|OFF] Pomocou príkazu BTITLE nastavujeme zarovnávanie a text zápätia kaÏdej stránky v˘stupnej zostavy. Prehºad vlastn˘ch príkazov konzolovej aplikácie iSQL Plus: BTITLE right 'Vypracoval ……………..'; SELECT * FROM dept @ @@ / (slash) ACCEPT ARCHIVE LOG ATTRIBUTE BREAK BTITLE CLEAR COLUMN COMPUTE CONNECT DEFINE DESCRIBE DISCONNECT EXECUTE EXIT HELP LIST PAUSE PRINT PROMPT RECOVER REMARK REPFOOTER REPHEADER RUN SET SHOW SHUTDOWN START STARTUP TIMING TTITLE UNDEFINE VARIABLE WHENEVER OSERROR WHENEVER SQLERROR 10 DEPTNO DNAME LOC 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON Vypracoval . . . . . . . . . . . . . . . . . . . . . . . . . COL[UMN] [{column|expr} [option …]] Pomocou príkazu COLUMN nastavujeme formátovacie parametre pre jednotlivé stæpce. Voºba pre stæpec môÏe obsahovaÈ rôzne príkazy, napríklad: CLE[AR] – vymaÏe stæpcov˘ formát FOR[MAT] formátovací_reÈazec – zmení formát zobrazenia údajov v stæpci Formátovací reÈazec pre ãísla môÏe obsahovaÈ znak »9« ako symbol pre ãíslo, bodku ako oddeºovaã desatinn˘ch ãíslic a ãiarku ako oddeºovaÈ tisícok. Formátovací reÈazec pre znaky môÏe obsahovaÈ ‰pecifikáciu dæÏky reÈazca An, kde n je poãet znakov. Ak pouÏijeme klauzulu WORD_WRAP, reÈazec nebude orezan˘, ale zalomen˘ do viacer˘ch riadkov. COLUMN loc FORMAT A7 WORD_WRAP; SELECT * FROM dept; DEPTNO DNAME LOC 10 ACCOUNTING NEW YOR K 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON Problémom obzvlá‰È v na‰ich konãinách b˘va formát dátumu a ãasu. ·tandardne zobrazovan˘ formát nemusí vÏdy vyhovovaÈ. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7369 SMITH CLERK 7902 17.12.80 800 7499 ALLEN SALESMAN 7698 20.02.81 1600 300 30 7521 WARD SALESMAN 7698 22.02.81 1250 500 30 7566 JONES MANAGER 7839 02.04.81 2975 20 20 … MôÏeme zmeniÈ formát dátumu napríklad na 'DD-MM-YYYY', ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYY'; EMPNO ENAME JOB MGR HIREDATE SAL 7369 SMITH CLERK 7902 17-12-1980 800 7499 ALLEN SALESMAN 7698 20-02-1981 1600 300 30 7521 WARD SALESMAN 7698 22-02-1981 1250 500 30 7566 JONES MANAGER 7839 02-04-1981 2975 … 11 COMM DEPTNO 20 20 CONN[ECT] [ { prihlásenie | / } [AS {SYSOPER|SYSDBA}]] Príkaz slúÏi k prihláseniu sa klienta k databázovému serveru. ReÈazec prihlásenie by sme mohli definovaÈ: pouÏívateºské_meno[/heslo][@identifikátor_pripojenia] ZadávaÈ úpln˘ prihlasovací reÈazec nie je kvôli bezpeãnosti moÏné. CONNECT sys/oracle AS SYSDBA; SP2-0927: CONNECT AS SYSDBA or AS SYSOPER not allowed through iSQL*Plus URL PrihlásiÈ sa môÏeme ako beÏn˘ klient napríklad takto: iSQL* Plus – odhlásenie sa pouÏívateºa CONNECT scott/tiger DESC[RIBE] {[schema.]object[@connect_identifier]} Príkaz umoÏÀuje vypísaÈ ‰truktúru databázovej tabuºky, pohºadu alebo ‰pecifikáciu procedúr a funkcií. EXECUTE príkaz Pomocou príkazu EXECUTE môÏeme spustiÈ príkaz jazyka PL/SQL. VARIABLE n NUMBER EXECUTE :n := 1 DESC emp; PL/SQL procedure successfully completed. Name Null? Type EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) DISC[ONNECT] Príkaz slúÏi pre odhlásenie sa klienta databázy. Predpokladajme situáciu, Ïe sme k databázovému serveru Oracle 10g pripojení ako klient SCOTT. {EXIT|QUIT} [SUCCESS|FAILURE|WARNING|n|variable| :BindVariable] [COMMIT|ROLLBACK] Ukonãí blok skriptu a prepne sa do vstupnej ãasti konzoly . SET premenná hodnota Príkaz pre nastavovanie systémov˘ch premenn˘ch konzolovej aplikácie. Zoznam premenn˘ch a parametrov je vypísan˘ pri popise príkazu SHOW. SQL> SET AUTOCOMMIT ON autocommit OFF SHOW parameter Príkaz umoÏÀuje zobraziÈ informácie o nastavení systémov˘ch konzolovej aplikácie. Ak je parametrom názov systémovej premennej, napríklad: SHOW AUTOCOMMIT autocommit OFF … príkaz SHOW s parametrom ALL zobrazí nastavenie v‰etk˘ch parametrov (a teda aj ich zoznam). 12 appinfo is OFF and set to „iSQL*Plus“ arraysize 15 autocommit OFF autoprint OFF autorecovery OFF autotrace OFF blockterminator „.“ (hex 2e) btitle OFF cmdsep OFF colsep „ „ compatibility version NATIVE concat „.“ (hex 2e) copycommit 0 COPYTYPECHECK is ON define „&“ (hex 26) describe DEPTH 1 LINENUM OFF INDENT ON echo OFF embedded OFF escape OFF FEEDBACK ON for 6 or more rows flagger OFF heading ON headsep „|“ (hex 7c) instance „local“ linesize 150 loboffset 1 logsource „“ long 80 longchunksize 80 null „“ numformat „“ numwidth 10 pagesize 24 PAUSE is ON and set to „“ recsep WRAP recsepchar „ „ (hex 20) release 1001000200 repfooter OFF and is NULL repheader OFF and is NULL serveroutput OFF sqlcase MIXED sqlcode 0 sqlpluscompatibility 10.1.0 sqlterminator „;“ (hex 3b) timing OFF ttitle OFF underline „-“ (hex 2d) USER is „SCOTT“ verify ON wrap : lines will be wrapped 13 TIMI[NG] [START text|SHOW|STOP] Príkaz TIMING funguje takmer ako klasické stopky. Ovláda sa pomocou kºúãov˘ch slov START, SHOW a STOP. TIMING START názov … blok príkazov, ktor˘ch dobu vykonanie chceme meraÈ. TIMING SHOW … ìal‰í blok príkazov, ktor˘ch dobu vykonanie chceme meraÈ. TIMING STOP Príkazom TIMING SHOW zistíme ‰portovou terminológiou povedané „medziãas“. Pre odmerania doby trvania jedného bloku vystaãíme s príkazmi START a STOP. timing for: SQL_TIMER Elapsed: 00:00:11.45 TTITLE [printspec [text|variable] …] [ON|OFF] Pomocou príkazu TTITLE nastavujeme zarovnávanie a text záhlavia jednej stránky v˘stupnej zostavy. ZarovnávaÈ môÏeme naºavo (LEFT), na stred (CENTER), alebo na pravo (RIGHT). TTITLE center 'Vypis oddeleni firmy'; SELECT * FROM dept; V˘pis oddelení firmy DEPTNO DNAME LOC 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON Pre pokusy z jazykom PL/SQL budeme pouÏívaÈ schému testovacieho klienta SCOTT a prihlasovaÈ sa budeme pomocou implicitn˘ch parametrov PouÏívateºské meno: SCOTT Heslo: TIGER PouÏiÈ môÏeme ºubovoºnú konzolovú aplikáciu, napríklad iSQL*Plus (URL adresa: http://ncll:5560/isqlplus, kde ncll je v na‰om prípade názov lokálneho poãítaãa). Ak si chceme prezrieÈ mnoÏinu príkazov jazyka SQL a PL/SQL, ktorú podporuje databázov˘ server Oracle 10g, môÏeme cez konzolovú aplikáciu zadaÈ príkaz pre v˘pis rezervovan˘ch slov: HELP RESERVED WORDS RESERVED WORDS (PL/SQL) ——————————— PL/SQL Reserved Words have special meaning in PL/SQL, and may not be used for identifier names (unless enclosed in „quotes“) An asterisk (*) indicates words are also SQL Reserved Words. ALL* ALTER* AND* ANY* ARRAY AS* ASC* AT AUTHID AVG BEGIN BETWEEN* BINARY_INTEGER BODY BOOLEAN BULK BY* CHAR* CHAR_BASE CHECK* DESC* DISTINCT* DO DROP* ELSE* ELSIF END EXCEPTION EXCLUSIVE* EXECUTE EXISTS* EXIT EXTENDS EXTRACT FALSE FETCH FLOAT* FOR* FORALL FROM* JAVA LEVEL* LIKE* LIMITED LOCK* LONG* LOOP MAX MIN MINUS* MINUTE MLSLABEL* MOD MODE* MONTH NATURAL NATURALN NEW NEXTVAL NOCOPY PACKAGE PARTITION PCTFREE* PLS_INTEGER POSITIVE POSITIVEN PRAGMA PRIOR* PRIVATE PROCEDURE PUBLIC* RAISE RANGE RAW* REAL RECORD REF RELEASE RETURN REVERSE SUBTYPE SUCCESSFUL* SUM SYNONYM* SYSDATE* TABLE* THEN* TIME TIMESTAMP TIMEZONE_ABBR TIMEZONE_HOUR TIMEZONE_MINUTE TIMEZONE_REGION TO* TRIGGER* TRUE TYPE UI UNION* UNIQUE* 14 CLOSE CLUSTER* COALESCE COLLECT COMMENT* COMMIT COMPRESS* CONNECT* CONSTANT CREATE* CURRENT* CURRVAL CURSOR DATE* DAY DECIMAL* DECLARE DEFAULT* FUNCTION GOTO GROUP* HAVING* HEAP HOUR IF IMMEDIATE* IN* INDEX* INDICATOR INSERT* INTEGER* INTERFACE INTERSECT* INTERVAL INTO* IS* NOT* NOWAIT* NULL* NULLIF NUMBER* NUMBER_BASE OCIROWID OF* ON* OPAQUE OPEN OPERATOR OPTION* OR* ORDER* ORGANIZATION OTHERS OUT Aby sme sa v tom zorientovali, potrebujeme urãit˘ systém. Príkazy databázového jazyka SQL môÏeme systematicky rozdeliÈ do dvoch základn˘ch skupín: ◆ Data Definition Language (DDL) ◆ Data Manipulation Language (DML) Niekedy sa k dvom najznámej‰ím skupinám priraìujú aj samostatné skupiny: ◆ Data Control Language (DCL) ◆ Transaction Control Comands (TCC) Data Definition Language (DDL) Príkazy zo skupiny DDL umoÏÀujú definovaÈ, vytváraÈ meniÈ a ru‰iÈ (odstraÀovaÈ) rôzne objekty a ‰truktúry v relaãn˘ch databázach, ako sú napríklad tabuºky, indexy, spú‰te, uloÏené procedúry a podobne. TaktieÏ môÏeme vytváraÈ, prideºovaÈ a odoberaÈ pouÏívateºské privilégiá jednotliv˘m pouÏívateºom a skupinám pouÏívateºov. Sem patria napríklad príkazy: CREATE DATABASE CREATE TABLE ALTER TABLE DROP TABLE CREATE INDEX DROP INDEX CREATE VIEW ALTER VIEW DROP VIEW 15 DROP INDEX CREATE SEQUENCE ALTER SEQUENCE DROP SEQUENCE CREATE PROCEDURE DROP PROCEDURE CREATE TRIGGER DROP TRIGGER ROLLBACK ROW* ROWID* ROWNUM* ROWTYPE SAVEPOINT SECOND SELECT* SEPERATE SET* SHARE* SMALLINT* SPACE SQL SQLCODE SQLERRM START* STDDEV UPDATE* USE USER* VALIDATE* VALUES* VARCHAR* VARCHAR2* VARIANCE VIEW* WHEN WHENEVER* WHERE* WHILE WITH* WORK WRITE YEAR ZONE Data Manipulation Language (DML) Do tejto skupiny ako vypl˘va uÏ z jej názvu patria príkazy pre manipuláciu s údajmi, teda príkaz SELECT pre v˘ber údajov z databázy a príkazy pre vkladanie, aktualizáciu, vymazávanie údajov: SELECT UPDATE INSERT DELETE Data Control Language (DCL) Skupina zahrÀuje ‰peciálne príkazy pre riadenie prevádzky a údrÏbu databázy: GRANT ALTER USER REVOKE REVOKE CREATE DROP USER USER GRANT Transaction Control Commands(TCC) Okrem dvoch najznámej‰ích skupín príkazov jazyka SQL môÏeme vyãleniÈ aj skupinu príkazov pre riadenie transakcií. Do tejto skupiny patria napríklad príkazy: SET TRANSACTION COMMIT ROLLBACK SAVEPOINT Pre zoznámenie sa s jazykom SQL implementovaného v databáze Oracle 10g a zároveÀ ako názorná ukáÏka kategorizácie príkazov do spomínan˘ch skupín poslúÏi jednoduchá databázová miniaplikácia, ktorej námetom je evidencia pracovníkov na oddeleniach firmy. Aplikácia bude vyuÏívaÈ dve jednoduché tabuºky, jednu pre zoznam oddelení: Kompletn˘ SQL kód pre vytvorenie a naplnenie tabuliek bude (v‰imnite si kategorizáciu jednotliv˘ch príkazov do skupín) – tab. str. 17. V˘pis tabuºky oddelenia ID_ODDELENIA NAZOV POSCHODIE 1 Marketing 6 Stæpec Dátov˘ typ Popis 2 Riaditelstvo 7 id_odelenia NUMBER(2) identifikátor oddelenia, primárny kºúã 3 Ekonomicke 4 4 Planovacie 3 nazov VARCHAR2(20) názov oddelenia poschodie NUMBER(2) ãíslo poschodia, na ktorom je dané oddelenie vo firemnej budove … a druhú pre zoznam pracovníkov: Stæpec Dátov˘ typ Popis id_prac NUMBER(4) Identifikaãné ãíslo pracovníka, primárny kºúã meno VARCHAR2(25) meno pracovníka funkcia VARCHAR2(20) funkcia, ktorú pracovník zastáva v rámci firmy nastupil DATE dátum, kedy pracovník do firmy nastúpil mzda NUMBER(7,2) mzda pracovníka id_oddelenia NUMBER(2) ãíslo oddelenia na ktorom pracovník pracuje – cudzí kºúã 16 ALTER USER SCOTT ACCOUNT UNLOCK; ALTER USER SCOTT IDENTIFIED BY TIGER; CONNECT SCOTT/TIGER; DCL (Data Control Language) CREATE TABLE oddelenia ( id_oddelenia NUMBER(2) PRIMARY KEY, nazov VARCHAR2(20), poschodie NUMBER(2) ); DDL (Data Definition Language) CREATE TABLE pracovnici ( id_prac NUMBER(4) PRIMARY KEY, meno VARCHAR2(25), funkcia VARCHAR2(20), nastupil DATE, mzda NUMBER(7,2), id_oddelenia NUMBER(2) ); INSERT INSERT INSERT INSERT INTO oddelenia VALUES(1, 'Marketing',6); INTO oddelenia VALUES(2, 'Riaditelstvo',7); INTO oddelenia VALUES(3, 'Ekonomicke',4); INTO oddelenia VALUES(4, 'Planovacie',3); DML (Data Manipulation Language) INSERT INTO pracovnici VALUES (1, 'Novak Juraj','riaditel', TO_DATE('01.01.1981', 'dd.mm.YYYY'), 50000, 2); INSERT INTO pracovnici VALUES (2, 'Pucek Jan','veduci marketingu', TO_DATE('01.01.1984', 'dd.mm.YYYY'), 32000, 1); INSERT INTO pracovnici VALUES (3, 'Urban Jozef','uctovnik', TO_DATE('01.01.1992', 'dd.mm.YYYY'), 15000, 3); INSERT INTO pracovnici VALUES (4, 'Kuban Peter','uctovnik', TO_DATE('01.01.1989', 'dd.mm.YYYY'), 18000, 3); INSERT INTO pracovnici VALUES (5, 'Kubikova Jana','planovac', TO_DATE('01.01.1997', 'dd.mm.YYYY'), 23000, 4); SELECT * FROM oddelenia; SELECT * FROM pracovnici; SELECT meno, funkcia, nazov, mzda FROM pracovnici, oddelenia WHERE pracovnici.id_oddelenia = oddelenia.id_oddelenia; COMMIT; User altered. Connected. Table created. Table created. 1 row created… … 17 (Transaction Control Commands – TCC ) V˘pis tabuºky pracovnici ID_PRAC MENO FUNKCIA NASTUPIL MZDA ID_ODDELENIA 1 Novak Juraj riaditel 01.01.81 50000 2 2 Pucek Jan veduci marketingu 01.01.84 32000 1 3 Urban Jozef uctovnik 01.01.92 15000 3 4 Kuban Peter uctovnik 01.01.89 18000 3 5 Kubikova Jana planovac 01.01.97 23000 4 V˘pis dotazu MENO FUNKCIA NAZOV MZDA Novak Juraj riaditel Riaditelstvo 50000 Pucek Jan veduci marketingu Marketing 32000 Urban Jozef uctovnik Ekonomicke 15000 Kuban Peter uctovnik Ekonomicke 18000 Kubikova Jana planovac Planovacie 23000 Jednotlivé skupiny príkazov a dôvod ich kategorizácie si teraz popí‰eme podrobnej‰ie. DCL (Data Control Language) Prv˘ blok príkazov obsahuje príkazy pre pripojenie sa k databázovému serveru, odomknutie a zmena hesla pouÏívateºa SCOTT (nastavili sme samozrejme opäÈ pôvodnú prihlasovaciu kombináciu testovacieho klienta SCOTT /TIGER). PostupnosÈ príkazov pre autentizáciu voãi databázovému serveru: CONNECT /AS SYSDBA ALTER USER SCOTT ACCOUNT UNLOCK; ALTER USER SCOTT IDENTIFIED BY TIGER; CONNECT SCOTT/TIGER; Ak by sme túto postupnosÈ príkazov pripomínajúcu anglické vety preloÏili do slovenãiny, dopadlo by to zhruba takto: Modifikuj pouÏívateºa s menom SCOTT, odomkni jeho úãet. Modifikuj pouÏívateºa s menom SCOTT, identifikuj ho podºa hesla TIGER. Pripoj sa ako SCOTT/TIGER. MôÏeme si v‰imnúÈ, Ïe v kaÏdej vete (v kaÏdom SQL príkaze) je minimálne jedno sloveso v rozkazovacom spôsobe. Veì preto sa to aj volá príkaz. DDL (Data Definition Language) Nasledujú príkazy pre vytvorenie databázov˘ch tabuliek oddelenia a pracovnici. PostupnosÈ príkazov pre vytvorenie dvoch databázov˘ch tabuliek: CREATE TABLE oddelenia ( id_oddelenia NUMBER(2) PRIMARY KEY, nazov VARCHAR2(20), poschodie NUMBER(2) ); CREATE TABLE pracovnici ( id_prac NUMBER(4) PRIMARY KEY, meno VARCHAR2(25), funkcia VARCHAR2(20), nastupil DATE, mzda NUMBER(7,2), id_oddelenia NUMBER(2) ); V t˘chto príkazoch by sme mohli prekladaÈ snáì len struãn˘ príkaz – CREATE TABLE vytvor tabuºku. Predpis presne definuje, koºko stæpcov a akého dátového typu má kaÏdá tabuºka. DML (Data Manipulation Language) Zostali nám dva bloky príkazov, pomocou ktor˘ch naplníme postupne obidve tabuºky údajmi. 18 INSERT INTO oddelenia VALUES(1, 'Marketing',6); INSERT INTO oddelenia VALUES(2, 'Riaditelstvo',7); INSERT INTO oddelenia VALUES(3, 'Ekonomicke',4); INSERT INTO oddelenia VALUES(4, 'Planovacie',3); INSERT INTO pracovnici VALUES (1, 'Novak Juraj','riaditel', TO_DATE('01.01.1981', 'dd.mm.YYYY'), 50000, 2); INSERT INTO pracovnici VALUES (2, 'Pucek Jan','veduci marketingu', TO_DATE('01.01.1984', 'dd.mm.YYYY'), 32000, 1); INSERT INTO pracovnici VALUES (3, 'Urban Jozef','uctovnik', TO_DATE('01.01.1992', 'dd.mm.YYYY'), 15000, 3); INSERT INTO pracovnici VALUES (4, 'Kuban Peter','uctovnik', TO_DATE('01.01.1989', 'dd.mm.YYYY'), 18000, 3); INSERT INTO pracovnici VALUES (5, 'Kubikova Jana','planovac', TO_DATE('01.01.1997', 'dd.mm.YYYY'), 23000, 4); Návrhovú ‰truktúru obidvoch tabuliek môÏeme zobraziÈ aj editovaÈ pomocou nástroje OEM. V zloÏke Administration pouÏijeme odkaz na funkciu Tables (v skupine Schema) a vo vybranej schéme (v na‰om prípade v schéme SCOTT) následne vyberieme tabuºku, ktorá je predmetom ná‰ho záujmu. Preklad kaÏdého riadku je veºmi jednoduch˘: VloÏ do (tabuºky) xxx (záznam), ktor˘ bude obsahovaÈ poloÏky yyy. OEM – návrhová ‰truktúra tabuºky Oddelenia Nasledujú príkazy pre v˘ber poÏadovanej mnoÏiny údajov, v na‰om prípade pre úãely v˘pisu. SELECT * FROM oddelenia; SELECT * FROM pracovnici; SELECT meno, funkcia, nazov, mzda FROM pracovnici, oddelenia WHERE pracovnici.id_oddelenia = oddelenia.id_oddelenia; Doslovn˘ preklad prv˘ch dvoch príkazov nespôsobí Ïiadne problémy. Vyber v‰etko z tabuºky oddelenia. Vyber v‰etko z tabuºky pracovnici. V treÈom prípade sa kombinovan˘m dotazom p˘tame na obsah dvoch tabuliek: OEM – Návrhová ‰truktúra tabuºky Pracovníci Vyber poloÏky meno, funkcia, nazov a mzda z tabuliek pracovníci a oddelnia, tak, aby platila podmienka: Stæpec id_oddelenia tabuºky pracovnici sa rovná stæpcu id_oddelenia tabuºky oddelenia. 19 Tabuºky cviãn˘ch údajov dodávané s Oracle 10g V˘ber námetu cviãnej miniaplikácie nebol náhodn˘. Motív pracovníci – poboãky – v˘roba - ekonómia firmy sa veºmi ãasto vyskytuje v cviãn˘ch tabuºkách, ktoré sa nain‰talujú s databázov˘m serverom. Schéma SCOTT obsahuje tri cviãné tabuºky ◆ EMP tabuºka obsahuje základné údaje o zamestnancoch firmy. ◆ DEPT tabuºka obsahuje informácie o oddeleniach firmy. ◆ SALGRADE tabuºka obsahuje informácie povedané na‰ou terminológiou o platov˘ch triedach. Z toho môÏeme logicky odvodiÈ, Ïe tabuºka EMP bola vytvorená pomocou príkazu: CREATE TABLE emp ( empno NUMBER(4) NOT NULL, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2) ); Tabuºka implicitne obsahuje tieto cviãné údaje – str. 21 dole. Tabuºka DEPT bola vytvorená pomocou príkazu: CREATE TABLE dept ( deptno NUMBER(2) NOT NULL, dname VARCHAR2(14), loc VARCHAR2(13) ); … a obsahuje tieto cviãné údaje: Cviãné tabuºky EMP, DEPT a SALGRADE Tabuºka EMP po nain‰talovaní obsahuje záznamy o 14 zamestnancoch firmy. Má jednoduchú ‰truktúru, ktorú môÏeme zobraziÈ príkazom Describe: DEPTNO DNAME LOC 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON DESCRIBE emp; Name Null? Type EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) Tabuºka SALGRADE obsahuje informácie o mzdách pre urãité mzdové zaradenie. Je to ak˘si ekvivalent platov˘ch tried, ktoré sa u nás vyuÏívajú napríklad v ‰tátnej správe. Na ostatné dve tabuºky priamu väzbu nemá, poslúÏi nám napríklad pri otázke, do akej platovej triedy je zaraden˘ príslu‰n˘ pracovník. Tabuºka SALGRADE bola vytvorená pomocou príkazu: CREATE TABLE salgrade ( grade NUMBER, losal NUMBER, 20 hisal NUMBER(13) ); notu nemuseli zadaÈ pri zostavovaní SQL dotazu v etape jeho vytvárania, ale aÏ tesne pred jeho vykonaním. Rie‰ením je pouÏitie substituãnej premennej. Ak sa pri interpretácii SQL dotazu narazí na substituãnú premennú, konzolová aplikácia iSQL*Plus vyzve pouÏívateºa, aby zadal jej hodnotu. a obsahuje tieto cviãné údaje: GRADE LOSAL HISAL 1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999 SELECT * FROM emp WHERE sal> &min Interaktívne v˘stupy V niektor˘ch prípadoch je v˘hodné keby sme hod- MôÏeme pouÏiÈ dva typy substituãn˘ch premenn˘ch, ktoré sa odli‰ujú dobou svojej Ïivotnosti. Navonok sa lí‰ia sa poãtom znakov & (ampersand) v názve premennej. Hodnota premennej, ktorá má v názve jeden ampersand, sa zadáva pri kaÏdom vykonávaní príkazu. Hodnota premennej, ktorá má v názve dva znaky ampersand, sa zadáva iba raz. iSQL*Plus – v˘pis v˘sledkov dopytu iSQL*Plus – vyÏiadanie parametra EMPNO ENAME 7369 SMITH CLERK 7902 17-DEC-80 800 7499 ALLEN SALESMAN 7698 20-FEB-81 7521 WARD SALESMAN 7698 7566 JONES MANAGER 7839 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 21 JOB MGR HIREDATE SAL COMM DEPTNO 1600 300 30 22-FEB-81 1250 500 02-APR-81 2975 20 30 20 1400 30 Jazyk SQL je vo svojej podstate neprocedurálnym jazykom. Procedurálna nadstavba SQL z dielne Oracle má názov PL/SQL. (Transaction Processing Language). PL/SQL plne podporuje procedúry a vetvenie toku programu pomocou podmienok a cyklov a umoÏÀuje deklarovaÈ kon‰tanty premenné a kurzory vrátane dynamickej deklarácie premenn˘ch. Jazyk PL/SQL je modulárny a blokov˘. Základnou entitou programu je blok. Typická ‰truktúra bloku pozostáva z troch sekcií: ◆ deklaraãná sekcia ◆ v˘konná sekcia ◆ sekcia pre spracovanie v˘nimiek Deklaraãná sekcia obsahuje deklarácie premenn˘ch, kon‰tánt, kurzorov a podobne. V˘konná sekcia obsahuje funkãnú logiku, alebo inak povedané aplikaãné jadro bloku. Potenciálne chybové stavy je moÏné, ba priam nutné o‰etriÈ v sekcii pre spracovanie v˘nimiek. Schematicky by sme ‰truktúru bloku vyjadrili nasledovne: Povinná je len v˘konná sekcia (deklaraãná sekcia a sekcia pre o‰etrenie v˘nimiek sú voliteºné), preto minimálna funkãná schéma bloku v jazyku PL/SQL je znázornená na ìal‰ej schéme: BEGIN – v˘konná sekcia … END; Premenné, textové v˘pisy Pre ladenie blokov programu v jazyku PL/SQL budeme ãasto potrebovaÈ v˘pis textu do v˘stupného okna konzolovej aplikácie, napríklad pre v˘pis obsahu premennej a podobne. Pre tento úãel slúÏi ‰tandardn˘ balíãek DBMS_OUTPUT, konkrétne jeho procedúra PUT_LINE. Textov˘ v˘pis do okna konzolovej aplikácie je DECLARE – deklaraãná sekcia … BEGIN – v˘konná sekcia … EXCEPTION – sekcia pre o‰etrenie v˘nimiek … END; iSQL*Plus – v˘pis textu pomocou bloku v jazyku PL/SQL 22 potrebné najskôr aktivovaÈ a prípadne nastaviÈ parametre pre v˘pisy. V˘pis aktivujeme pomocou príkazu SET SERVEROUT ON Operátory Podobne ako v SQL príkazoch aj v jazyku PL/SQL pouÏívame operátory pre zápis matematick˘ch a logick˘ch aplikácií. Prehºad operátorov PL/SQL podºa poradia ich priority je v tabuºke: Kód bloku pre v˘pis textu bude: SET SERVEROUT ON SIZE 10000 BEGIN DBMS_OUTPUT.PUT_LINE('Hello World'); END; Podobne si môÏeme nechaÈ vypísaÈ obsah premennej. Premenné v jazyku PL/SQL ale musíme pred ich prv˘m pouÏitím deklarovaÈ. Pre inicializáciu premennej (priradenie hodnoty) môÏeme pouÏiÈ operátor priradenia = alebo pomocou kºúãového slova DEFAULT. SET SERVEROUT ON SIZE 10000 DECLARE v_pocet NUMBER(3) NOT NULL DEFAULT 100; BEGIN DBMS_OUTPUT.PUT_LINE('v_pocet = '|| v_pocet); END; Ak chceme vo v˘pise kombinovaÈ statick˘ text a obsah premennej, alebo obsah viacer˘ch premenn˘ch, pouÏijeme operátor zreÈazenia ||. Operátor Operácia ** umocÀovanie +, - zmena znamienka *, / násobenie +, -, || sãítanie, odãítanie, násobenie =, <, >, <=, >=, <>, !=, ~=, ^=, IS NULL, LIKE, BETWEEN, IN porovnávanie NOT logická negácia AND logick˘ súãin OR logick˘ súãet Práca s údajmi v tabuºkách pomocou jazyka PL/SQL Databázov˘ jazyk je primárne urãen˘ pre prácu s údajmi v databázov˘ch tabuºkách. Pre v˘ber údajov z databázov˘ch tabuliek a ich priradenie do premenn˘ch slúÏi príkaz SELECT s klauzulou INTO, SELECT [*] [zoznam_poloÏiek_v˘stupnej_zostavy] INTO [zoznam_premenn˘ch alebo meno zoznamu] FROM meno_tabuºky WHERE podmienka_v˘beru Podmienkou je, aby bol vráten˘ vÏdy len jeden riadok. Napríklad ak chceme priradiÈ hodnoty z tabuºky SCOTT.EMP do premenn˘ch v_meno a v_funkcia: iSQL*Plus – v˘pis obsahu premennej 23 SET SERVEROUT ON SIZE 10000 DECLARE v_meno emp.ename%TYPE; v_funkcia emp.job%TYPE; BEGIN SELECT ename, job INTO v_meno, v_funkcia FROM emp WHERE empno = 7788; —vypis hodnot premennych DBMS_OUTPUT.PUT_LINE('v_meno = '|| v_meno); DBMS_OUTPUT.PUT_LINE('v_funkcia = '|| v_funkcia); END; Riadenie toku programu Pre riadenie toku programu pouÏívame rôzne vetvenie pomocou podmienok a cyklov. V struãnosti ukáÏme niektoré kon‰trukcie: IF – THEN – END IF Najjednoduch‰iu podmienku môÏeme zapísaÈ v tvare: IF podmienka THEN postupnosÈ_príkazov END IF; napríklad iSQL*Plus – v˘pis obsahu premennej získanej z databázovej tabuºky Ak by sme chceli o‰etriÈ potenciálne v˘nimky (v tomto prípade vedie k chybe, ak sa záznam buì nenájde, alebo podmienke vyhovuje viac záznamov), pouÏijeme kód roz‰íren˘ o sekciu EXCEPTION, kde o‰etríme potenciálne chybové stavy NO_DATA_FOUND a TOO_MANY_ROWS. SET SERVEROUT ON SIZE 10000 DECLARE v_meno emp.ename%TYPE; v_funkcia emp.job%TYPE; BEGIN SELECT ename, job INTO v_meno, v_funkcia FROM emp WHERE empno = 7788; —vypis hodnot premennych DBMS_OUTPUT.PUT_LINE('v_meno = '|| v_meno); DBMS_OUTPUT.PUT_LINE('v_funkcia = '|| v_funkcia); EXCEPTION —osetrenie vynimky NO_DATA_FOUND WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Udaj sme nenasli'); —osetrenie vynimky TOO_MANY_ROWS WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE('Prilis mnoho udajov'); END; SET SERVEROUT ON SIZE 10000 DECLARE v_vyska NUMBER(3) := 162; BEGIN IF v_vyska < 170 THEN DBMS_OUTPUT.PUT_LINE('Ste prilis nizka na povolanie modelky.'); END IF; END; IF – THEN – ELSE - END IF âasto je potrebné vykonaÈ nejaké príkazy, alebo postupnosti príkazov v obidvoch vetvách, to jest ak podmienka je splnená, aj ak splnená nie je. IF podmienka THEN postupnosÈ_príkazov1 ELSE postupnosÈ_príkazov2 END IF; V prípade splnenia podmienky sa vykoná postupnosÈ_príkazov1, v opaãnom prípade sa vykoná postupnosÈ_príkazov2. Cykly Jazyk PL/SQL umoÏÀuje vytváraÈ tri druhy cyklov ◆ jednoduch˘ cyklus LOOP bez podmienky, ktor˘ je moÏné ukonãiÈ príkazom EXIT ◆ cyklus FOR na princípe poãítadla ◆ cyklus WHILE s podmienkou na zaãiatku cyklu Okrem vyhºadávania záznamov môÏeme pomocou jazyka PL/SQL s údajmi aj manipulovaÈ. Z podmnoÏiny príkazov DML môÏeme vyuÏiÈ príkazy INSERT, UPDATE a DELETE. 24 EXIT; END IF; END LOOP; dbms_output.put_line('v_citac = '||v_citac); END; Jednoduch˘ cyklus Tomuto cyklu sa hovorí aj nekoneãn˘, pretoÏe sekvencia príkazov v Àom zapísaná sa bude opakovaÈ dovtedy, k˘m z neho nevyskoãíme príkazom EXIT. PouÏijeme kºúãové slovo LOOP. postupnost_prikazov musí obsahovaÈ príkaz EXIT pre vyskoãenie z tela cyklu, alebo podmienku za kºúãov˘m slovom WHEN Cyklus typu FOR funguje na princípe svojho vlastného poãítadla. LOOP postupnost_prikazov END LOOP; FOR poãítadlo IN [REVERSE] najniωia_hodnota..najvy‰‰ia_hodnota LOOP postupnosÈ_príkazov END LOOP; Napríklad napríklad SET SERVEROUT ON SIZE 10000 DECLARE v_citac NUMBER(3) := 0; BEGIN LOOP v_citac := v_citac +1; IF v_citac >= 20 THEN SET SERVEROUT ON SIZE 1000 BEGIN FOR v_citac IN 1..5 LOOP dbms_output.put_line('v_citac = '||v_citac); END LOOP; END; T ¯ D E N Í K P R O I T P R O F E S I O N Á LY Vydává: IDG Czech, a. s., Seydlerova 2451/11, 158 00 Praha 5 Tel. ústfiedna s aut. provolbou: 257 088 + linka; fax: 236 520 812 Recepce: 257 088 111 V˘konn˘ fieditel: Doc. RNDr. Ivan Novotn˘, CSc. ·éfredaktor: Mgr. Karel Taschner (kat) Publisher: Ing. Jaroslav Hrouda (Hr) Executive Managing Editor: Mgr. Martin FaÈun (Maf) Tajemnice redakce: RÛÏena Holíková, tel. 257 088 143 Vedoucí inzertního odd.: Ing. Jitka Vyhlídková, tel. 257 088 181 Vedoucí projektu: Ing. Pavel Louda, tel. 257 088 138 Autor: ªuboslav Lacko Jazyková úprava: Grafická úprava: Adresa redakce: Internet: Zlom a pre-press: Tisk: Pfiedplatné a reklamace: Katefiina ·vejdová Ale‰ Mlejnsk˘ CW, Seydlerova 2451/11, 158 00 Praha 5 [email protected] TypoText, s. r. o., Praha âeská Unigrafie, a. s., Praha IDG Czech, a. s., Seydlerova 2451/11, 158 00 Praha 5, tel. 257 088 162, fax 235 520 812; e-mail [email protected] Doruãuje âeská po‰ta, s. p., v systému D + 1 Pfiedplatné pro Slovensko: Magnet-Press Slovakia, s. r. o., Teslova 12, P.O.BOX 169, 830 00 Bratislava 3, tel./fax: (00421-2) 44 45 45 59
Podobné dokumenty
Kreativita Originalita Nové prístupy Garancia kvality
Hromadná doprava v regiónoch formou integrovan˘ch dopravn˘ch systémov zohráva dôleÏitú úlohu pri rie‰ení zloÏit˘ch dopravn˘ch situácií, hlavne v centrálnych oblastiach miest. V mnoh˘ch mestách sa t...
VíceEmbedded SQL v C/C++ úvod
Tento referát je o Embedded SQL pro C/C++ SQL lze ale na Oracle začlenovat i do jiných jazyků (např. Cobol, Fortran)
Vícemanu.l Mafia
© 2002 Mafia, Illusion Softworks a.s., Logo Illusion Softworks a Illusion Softworks jsou obchodní známky Illusion Softworks a.s. Gathering of Developers, logo Gathering of Developers, Take 2 Intera...
Více53_3 FANTOM-navod A4.qxd
Okrem Ïetónov, ktoré pouÏívajú obidve strany, sa vo hre objavia Ïetóny, ktor˘mi disponuje v˘hradne Fantóm. Sú to Ïetóny s lodí, ktoré Fantómovi umoÏÀujú v kritickej situácii únik cez rieku po modre...
Více-manual Vietcong
Konfigurace/dialog nastavení Tato obrazovka vám dovolí nastavit v‰echny hodnoty tak, aby hra bûÏela na va‰em systému co nejlépe. V horní ãásti najdete typ své fické karty, hned pod ním její implici...
VíceFirebird™ Verze 1.5 Release Notes v.1.5
Přehled doporučené dokumentace naleznete v sekci Dokumentace.
VíceDATABÁZOVÝ DESIGN
Slova Data, Informace se často používají jako synonyma. Nicméně, mají různé významy. Data: materiál, z kterého vyvozujeme závěry. Fakta, z nichž dedukujeme nová fakta. Informace: znalosti, intelige...
VícePříklad
Cluster bude klíčován podle sloupce username typu VARCHAR2(30) To znamená, že veškerá data v libovolné tabulce budou fyzicky uspořádána podle hodnoty
Vícedatabázový server firebird instalace,konfigurace
FireBird ( dále jen „FB“) vznikl v polovině roku 2000 na základě zdrojových textů databázového serveru InterBase, jehož je přímým nástupcem a jehož zdrojové texty uvolnila společnost Borland k voln...
Více