You are on page 1of 149
Oracle tatwiejszy niz przypuszczasz hitp://www.helion. Wydanie II Oracle fatwiejszy niz przypuszczasz Ksiazka jest drugim, uaktualnionym wydaniem przewodnika, ktory wprowadzi Cie — bez streséw i kompleksow — w ,swiat wielkich baz danych’. Pozwoli rozejrzeé sie w nim i docenié jego zalety oraz odpowiedzieé na pytania © Czy warto rozstaé sie z ulubionym DBF-em? © Czy staé mnie na cos wiece| niz MS Access? @ Amoze by cos z ,wyzszej potki"? Wystarczy jeden PC z Windows NT lub Linuksem, aby znalezé sig wSréd specjalistw. Tylko tyle potrzeba, by z bliska przyjrze¢ sie profesjonainej, nowoczesnej bazie danych 3erstrong Jadwiga Gnybek Spis tresci Wstep . Rozdziat 1. Rozdziat 2. Architektura serwera bazy danych Oracle... erwer Oracle’a Struktura plikow serwera Oracle’a Instaneja Oracle’a.. . Co to jest instancja Oracle’a? Do czego stuzy instancja Oracle’a?, Procesy drugoplanowe Struktura bazy danych Oracle Procesy drugoplanowe DBWR (Data Base Writer)... LGWR (Log Writer)... PMON (Process Monitor) SMON (System Monitor) Pozostale procesy drugoplanowe Struktura Obszaru globalnego systemu. Bufory bazy danych (DATABASE BUFFER CACHE) 24 Bufory dziennika powtérzeh (REDO LOG BUFFER) ...ssnsesennsneoe 24 Obszar dzielony (SHARED POOL). 24 Pliki dziennika powtérze (REDO LOG) osintinciitecssosieinstecisicnse tO Jeszeze raz.o strukturze Oracle 26 Baza danych Oracle od Srodka.. Gidzie jest oracle’owy DBF? Co to jest przestrzen tablic?. systemowa przestrzet tablic Przestrzenie tablic a pliki bazy danych 31 Przestrzeni¢ tablic a obiekty baZY...unmeeesnse zs 32 Praestrzenie tablic (TABLESPACE) .rossennnnnninnnnanennnni 33 Tworzenie przestrzeni tablic... = 33 Powigkszanie i modyfikacja przestrzeni tablic. 34 Zmiana statusu przestrzeni tablic x retrartseetresse oe 36 Usuwanie przestrzeni tablic 36 Schemat (SCHEMA) ...sssssennntseen 2. " z 7 Obiekty schematu. 37 Tablice (TABLE) 38 Tworzenie tablic. 40 Pracgladanie struktury tablic.. 2 Modyfikacja tablic 43 4 Oracle tatwiejszy niz przypuszezasz Wpisywanie danych do tabli snc 44 Usuwanie wybranych wierszy tablicy . 46 Usuwanie wszystkich wierszy tablicy.. 46 Zmiana nazwy tablicy... 48 Usuwanie tablic... 49 Perspektywy (VIEW) 49 Tworzenie perspektyw 50 Usuwanie perspektyw 52 Indeksy (INDEX) 53 Struktura indeksu. 53 Rodzaje indeksdw.... on 55 Zasady korzystania 2 indeksow. 56 ‘Tworzenie indeks6w... 56 Usuwanie indeksow .. 37 Segmenty wycofania (ROLLBACK SEGMENTS)..... 37 ‘Tworzenie segment wycofania.... 58 Usuwanie segmentéw wycofania 59 Praywileje bazodanowe (PRIVILEGES) 60. Nadawanie przywilejow... sae 60. Odbicranie przywilciow 683 Role bazodanowe (ROLE). 64 ‘Tworzenic rél... . 65 Nadawanie i odbieranie rol tizytkownikom. 65 Usuwanie rl... - 66 Standardowe role bazy danych Oracle 66 Uzytkownicy bazy danych Oracle (USERS) is 67 Domysina przestrzef tablic (TABLESPACE DEFAULT) 67 ‘Tymezasowa przestrzeti tablic (TEMPORARY TABLESPACE)... 68. Ograniezenia zasobéw w przestrzeni tablic (TABLESPACE QUOTA) 68 Ograniczenia zasobow systemowych (SYSTEM RESOURCE LIMIT) 68 Tworzenie uaytkownikow. : seeiteuuienca 68 Modyfikacja utytkownikOW..... 69 Usuwanic uzytkownikow. 70 Procedury bazodanowe 70 Procedury i wyzwalacze (PROCEDURE i TRIGER) n PL/SQL. 1 Rozdziat 3. Jak dziata baza danych Oracle?......... 75 Otwieranie i zamykanie bazy.. 15 CONNECT INTERNAL. 76 Start 16 Stop 7 Otwieranie i zamykanie bazy dla zaawansowanych. 78 Tworzenie bazy danych pod Uniksem... 0 Krok 1 80 Krok 2 80 Krok3 81 Krok4 82 Krok 5... 82 Krok 6 33 Tworzenie nowej bazy danych pod Windows NT... 83 Stownik bazy danych (DATA DICTIONARY). 89 Zatwierdzanic i wycofywanie transakeji (COMMIT i ROLLBACK) 90 Przyezyny wystepowania awarii baz danych. 93 Spis treéci Rozdziat 4. Rozdziat 5. Rozdziat 6. Dodatki.. Dodatek A Dodatek B Dodatek C Dodatek D Bibliografia.... Zniszczenie danych przez u2ytkownike. 8 Blad zapytania SQL. ee 94 Awaria procesu uzytkownika.. oes 4 Awaria instangji ws 2 95 Zniszezenie plik6w dyskowych bazy 1 hee . 95 ‘Tworzenie kopii zapasowych (BACKUP) i odtwarzanie bazy danych (RECOVERY).....96 Kopia systemowa bez archiwizacji 96 Odtwarzanie bazy z kopii systemowej bez archiwizacji 97 Archiwizacja plik6w dziennika powtdrzet . - 98 Kopia systemowa z archiwizacja ......... 99 Odtwarzanie bazy z kopii systemowe) z achiwizag 100 Kopia bazy wykonana za pomoca programu EXPORT...... 100 Odtwarzanie bazy z plikéw eksportu “101 Operacje na danych bazy ssc. 101 Odezyt danych z bazy 101 Zmiana danych w bazie..... 102 Lapis Qa fCh 6 B82) ic ascnin eam rsianintinamanant 103 Narzedzia administratora bazy danych Oracle’a 2105, Oracle Enterprise Manager 105 Konfiguracja OEM 106 Pierwsze uruchomienie OEM... 108 Praca z OEM we DBA Studio 14 Instalacja serwera Oracl 7 Instalacja serwera Oracle’a, 17 Instalacja pod systemem Unix. sites TB Instalacja serwera Oracle’a pod Windows NT............. 122 SOL*Net . 127 Oracle Net8 Easy Config. 129 ‘Net* Assistant. 132 ‘Skrypty SQL-a Perspektywy stownika bazy danych. 141 143 Tablice dynamiczne. a 147 Zestawienie przywilejow systemouyeh a 149 Parametry startowe . 155 ca 159 Wstep Ksiqzka ta jest drugim — uaktualnionym wydaniem przewodnika, ktory wprowadzi Cig bez streséw i kompleks6w w ,,Swiat wielkich baz danych”. Pozwoli rozejrzeé sig w nim i docenié jego zalety oraz odpowiedzieé sobie na pytania: # Czy warto rozstaé sig z ulubionym DBF-em? + A moze staé mnie na cos wigee} niz Access? # A moze by cos z ,.wy2szej pétki"? Wystarezy jeden PC z Windows NT lub z Linuksem i wehodzimy w swiat wielkich baz danych. Tylko tyle potrzeba nam, aby z bliska przyjrze¢ sig profesjonalnej, nowo- czesnej bazie danych. Oracle od lat uznawany jest za jeden z najlepszych i najpopulamiejszych systemow relacyjnych baz danych, dostepnych na swiatowym rynku profesjonalnego oprogramo- wania. Poznanie jego podstaw moze staé sig kiuczem do sukcesu zawodowego, jako te bazy Oracle’a robiq w ostatnich czasach na polskim rynku oszatamiajacq kariere. Spotkaé je mozemy w wielu systemach pracujacych na potrzeby administracji publicz- nej, telefonii komérkowej, wielkich systeméw zarzadzania przedsigbiorstwami, a lada chwila zmonopolizuja rynek ustug internetowych e-business i e-commerce, Warto wiec poznaé Oracle! Ksiqzka zawiera prosty i zwigzly opis podstawowej wiedzy i czynnosci, jakie powi- nien opanowa€ przyszly Oracle DBA. Wiedza ta przyda sie rowniez wszystkim tym, ktérzy cheieliby, piszac swoje aplikacje, polaczyé je z baza Oracle’a. Rozdziat 1. Architektura serwera bazy danych Oracle Co to jest serwer Oracle’a? Aby zrozumieé i polubié baze danych Oracle, trzeba chotby pobieznie poznaé jej bu- dowe. Na poczatek zajrzymy do srodka serwera Oracle’a, poznamy pliki tworzace baze danych oraz srodowisko, w ktérym baza pracuje ~ serwer, czyli platforme systemowg. W tym rozdziale szczegélnie wiele miejsca poswiecimy budowie serwera Oracle’a. Serwer Oracle’a jest tworem na tyle profesjonalnym, 2e nieco nieprzystepnym na pierwszy rzut oka. Nie zniechecajcie sig jednak zbyt latwo. Jesli chcecie mieé nowo- czesng relacyjna baze danych — powoli krok po kroku postarajcie sie pozna¢, zrozu- mieé, a moze nawet polubié Oracle Server. Jesli pracowaligcie kiedy$ z bazami typu . DBF, sprawa wygladala dosé prosto. Z jed- nj strony znajduja sic plik lub pliki z danymi, z drugiej za’ program napisany na przyktad w jezyku Clipper. Pliki bazy danych typu .DBF obejrzeé mozna przy uzyciu wielu programéw i narzedzi. Jest ona jasna i przejrzysta, do niej wiec wiasnie odwo- tywae sig bede jako do przyktadu bazy prostej, popularne} i powszechnie znane} Rozpocznijmy od kilku informacji na temat glownych cech i funkcjonalnosci bazy danych Oracle. Pierwsze pytanie, na jakie musimy tu odpowiedzie¢ to Po co nam serwer bazy danych? Wprowadzenie pojecia serweréw baz danych wiaze sig z coraz to wiekszymi wyma- ganiami uzytkownikéw w stosunku do programéw obstugujacych dane skladowane w systemach informatycznych. Uzytkownik pragnie skladowaé coraz to wigce} da- nych i mieé do nich coraz to szybszy dostep. Z drugiej strony, sktadowanie tak du- zych ilosci danych wymaga funkcjonalnych, bezpiecznych i efektywnych sposobow zarzadzania tymi danymi oraz. zabezpieczenia sposobu kontroli dostepu i spéjnosci danych wykorzystywanych jednoczesnie przez wielu uzytkownikow. Wszystkie te zalety posiada obiektowo-relacyjna baza danych Oracle. 10 Oracle tatwiejszy nié przypuszezasz Oprogramowanie opatrzone wspélna nazwa serwera bazy danych zapewnia wydajne i efektywne rozwiazania w zakresie: Realizacji pracy w Srodowisku klient-serwer (przetwarzanie rozproszone) Skladowania i zarzadzania duzymi bazami danych Obstugi wielu jednoczesnych uzytkownikow Mozliwosci przenoszenia danych Zapewniania duzej dostepnosei danych Zapewniania mozliwosci kontroli dostepu do danych Otwarcia na standardy przemystowe Wymuszania spéjnogci danych Aby w petni wykorzystaé mozliwosci komputerow i sieci komputerowych, Oracle umozliwia podziat funkejonalny przetwarzania danych na czesé kliencka i serwerowa. Komputer-serwer, na ktérym uruchomione jest oprogramowanie zarzadzajace danymi, zapewnia pein obstuge sktadowanych danych w czasie, gdy na komputerze-kliencie uruchomione sa aplikacje interpretujace pozyskane z bazy dane. Oracle obstuguje bazy danych osiagajace rozmiary terabajtéw. Aby zapewnié zadawalajaca wydajnosé pracy z tak duzymi zbiorami danych, oprogramowanie serwera zapewnia mozliwosé peinej kontroli nad procesem ich sktadowania. Serwer Oracle umozliwia jednoczesna prace wielu uzytkownikéw bazy, korzystajqcych z ré2nych aplikacji operujacych na tym samym zbiorze danych. Oprogramowanie Oracle’a pracuje na wielu typach komputerdw i pod wieloma systemami operacyjnym. W wielu produkeyjnych instalacjach Oracle’a pracuje ' on 24 godziny na doby, bez koniecznosci wprowadzania przerw w pracy bazy zwigzanych z czynnosciami takimi jak wykonywanie kopii zapasowych ezy usuwanie drobnych uszkodzeh systemu. Serwer Oracle’a umodliwia selektywna kontrole dostepnosei danych Oracle stara sig dostosowaé do przemystowych standardéw obowiazujacych w dziedzinie dostepu do danych, system6w operacyjnych, interfejsow uzytkownika oraz komunikacji sieciowej. W celu ulatwienia zarzqdzania serwerami pracujacymi w heterogenicznym srodowisku, z jednej konsoli administratora systemu zaimplementowany zostal protok6! Simple Network Management Protocol (SNMP). Serwer Oracle’a wymusza spéjnos¢ danych poprzez zbidr regut zdefiniowanych w bazie okreslajqcych zasady korzystania z danych przez wielu uzytkownikow jednoczesnie. Rozwiqzanie to redukuje koszty utrzymania spéjnosci danych podezas budowy aplikacji opartych na bazie Oracle Rozdziat 1. + Architektura serwera bazy danych Oracle a Motliwosci Oprogramowanie Oracle’a pracuje pod wieloma przenoszenia systemami operacyjnymi. Aplikacje budowane i zgodnosci narzedziami Oracle’a sq zgodne z wieloma oprogramowania przemystowymi standardami, moga byt przenoszone pomigdzy systemami operacyjnymi bez koniecznosci wprowadzania zasadniczych zamian programowych, Realizagji W Srodowisku rozproszonego przetwarzania sieciowego przetwarzania Oracle umozliwia taczenie danych, skladowanych rozproszonego fizycanie na réznych komputerach, w jedna pod wagledem logicznym baz danych. Taki system rozproszony, z punktu widzenia uzytkownika, niczym nie rézni sig od nierozproszonej Bazy danych. Moaliwy jest rownie2 transparentny dla u2ytkownika dostep do innych niz, Oracle érédet danych. Replikacji danych Oprogramowanie Oracle’a umodliwia wiele rodzajéw replikacji wybranych obiektéw lub zbioréw danych do innych baz danych znajdujacych sie w obrebie jedne} sieci komputerowej. Tyle oficjaina lista zalet. Przyjrzyjmy sig teraz z bliska glownym elementom archi- tektury serwerow baz danych Oracle. Serwer Oracle’a Serwer Oracle’a to obiektowo-relacyjny system zarzadzania baza danych. Sklada sie on z dwéch podstawowych skladnikow: # bazy danych Oracle; © instancji Oracle’a. W dalszej czeSci ksiazki sprébujemy zdefiniowa€ relacje pomiedzy baza a instancja Oracle’a. Structured Query Language (SQL) SQL jest jezykiem programowania umozliwiajacym definiowanie obiektw bazy i za- rzadzanie skadowanymi w niej danymi, SQL-owe bazy danych sq bazami relacyjny- mi, oznacza to, 2e sktadowaniem danych w bazie rzadzi zbiér prostych relacji, Przez baze danych rozumiemy tutaj zbiér jednej lub wielu tablic. Kazda z tablic sklada sig z jednej lub wielu kolumn i przechowuje jeden lub wiele wierszy. Polecenia definiujace obiekty w bazie naleza do grupy poleceh DDL (Data Definition Language). Sq to polecenia typu CREATE, ALTER i DROP. Inng grupe stanowia polece- nia operujace na danych, czyli dokonujace operacji SELECT, INSERT, UPDATE. Sa to polecenia z grupy DML (Data Manipulation Language). 42 Oracle tatwiejszy nit przypuszezasz Poza komendami SQL-a, z serwerem Oracle’a mozna sig porozumiewaé, rownie? ko- rzystajac z polecen jezyka proceduralnego zwanego PL/SQL. PL/SQL to polaczenie SQL-az elementami jezyka proceduralnego. Struktura bazy danych W bazach danych Oracle wyr62nié mozemy strukture fizyczna i logiczna. Pontewaz struktury te sq od siebie niezalegne, mozemy na przyklad zarzadzaé zagadnieniami zwiazanymi z fizycenym skladowaniem danych, bez ingerowania w logiczng struktu- re bazy. Fizyezna struktura bazy Fizyezna struktura bazy danych Oracle zdeterminowana jest przez system operacyjny, na ktérym dziata serwer. Mimo to kazda baza sktada sig z trzech typow plikéw: plikbw danych (datafiles); + plikow dziennika powtorzea (redo log files); + plik6w kontrolnych (control files). Logiczna struktura bazy Logiczna struktura bazy danych Oracle zdeterminowana jest przez: # ilosé przestrzeni tabel (tablespaces); # definicje schematéw i nalezacych do nich obiektéw bazodanowych. Logiezna struktura sktadowania danych w bazie, zawierajaca takie elementy jak: prze- strzenie tabel, segmenty i ekstenty (tablespaces, segments, extents), okresla sposob wykorzystania fizyczne} przestrzeni zajmowanej przez baze. Schematy, obiekty i re- lacje pomigdzy nimi to elementy logicznej relacyjnej struktury bazy. Narzedzia bazodanowe Serwery Oracle’a wyposazone sq w trzy narzedzia stuzace do przenoszenia danych pomigdzy bazami. Sa to: 4 Export, Import, + SQL*Loader. Export Export jest najprostszym narzedziem stuzacym do przenoszenia danych pomigdzy ba- zami, bez wzgledu na réznice w platformach sprzgtowych oraz konfiguracjach opro- gramowania, Narzedzie to zapisuje definicje wskazanych obiektow oraz dane w nich sktadowane w plikach binarnych. Rozdziat 1. ¢ Architektura serwera bazy danych Oracle 43 Pliki takie moga byé nastepnie kopiowane via FTP lub przenoszone migdzy maszyna- mi na nosnikach magnetycznych (taSma lub CD-ROM), a nastepnie uayte jako Zrddlo danych dla programu Import. Export moze byé takze uzywany do wykonywania kopii zapasowych. Import Import jest narzedziem stuzacym do wprowadzania danych wyekstrahowanych z bazy za postednictwem Oracle Export, Import ,.czyta” plik binarny, wykonany programem Export. SQL* Loader Pliki tworzone programem Export czytane sa jedynie przez program Oracle Import. Jesli zachodzi koniecznos¢ wprowadzenia do bazy danych zapisanych w pliku ASCII, z pomoca przychodzi nam program SQL*Loader. SQL*Loader jest programem umoz- liwiajacym wprowadzanie do bazy danych z plikéw zapisanych w kilku predefinio- wanych formatach. Sprébujmy wejs¢ glebiej w niektore z element6w opisanej powyzej struktury. Zacznijmy od rozebrania na czesci serwera Oracle'a. Struktura plikow serwera Oracle’a Prayjreyjmy sig blizej serwerowi Oracle’a, poniewaz tylko 2a jego posrednictwem mozemy korzystaé z danych zapisanych w bazie. Gdzie go szuka¢ w strukturze kata- logéw naszego komputera? Jako przyklad postuzy nam serwer Oracle’a pracujacy w srodowisku Windows. Po in- stalacji serwera Oracle’a, na wskazanym przez nas dysku powstaje Katalog 0 nazwie ORANT zawierajacy wszystkie pliki serwera Oracle’a oraz zwykle réwnie2 pliki ba- zy danych. Drzewo tego katalogu przedstawiono na nastepnej stronie. Najwazniejsze podkatalogi to: ORADATA ~ zawierajacy pliki bazy danych; ADMIN ~ zawicrajacy pliki konfiguracyjne bazy; NETWORK -— katalog zawierajacy pliki konfigurujace SQL*Net; RDBMS\ADMIN ~ zawierajacy skrypty SQL-owe wykorzystywane do tworze- nia i administracji baza. cs i a al Lobetobebcocgooe oH S| i i = aRY aananeees hipill? tee at sik Instancja Oracle’a Oracle tatwiejszy niz przypuszezasz Podstawowym pojeciem zwiazanym z praca serwera Oracle’a jest instancja Oracle’a Aby zrozumicé mechanizmy zachodzace w serwerze i bazie Oracle, nalezy zrozumicé i polubié instancje Oracle’a. Bedziemy ,powolywaé ja do zycia” przy kazdym rozpo- czynaniu pracy z baza, Aby rozpoczaé prace z baza, a wige otworzyé ja dla uzytkownikéw, musimy w pamig- ci operacyjne} komputera pracujgcego jako serwer Oracle’a stworzyé owa tajemnicza instancje Oracle’a Co to jest instancja Oracle’a? Najkrécej méwige — jest to grupa buforsw wykorzystywana do obstugi bazy o nazwie Obszar globalny systemu (ang. System Global Area ~ SGA) oraz szereg proceséw dru- goplanowych (ang, Background Process), ktore dzialajge asynchronicznie, wykonujq wszystkie czynnosei zwigzane z obsluga bazy i je) uzytkownikow Rozdziat 1. + Architektura serwera bazy danych Oracle 45 Innymi stowy, instancja Oracle’a to programy rezydujace w pamigci operacyjne) kom- putera pracujacego jako serwer Oracle’a, zapewniajace mechanizmy kontroli i dostepu do danych zapisanych w bazie oraz zarezerwowany dla nich niezbedny obszar pamie- ci operacyjne}. SGA Sysiom Global Area (Obezar Gobainy Syston Instalacja Oracle’a Zwykle dla jednej bazy podniesiona jest jedna instancja. Mo‘liwe jest jednak otwar- cie wielu instangji pracujacych na danych jednej bazy pray u2yciu opcji serwera row- nolegtego (Parallel Server Option). Do czego study instancja Oracle’a? Instancja Oracle’a jest fragmentem wycigtym z pamigci operacyjnej komputera pracu- Jacego jako serwer Oracle’a, Jest to zwykle duzy obszar pamigci operacyjnej zarezerwowany tylko i wylacznie dla potrzeb programow obstugujacych baze i jej uzytkownikw. Programy te, nazywane procesami drugoplanowymi, rezyduja w pamigci komputera i pozostaja w statej go- towosei do pracy, wykonujac swoje zadania zawsze wtedy, gdy baza lub dzialania jej uzytkownikéw tego wymagaja, Procesy drugoplanowe Liczba proceséw drugoplanowych pracujacych w instangji Oracle’a zalezna jest od ustawienia parametréw bazy. Istnieje jednak grupa proceséw niezbednych do pracy bazy. Do proceséw tych zaliczamy: DBWR — Data Base WRiter — proces zapisujqcy dane wprowadzane przez ueyt- kownikéw do bazy z buforéw SGA do plik6w dyskowych; LGWR — LoG WRiter storig wszystkich opera proces zapisujacy pliki dziennika powtérzet,, czyli hi- na bazie; PMON ~ Process MONitor — monitor proceséw trzymajacy piecze nad zaso- bami bazy wykorzystywanymi przez uzytkownikow bazy; SMON ~ System MONitor — monitor systemu utrzymujacy ,porzadek" w SGA. 16 Oracle tatwiejszy niz przypuszezasz Ponadto w instaneji Oracle’a pracowaé moga procesy drugoplanowe odpowiadajace za: # archiwizacje plikéw dziennika powtérzeh - ARCH; odtwarzanie rozproszone bazy ~ RECO; + blokowanie rozproszone danych w bazie ~ LCKn; replikaeje danych ~ SNPn; - réwnolegly zapis do bazy ~ Dbnn; prace serwera wielokanatowego ~ Dnn — DISPATCHERS i Snn — SERVERS; realizacje punktéw kontrolnych - CKPT ~ CHECK POINT. oe Zanim poznamy szezegstowo SGA i funkeje proceséw drugoplanowych, spojrzmy na strukturg plikéw tworzacych baze danych Struktura bazy danych Oracle Baza danych Oracle sklada sie z instangji Oracle’a oraz plik6w bazy danych. Procesy drugoplanowe Background Proceesee PK Konirolne Pld startowe (Control Flee) (Parameter Files) Baza danych Oracle fizyeznie sktada sig z ezterech rodzajéw plikow: + plikow bazy danych (Database Files); ¢ plikow dziennika powtérzeh (Redo Log Files); © plik6w kontrolnych (Control Files); © pliku startowego (Parameter Files). W serwerach Oracle v8 pliki te zajduja sie w katalogu %ORACLE_HOME%%\oradara\ sid_bi sq to zwykle pliki o rozszerzeniu .ORA lub .DBS. Rozdziat 1. ¢ Architektura serwera bazy danych Oracle a7 Pliki bazy danych (Database Files) Pliki bazy danych to miejsce, gdzie fizycznie preechowywane sa dane zapisane w ba- zie. To wlasnie ich wielkos¢ decyduje 0 ,pojemnosci bazy”. Przestrzeti dyskowa zaj- mowana przez pliki bazy danych logicznie pogrupowana jest w bazie na przestrzenie tablic, opisane szczegétowo w rozdziale 2. Baza musi posiadaé co najmniej jeden plik typu Database Files, a taczna wielkos¢ wszystkich plikow bazy nie moze byé mnie|- sza niz 5 MB. Pliki dziennika powtérzeni (Redo Log Files) Zawieraja dane o bazie stuzace do awaryjnego odtwarzania danych bazy. Kazda baza Oracle posiada co najmniej dwa pliki dziennika powtérzef. Dla zwigkszenia bezpie~ czenstwa stosuje si¢ czesto zwierciadlane powielenie tych plikow na fizycznie réz- nych dyskach Gtownym zadaniem plikéw dziennika powtérzen jest zapamigtywanie zmian zacho- dzacych w bazie na wypadek koniecznosci odtwarzania bazy po awarii Pliki kontroine (Control Files) Sa to male pliki binamne zawierajgce informacje o fizycznej strukturze bazy. Zapisane sq tu migdzy innymi nazwy wszystkich plikbw tworzacych baze wraz z pelna Sciezka dostepu, nazwa bazy danych i daty ostatnich zapiséw dokonywanych w plikach bazy. Ze wzgledu na duze znaczenie danych zawartych w tych plikach dla pracy bazy, pliki Kontroine sq zwykle powielane w kilku kopiach, umieszezanych na fizyeznie réznych dyskach serwera Oracle’a. Plik startowy (Parameter Files) Zawiera zbiér parametréw startowych bazy. Informacje te czytane sa tylko podezas startu bazy i zawieraja migdzy innymi: wielkosé obszaru SGA, nazwe bazy danych itd. (patrz dodatek D). Plik startowy bazy danych Oracle nosi zwykle nazwe IN/T.ORA i znajduje sig w ka- talogu ORANT\ADMIN\SAMPLE\PFILE. Oto przyktadowy fragment takiego pliku. Copyright (6) 1991, 1997, 1998 by Oracle oration HHNHHRRHANERRRNN SEER AMER ER HAERRREATEEEEHHRERRHHEO ERR HHREHHA EERE HHMERERHATREEY Example INIT.ORA file c by Oracle on to help you cust fon for your site, Important system param ample settings given rameter settings are generic ‘hat, installations, three scenarios have and LARGE. Any param hat needs to insta ave three settings, each one commented according on size, ues in differen ' + f ' * + #3 + ‘ + ‘ ‘ + ‘ Oracle tatwiejszy niz przypuszczasz use the following table to approximate the SGA size needed for the three scenaricus provided in this file: ‘Ingtallation/Database Size- SMALL MEDIUM, LARGE, Block 2K 4500K 680K 17000K Size 46 5500K 800K 21000K To set up a database that multiple instances will be using, place all instance-specific parameters in one file, and then nave a: of these files point to a master file using the IFILE command. This way, when you change a public Parameter, it will automatically change on aii instances. This is necessary, since all instances must run with the same value for many Parameters. For exampie, if you choose to use private rollback segments, these must be specified in different files, but since all gc_> Parameters must bs the same on all instances, they should oe in one file. INSTRUCTIONS: Edit this file and the other INIT files it calls for your site, either by using the values provided here or by providing your own, ‘Then place an IFILE= Line into each instance-speci tic INIT file that points at this file. NOTE: Parameter values suggested in this file are based on conservative estimates for computer memory availability. You should adjust values upward for modern machines. you may also consider using Database Configuration Assistant tool (DBCA) to create INIT file and to size your initial set of teblespaces based on the user input. NUNASSUAUUHERUUUURHUUASEUANOEUUUSEONUUDDOHUSSSHHMAHUHHINHRERUOSOOO HOO OR HEHEEER F replace "SAMPLE" with your database name db_nane~SAMPLS db_files = 00 INITrAL 4 db files = 80 # SMALL # db_files = 400 4 MEDIUM 4 db-files = 1500 LARGE db_file multiblock_read_count - & # INITIAL W db file_multiblock_read count - 8 4 SMALL 4 db "file multibiock read count = 16 # MeDrUW # db file multiblock read count ~ 32 # LARGE db_block buffers = 1000 INITIAL # db block buffers = 100 # SHALL # db block butters - 550 # MEDIUM # dbblock buffers = 3200 LARGE sharéd_pool_size = 10000000 # INITIAL, # sharéd_pool_size - 3500000 # SMALL # shared pool_size = 5000000 4 MEDIUM # shared_pool_size = 9090000 @ LARGE Log_eheckpoin interval = 10000 log checkpoint timeout = 0 processes = 59 4 INITIAL # processes = 50 4 SMALL # processes = 100 4 meDiuM # processes = 200 4 LARGE parallel _max_servers = 5 4 SMALL # parallel_nax_servere - 4 x (number of CPUs! # MeDruM # parallel max_servers = 4 x (number of CPUs} # LARGE dmi_locks = 200 log_bufter - 8192 4 INITIAL, 4 log buffer = 32768 4 SHALL W log_burfer = 32768 # MEDIUM ¥ logubutfer - 163840 4 LARGE 4 sequence cache entries made obsolete # sequence_cache_entries - 10 # INTIAL W sequence cache entries = 10 4 SYALI, W sequence”cacheentries = 30 # MEDIUM # sequence cache entries - 100 4 LARGE Rozdziat 1. + Architektura serwera bazy danych Oracle 19 sequence_cache hash buckets made cbsolete sequence _cache hash _puckete a INrTraL, Sequence cache hash buckets 4 Swat sequence cache hash buckets 4 MEDIUM sequence_cache_hash_buckets = # LARGE audit_trall = true 404f you want auditing timed_statistice = crue 4 ir you want timea statistics max_dunp_file size = 10240 4 limit trace file size co 5 Meg each Uncommancing che line below will cause automatic archiving if archiving has been enabled using ALTER DATABASE ARCHIVELOG. log_archive start - true loglarchive dest = ¥ORACLE_HOME®\database\44ORACLE_SID¥A\archive Log_archive format - “S¥¥ORACLE_SIDS@eTs7Sts ARC” If Using private rollback seguents, place lines of the following form in each of your instance-specific init.ora files back segments = (r01, r02, 03, r04) If using public rollback segments, ‘define how many rollback segments each instance will pick up, using the formula of rollback segments = transactions / transactions per rollback seguent In this example each instance will grab 40/8 = 8: - transactions ~ 40 transactions _per_rollback_segnent = 5 Global Naming -- enforce that a dblink has same name as the db it connects to obal_names ~ TRUE EGit and uncomment the following line to provide the suffix that will be appended to the db_name parameter (separated with a dot) and stored aa the global database name when a database is created. If your site uses Internet Domain names for e-mail, then the part of your e-mail address after the '@* is a good candidate for this paraneter value. db_domain = us.acme.com global database name is db_name.db_domain Uncomment the following line if you wish to enable the Oracle Trace product to trace server activity. This enables scheduling of server collections fron the Oracle Enterprise Manager Console. Also, 1f the oracle trace collection name parameter Ls non-null, ‘every session will write to the naned collection, as well as enabling you to schedule future collections from the console. oracle trace enable = TRUE defing directories to store trace and alert files background_dump_dest=SORACLE_HOME®\RDBMS\trace user dump dest=¥ORACLE HOME STRDBMS\trace db_block_size - 2048 refiote Idgin_passwordfile = shared text enable = TRUE # The following parameters are needed for the Advanced Replicaticn Option job queue processes = 2 job_quoue interval = 10 Job queue keep_connections = false i DESTRIBUTED LOCK _TIMEOUT parameter has been made obsolete stributed lock timeout ~ 300 distributed transactions = 5 open_links = 4 # The following parameter is set to use some of the new 8.1 features. 4 Please renember that using them may require some downgrade # actions if you later decide to move back to 8.0. compatible = 8.1.5.0.0 Procesy drugoplanowe Prayitzyjmy sig przez chwile dokladnie) procesom drugoplanowym instangji Oracle’a i temu, jakie funkcje speiniaja w zyciu bazy. 20 Oracle tatwiejszy niz przypuszozasz Procesy drugoplanowe wykonuja wszystkie prace zwiazane z obstuga danych zawar- tych w bazie. Sq to programy rezydujace w pamigci operacyjnej, a ich liczba zalezna Jest od konfiguracji bazy. Podstawowa konfiguracja bazy wymaga obecnosci czterech proces: ¢ DBWR - Data Base Writer; @ LGWR - Log Writer, PMON ~ Process Monitor; + SMON ~ System Monitor. Oto kr6tka charakterystyka kazdego z nich. DBWR (Data Base Writer) Jest to proces odpowiedzialny za zapis na dysku wszystkich zmian wprowadzanych przez uzytkownika do bazy. Przenosi dane z bufordw bazy danych (Database Buffer Cache) zawartych w SGA do fizycznych plikow dyskowych bazy (Database Files). Fizyczny zapis danych na dysku odbywa sig, gdy Data Base Writer: # nic znajduje w SGA odpowiedniej liczby wolnych buforéw potrzebnych do biezacej pracy bazy; © uplynal odpowiednio dlugi okres bez zapiséw (ma to miejsce przy male} ak- tywnosci uzytkownikow bazy); w bazie wykonuje sie tzw. CHECKPOINT - ezyli punkt kontrolny — i baza wymusza zapis wszystkich istomych informacji z abszaru SGA do plikow dyskowych. Proces ten zmniejsza liczbe fizyeznych zapiséw na dysku, co przyspiesza prace bazy i czyni ja bardzie} plynna, Nie trzeba dzieki temu tracié czasu na zapisywanie na dys- ku 2mian wprowadzonych przez kazdego u2ytkownika z osobna, Baza wykonuje te czasochtonna operacjg raz na jakis czas Istniejq platformy systemowe pozwalajace na uruchomienie wielu procesow DBWR w jednej instaneji Oracle’a. Jeden proces obsluguje wtedy zapis na jednym dysku. LGWR (Log Writer) Zadaniem Log Writera jest zapisywanie buforéw dziennika powtérzeh (Redo Log Buffer) znajdujacych sig w SGA na dysku do plikéw dziennika powtérzen (Redo Log Files). Proces ten uaktywnia sie, gdy: # nastepuje potwierdzenie transakeji (COMMIT); bufory dziennika w SGA sq zapelnione w jednej trzeciejs Rozdziat 1. ¢ Architektura serwera bazy danych Oracle 21 DBWR czysci bufory bazy danych; + w bazie wykonywany jest CHECKPOINT; + uptynat odpowiednio dlugi okres bez zapis6w; + baza przygotowuje sig do przeprowadzenia transakeji rozproszonej. W instancji Oracle’a moze istnieé tylko jeden proces LGWR. W praktyce proces ten zapewnia zapis na dysku wszystkich zmian ostatnio dokona- nych w bazie, Okres objety tym zapisem zalezy od aktywnosci bazy i wielkosci za- deklarowanych na dysku plikéw dziennika powtdrzef. Im wieksze pliki i mniejsza aktywnos¢ bazy, tym diuzsza historia pracy bazy zostaje zapamigtana na dysku. Praca plikow dziennika powtérzef opisana jest doktadnie} w dalszej czesci ksiazki. PMON (Process Monitor) Z bazy danych moze jednoczesnie korzystaé wielu uzytkownikéw. Czesto zdarza sig wiec, ze kilku uzytkownikéw bazy si¢ga jednoczesnie po te same dane. Nie stanowi to problemu, gdy wszyscy uzytkownicy chea jedynie ogladaé ten sam fragment bazy. Klopoty zaczynajq sig wiedy, gdy kilku uzytkownikow jednoczesnie chce modyfiko- wa ten sam wiersz. Aby baza zachowala spéjnosé, a uzytkownicy nie przescigali sig w modyfikacji tych samych fragmentow danych, istnieje system blokad (LOCK) za- pewniajacych, ze w danej chwili tylko jeden uzytkownik bazy moze modyfikowa¢ wybrany przez siebie wiersz. Pozostali uzytkownicy musza czekaé na zakoriczenie tej operacji. Process Monitor zajmuje sig wlasnie odzyskiwaniem zasobow bazy zwolnionych przez uzytkownikéw. Do jego zadaf nalezy: ‘# usuwanie nieprawidtowo zakoriczonych polaczen; 4 wycofywanie niezatwierdzonych transakeji; + zwalnianie blokad zatozonych przez zatwierdzone procesy; + wykrywanie wewnetrznych zakleszczefi pomiedzy blokadami zaktadanymi na dane bazy i automatyeznie wycofywanie transakeji. SMON (System Monitor) Podobnie jak PMON, System Monitor zajmuje sig porzadkami. Terenem dzialania SMON jest SGA, a do jego obowiazkéw nalezy: + usuwanie niepotrzebnych segmentow tymezasowych; ¢ wykonywanie automatycznego odtwarzania instancjis 22 Oracle tatwiejszy niz przypuszczasz # aktualizowanie pliku kontrolnego bazy; + dynamiczne scalanie obszaru pamigci operacyjnej zajmowanej przez serwer. Zaréwno PMON, jak i SMON dziataja w bazie asynchronicznie i nie mozna wymusi¢ ich aktywnosci zewnetrznie. Nie mozna tez wplywaé na ich prace przez zmiang pa- rametréw pliku startowego bazy. Ani uzytkownik bazy, ani jej administrator nie wie- dza, kiedy procesy te sq aktywne, a kiedy nie. Pozostate procesy drugoplanowe W zaleznosci od zadaii, jakie spelnia baza i jej wewnetrzne) konfiguracji w instancji Oracle’a pracowaé moga réwniez inne procesy drugoplanowe. Zapewniaja one bazie spéjnosé danych i zwigkszaja bezpieczefistwo powierzonych jej zasobow. Oto kilka zdan o kazdym z nich. ARCH ~ (ARCHiver process) to proces dokonujacy automatycznego archiwizowania (kopiowania) plikow dziennika powtérzeh, co umodliwia na przyklad odtworzenie ba- zy do stanu przed awaria, Jesli baza pracuje z aktywnym procesem ARCH, méwimy 0 niej, Ze jest w trybie ARCHIVE. RECO ~ (RECOvery) odpowiada za odtwarzanie rozproszone. Obstuguje bledy trans- akeji rozproszonych przez probe ponownego potaczenia. Proces uaktywniany tylko w przypadku korzystania z rozproszonych baz danych. LCKn — (LoCK) kontroluje blokady pomigdzy instancjami serwera rownoleglego. Uzywany tylko w trybie serwera rownolegtego. SNPn ~ (SNaPshot) obstuguje automatyczne odswiezanie replikacji zdalnych tablie (migawek — ang. snapshot). Proces aktywny tylko w przypadku korzystania 2 opgji rozproszonej Dnnn — proces rozdzielajacy (Dispatcher), wystepujacy przy konfiguracji serwera wielokanalowego, posredniczacy pomiedzy procesami uzytkownikow a kolejkami zadan i odpowiedzi. Snnn ~ proces serwera dzielonego (Shared server), wystepujacy przy konfiguracji serwera wielokanalowego, wykonujacy polecenia z kolejki zadan. CKPT ~ (ChecKPoinT process) wymusza uaktualnienie wszystkich fizyeznych pli- kéw bazy o informacje znajdujace sig aktualnie w buforach SGA. Z wyjatkiem procesu ARCH, ktéry uaktywnié moze nawet poczatkujacy administra- tor, pozostate opisane tu procesy spelniaja skomplikowane role w zyciu bazy. Ich za- stosowanie Scisle zwiazane jest z réznymi typami konfiguracji serwera Oracle’a. Jest to temat na ksiazke o zaawansowane} administracji bazami danych Oracle. Rozdziat 1. + Architektura.serwera bazy danych Oracle 23 Struktura Obszaru globalnego systemu Obszar globalny systemu (SGA) to grupa buforéw lokowanych w pamieci operacyj- nej komputera pracujacego jako serwer Oracle’a. W przypadku Oracle for NetWare, SGA 2znajduje sie w pamigci serwera Novell, zaé Personal Oracle zaklada swoje SGA ‘w pamigci operacyjnej PC, na ktérym uruchomiona jest baza Obszar globalny systemu tworzony jest podezas operacji podnoszenia instancji Orac- le’a, a jego wielkos¢ zalezy od aktywnosci bazy. Minimalng proponowana przez stan- dardowe skrypty jest wartosé 3,5 MB. Nie oznacza to, ze zadeklarowanie mniejszej wartosci uniemodliwi prace z baza, W bazach produkcyjnych zwykle osiaga 9 — 40 i wigcej MB. Giéwnymi czesciami SGA sa: + bufory bazy danych (Database Buffer Cache); ¢ bufory dziennika powtérzeh (Redo Log Buffer); ¢ obszar dzielony (Shared Pool). Bufory SGA mozna obrazowo opisaé jako notatki tymczasowo przechowywane w pa- migci, oczekujace np. na zapisanie ich na dysku w odpowiednich plikach bazy. Istni nie dostatecznie duzej ilosci buforéw zapewnia bazie plynnosé dziatania, bez opdénieh zwiqzanych z powolnym procesem zapisu danych na dysku. Bufory zgrupowane sq logicznie w dwéch listach. Lista ,,brudnych buforéw” (Dirty Buffers) — zawiera te bufory, kt6re zostaty zmodyfi- kowane (zapisane), a ich aktualna zawartosé nie zostata jeszcze skopiowana na dysk do odpowiednich plikow bazy przez procesy drugoplanowe. Lista ostatnio uzywanych buforéw (Last Recently Used — LRU) ~ zawiera spis bufo- row, ktore nie byly w uayciu od ostatniego zapisu na dysku, i moga byé modyfikowane. ToSé i wielkoSé buforsw w SGA okreslana jest przez parametry startowe bazy zawar- te w pliku JN/T.ORA. 24 Oracle tatwiejszy niz przypuszczasz Bufory bazy danych (DATABASE BUFFER CACHE) Bufory bazy danych zawieraja ostatnio najczescie) uzywane fragmenty danych od- czytane z bazy zapytaniami uzytkownikow. Utrzymywanie w pamigci tych buforow pozwala na zmniejszenie ilosci odezytow danych z dysku, jesli zapytanie o takie dane powtorzy sie. Bufory dziennika powtorzen (REDO LOG BUFFER) Bufory dziennika powtérzeii przechowuja informacje o wszystkich potwierdzonych zmianach w bazie danych. Informacje te niezbedne sq w przypadku zaistnienia ko- niecznosci odtwarzania bazy do stanu sprzed awarii. Zmiany w bazie typu INSERT, UPDATE, DELETE, CREATE, ALTER oraz DROP do mo- mentu zatwierdzenia transakeji (COMMIT) przechowywane sq w buforach procesu uzytkownika, Po ich zatwierdzeniu przenoszone sq do buforéw dziennika powtérzen, a stad do plikOw dziennika powtérzea. Obszar dzielony (SHARED POOL) Obszar dzielony to czesé SGA, sktadajaca sie z obszaru dzielonego SQL-a (Shared SOL Area) i obszaru stownika bazy (Data Dictionary Cache). W obszarze dzielonym SQL-a odbywa sig rozbiér logiczny zapytan do bazy (PARSE) i powstaje plan ich realizacji w bazie. Obszar stownika bazy zawiera zbiér tablic i perspektyw przechowujacych informacje o: + definicjach wszystkich tablic i perspektyw bazy; + przywilejach bazodanowych wszystkich uzytkownikéw bazy. Z informacji tych korzysta serwer Oracle’a, np. podczas sprawdzania poprawnosci skladni zapytai' SQL-a, sprawdzajac, czy wymienione w zapytaniu obiekty istniejq w bazie i czy dany uzytkownik ma do nich wymagane przywileje obiektowe. Pliki dziennika powtoérzeri (REDO LOG) Pliki dziennika powtorzei sq jedna z integralnych czgsci bazy, bez kt6rej baza nie moglaby dzialaé. Kazda baza danych Oracle ma dwa lub wigcej plikow dziennika powtérzen. Zadaniem tych plikow jest zapamigtywanie wszystkich zmian w bazie zatwierdzonych komenda COMMIT. Zapis do plikéw dziennika powtorzeh dokonywany jest przez Rozdziat 1. + Architektura serwera bazy danych Oracle 25 proces drugoplanowy LGWR, ktory przenosi dane z bufordw dziennika powtorzea do plikow dyskowych Jesli baza posiada minimaing liczbe plikow dziennika powtorzen, czyli dwa, zapis da- nych wyglada nastepujaco: LGWR zapisuje informacje z buforéw dziennika powt6- rzefi do plik6w dziennika powtorzef tak diugo, a2 pierwszy plik dziennika powtérzei nie zapeini sig. Wtedy nastepuje tzw. ,przelaczenie logéw” i informacje z buforéw dziennika powtérzen zapisywane zostaja do drugiego pliku dziennika powtérzen. Po zapeinieniu drugiego pliku nastepuje kolejne przelczenie i LGWR pisze znéw do pli- ku numer jeden niszczac zgromadzone tam poprzednio dane itd W bazach posiadajacych wigksza liczbe plikow dziennika powtérzen cykl ten jest diuzszy, ale wyglada analogicznie. Czesto dla zwiekszenia niezawodnosei pracy bazy wszystkie pliki dziennika powt6- rzeh powielane sq na fizycznie réznych dyskach, tworzac taw. grupy plikw dzienni- ka powtérzeh. Rysunek zamieszezony ponizej przedstawia schemat rozmieszezenia plik6w dzienni- ka powtérzen z podzialem na grupy. Baza ma tu trzy grupy dziennik6w powtdrzen na trzech fizycznie réznych dyskach. W kaadej z grup znajduja sig trzy pliki Kolejnosé zapisywania informacji jest w tym przypadku nastepujaca 1. LGWR zapisuje wszystkie zmiany w bazie jednoczesnie do plikéw log/A.ora, log/B.ora i logiC.ora nalezacych odpowiednio do grupy A, Bi C. 2. Po zapelnieniu pierwszych plikow dziennika LGWR przelaeza zapis na pliki log2A.ora, log2B.ora i log3C.ora. 3. Nietrudno zgadnaé, Ze po zapetnieniu tych plik6w nastepne informacje dzien- nika powtérzen zapisane zostana w plikach log/C.ora, log2C.ora i log3C.ora. 4. Poniewaz LGWR nie znajduje juz ,.nastepnych” plikow dziennika do zapisu, rozpoczyna zapisywanie informacji w plikach fog/.ora, log/B.ora i logiC. ora, niszezac poprzednio zgromadzone tam dane. Dysk #1 Dysk #2 Dysk #2 arupa A grupa 8 grupa C W opisanym przyktadzie informacje dziennika powtdrzef powielane sq w trzech pli- kach, znajdujacych sie na trzech fizycznie roznych dyskach, Jest to skuteczne zabez~ pieczenie przed utrata danych dziennika w przypadku awarii jednego z dysk6w 26 Oracle tatwiejszy niz przypuszezasz Do czego stuza pliki dziennika powtorzen? Sq one nieocenionym Zrédlem informacji o operacjach przeprowadzanych na bazie w przypadku wystapienia bledu w instancji Oracle’a i koniecznosci przeprowadzenia operacji odtwarzania bazy (RECOVERY). Oczywigcie ilosé tych informacji jest ogra- niczona sumarycznq wielkoscia plikow dziennika powtorzefi, edyz sa to pliki o z gory deklarowanej i niezmiennej w trakcie pracy wielkosci. Aby zwiekszy¢ pewnos¢ dzia- fania bazy oraz ilosé informacji mogacych postuzyé jako material dla operacji odtwa- rzania bazy (RECOVERY), uruchamia si¢ w bazie specjalny proces drugoplanowy ARCH, ktéry kopiuje zapelnione pliki dziennika powtérzen na dysk w postaci tzw sarchive log”. Umozliwia to odtworzenie bazy nie tylko w przypadku uszkodzenia in- stancji bazy, ale réwnie2 w razie uszkodzenia plikéw z danymi. Archiwizacja plikow dziennika powtérzeh wymaga zwykle sporo miejsca na dyskach serwera i spowalnia nieco pracg bazy Jeszceze raz o strukturze Oracle Uporzadkujmy informacje na temat struktury serwera Oracle’a. 1. Instangja to: Obszar glowny systemu; + procesy drugoplanowe. [=] Ged Ce] Ce] SGA System Global Ara (Obatar Globalry Systomy Instalacja Oracle’a 2. Baza danych to pliki zapisane na dysku, ktére nie sq dostepne dla uzytkowni- ka bazy bez posrednictwa serwera. Baze danych Oracle tworza: # pliki danych; + pliki dziennika powt6rzen: + pliki kontroine, Rozdziat 1, + Architektura serwera bazy danych Oracle 27 Pld dziennika powtsrzen lk kontrolne (Redo Log Fie) (Control Flos) 3. Baza danych Oracle w calej okazatosci, ezyli Obszar globalny systemu; # procesy drugoplanowe; # pliki tworzace baze danych. — <7 Pl dio powties (Redo Log Files) enim t Paid kontroine (Control Files) Architektura bazy danych Oracle Rozdziat 2. Baza danych Oracle od srodka Poznawanie bazy Oracle ,od srodka” rozpoczniemy od zrozumienia zaleznosei mie- dzy podstawowymi elementami tworzacymi ,,wnetrze bazy”. Zapoznamy sig blizej z pojeciami przestrzeni tablic (Tablespace), tablicy (Table) oraz plikow bazy danych (data files). Rozpoczniemy od poszukania odpowiednika pliku z danymi znanego z Clippera czy DBase Gdzie jest oracle’owy DBF? Nietrudno wyobrazié sobic, ze nasza baza Oracle musi zapisywaé powierzone jej in- formacje do plikow na dysku. Dla odréenienia ich od innych plikbw wehodzacych w sktad bazy, okreslamy je jako pliki danych (Data Files). Baza moze zawieraé jeden lub wiele takich plikéw. Zaktadajqc nowa baze, z gory okreslamy, ile przestrzeni dy kowej zajmowaé beda pliki z danymi bazy. WielkoSé tg mozemy rowniez powiekszyé lub zmniejszyé w trakcie pracy bazy, przez dodawanie lub kasowanie plikow. Pliki z danymi nie sq jednak elementem struktury bazy. Serwer bazy Oracle ,,widzi” obszar na dysku zarezerwowany dla zapisu danych w postaci przestrzeni tablic Co to jest przestrzen tablic? Najkrocej mozna by opisaé to jako logiezny kontener, w ktérym baza przechowuje zapisane w nie} dane. Patrzqc od strony serwera Oracle’a, widzimy przestrzei tablic zbudowana z jednego lub kilku plikéw, ktéra dla serwera tworzy integralna catos Serwer Oracle’a nie zapisuje danych do konkretnych plikéw, zapisuje dane w prze- strzeniach tablic. Wyobraémy sobie, ze zapisujemy dane w przestrzeni tablic sklada- 30 Oracle tatwiejszy niz przypuszezasz jacej sie z kilku fizyeznych plikéw dyskowych. Gdzie tak naprawde zapisane zostaly nasze dane? Jesli nie stosujemy zaawansowanych opcji zarzadzania zapisem danych, to doktadnie nie wiadomo. Serwer umieScit je w przestrzeni tablic, a procesy drugo- planowe bazy wpisaly gdzies na dysku. Mozemy byé pewni jedynie tego, ze dane sq w bazie, a dokladniej w jednym z plikow tworzacych uzyta przez nas przestrzen tablic. W ésmej wersji Oracle’a wprowadzono moZliwos¢ zarzadzania tym, gdzie doktadnie zapisane zostana nasze dane. Wykorzystujac partycjonowanie tablic, mozemy skie~ rowaé konkretny rodzaj danych do konkretnego pliku wchodzacego w sklad zbioru plikow tworzacych dang przestrzen. Powiedzmy, 2e mamy tablice z zamowieniami. Mozemy podzielié (partycjonowaé) ja w taki spos6b, aby zaméwienia z maja zapisy- wane byly do pliku maj.dbf, a zamowienia z czerwea do pliku czerwiec.dbf. Oczywi- Scie, oba te pliki musza tworzyé w bazie jeden logiczny byt, czyli przestrzen tabel ZAMOWIENIA. Po co to robié? Aby zwiekszyé wydajnosé bazy i niezawodnos¢ jej dziatania. Zaawansowane opcje odtwarzania bazy umozliwiaja na przyklad prace ba- zy ,.bez pliku” z danymi za maj. Jesli cos si¢ 2 tym plikiem stanie i musi zostaé od- tworzony, baza moze w tym czasie odpowiadaé na zapytania dotyczace zaméwieh zezerwea. Ale to juz jest zadanie dla zaawansowanych administratoréw. Systemowa przestrzeni tablic Kazda baza danych Oracle posiada systemowa przestrzen tablic (System Tablespace), wystepujaca zawsze pod nazwa SYSTEM. Jest ona tworzona automatycznie w czasie zakladania nowej bazy. Systemowa przestrzeh tablic zawiera zawsze tablice tzw. stow- nika bazy (Dictionary), czyli informacje 0 wewnetrznej strukturze bazy, jej uzytkow- nikach i ich przywilejach. W przestrzeni systemowej przechowywane sa takze pisane w PL/SQL procedury, funkeje, pakiety oraz wyzwalacze bazodanowe. Jaka jest relacja pomigdzy baza danych a przestrzenia tablic? Baza danych Oracle moze skladaé sig logicznie z jednej lub wielu przestrzeni tablic (Tablespace). Mate bazy moga byé zlozone tylko z przestrzeni systemowej, choé to rozwiazanie nie jest polecane. Zwykle zaleca sig stworzenie chocby jedne} dodatkowej przestrzeni dla oddzielenia danych zapisanych przez uzytkownikéw od danych za- wartych w stowniku bazy. Nowa baza sklada sig tylko w przestrzeni tablic SYSTEM. Jednym z pierwszych polecei administratora bazy jest wige zalozenie oddzielnej prze- strzeni dla gromadzenia danych uzytkownikow. Ponizszy rysunek pokazuje dwie bazy. Pierwsza z nich sklada sig tylko z przestrzeni SYSTEM. Druga zas posiada dodatkowo przestrzei tablic DANE, przeznaczona do gromadzenia danych uzytkownikow bazy. Jest to nadal bardzo prosty model bazy. W zastosowaniach produkcyjnych baze Oracle dzieli sig zwykle na wiele przestrzeni Praykladowy podziat bazy pracujacej ze standardowymi narzedziami Oracle'a moze wyzladaé nastepujaco: Rozdziat 2, ¢ Baza danych Oracle od srodka 31 SYSTEM - przestrzeti zawierajaca slownik bazy; DANE ~ przestrzefi do skiadowania danych uzytkownikow; TEMP — przestrzeft danych tymezasowych (Temporary Tablespace), wykorzy- stywana do przeszukiwania i indeksowania tablic; ROLL — prestrzen zawierajaca segmenty wycofania bazy; INDEKS — przestrzeri do zapisywania indeks6w bazy. Prreatzes table SYSTEM Przestrzenie tablic a pliki bazy danych Przestrzeti tablic moze skladaé sig fizycznie z jednego lub kilku plikow na dysku. Spojramy, jak moze to przykladowo wygladaé. W najprostszym przypadku baza skla- da sig tylko z przestrzeni tablic SYSTEM. Przestrzef ta fizycznie zawarta jest w jed- nym pliku typu Data Files, ktéry na rysunku ponizej nosi nazwe system. ora. Jesli nasza przestrzet tablic SYSTEM okaze sig zbyt mata, aby pomiescié dane, ktére chcemy tam zapisaé, mozemy rozszerzyé ja 0 jeszcze jeden plik dyskowy, np. 0 na- zwie system2.ora. Teraz widzimy przestrzcf tablic skladajaca si¢ fizycznic z dwoch plikow, lecz stanowigca logiczna catosé dla serwera Oracle’a. Rozszerzmy nasza baze o dodatkowe dwie przestrzenie tablic oraz nazwijmy je TEMP i DANE. Poniewaz kazda z tych przestrzeni moze skladaé sig z wielu plikow, przyj- mijmy, Ze przestrzei TEMP tworza pliki femp/.ora i temp2.ora, zas przestrzen tablic DANE tworza pliki dane!.ora i dane2.ora Teraz nasza baza ma trzy przestrzenie tablic, czyli logicznie obszar przeznaczony na zapis informacji podziclony jest na trzy obszary, a fizycznie dane te zapisywane beda do szesciu plikow 32 Oracle tatwiejszy niz przypuszezasz Preestzef tablic — przwstrz04 table przestrzet table ‘SYSTEM TEMP DANE Przestrzenie tablic a obiekty bazy Praestrzenie tablic w bazie Oracle sq w chwili ich tworzenia ..pustymi pojemnikami na dane”. Gdy uzytkownik tworzy w bazie nowy obiekt: tablice lub indeks, obiekt ten logicznie umiejscawiany jest w przestrzeni tablic przyjetej dla niego jako domysina. Oznacza to, 2e kazdy uzytkownik bazy ma przypisana jednq z przestrzeni tablic jako domysing i, o ile jawnie nie wyrazi w poleceniu tworzenia obiektu (CREATE. . .), w ktdrej przestrzeni obiekt ma powstaé, powstanie on w jego przestrzeni domysinej (DEFAULT TABLESPACE). Mozna tez poda¢ nazwe przestrzeni tabel w poleceniu tworzenia obiektu i skierowaé go w ten sposéb do innej przestrzeni tablic bazy Je$li przestrzei tablic tworzona jest fizyeznie przez wiecej niz jeden 2bidr na dysku, to dane zapisane w obiekcie znajdujacym sig w tej przestrzeni rozlokewane moga byé we wszystkich jej plikach lub tylko w jednym z nich Rysunek ponizej przedstawia sytuacjg, w ktérej dane jednej z tablic umieszczonej w ,Przestrzeni tablic nr 1” znajduja sig w dwéch plikach fizycznie tworzacych te prze- strzei. Inna tablica umieszezona w tej przestrzeni tablic posiada wszystkie swoje dane tylko w jednym z plikéw. Uzytkownik bazy nie ma wplywu na rozmieszczenie da- nych w plikach przestrzeni tablic. Rozdziat 2. ¢ Baza danych Oracle od Srodka 33 Odwracajae problem: nie jest mozliwe stworzenie obiektu bazy (na przyklad bardzo duzej tablicy) znajdujace} sig w kilku przestrzeniach tablic. Obrazuje to na rysunku wPrzestrzei tablic nr 2”, Fizycznie sktada sig ona z jednego pliku dyskowego 0 na- zwie »Plik danych nr 3”, Wszystkie dane obiekt6w umieszczonych w tej przestrzeni musza znaledé sig fizycznie w ,Pliku danych nr 3”, Jesli zaistnialaby sytuacja, w kt6- rej uzytkownik bazy chee wpisaé do tej przestrzeni tablic wigcej danych, niz pozwala na to fizyezna wielkosé ,,Pliku danych nr 3”, baza odpowie biedem i odmowi wpro- wadzania dalszych danych, do czas powigkszenia ,.Przestrzeni tablic nr 2” 0 kolejny plik dyskowy, np. ,.Plik danych nr 4”. Preestrzes table ne 2 i =] Tablice i przestrzenie tablic to bardzo wazne, lecz nie jedyne, obickty wystepujace w bazie danych Oracle. Wnetrze bazy zawiera znacznie wigcej typow obiektow. Wickszosé z nich ma swoje odpowiedniki w bazach danych typu .DBF, cho¢ czesto ich wlasciwosci w bazie Oracle sq znacznie szersze. Oméwimy teraz po kolei sposoby tworzenia i podstawowe wtasciwosci obicktow bazy. Przeglad obiekt6w bazy rozpoczniemy od elementow logicznie ,.najwiekszych”, czyli od przestrzeni tablic. Nastepnie zapoznamy sie z obiektami, ktére zawarte sq w prze- strzeniach tablic i w rézny sposéb stu2q organizacji i przechowywaniu danych. Przestrzenie tablic (TABLESPACE) Jak juz wiemy, baza danych Oracle logicznie sktada sig z jednej lub kilku przestrzeni tablic. Administrator bazy lub uzytkownik z uprawnieniami DBA moze tworzyé, usu- wa oraz modyfikowaé przestrzenie tablic, wraz ze zmieniajaca sig iloscia zapisanych w bazie danych. Tworzenie przestrzeni tablic Preestrzenie tablic mozna tworzyé, korzystajgc zarswno z SQL*PLUS, jak i SVRMGRL. Uzytkownik posiadajacy uprawnienia administratora bazy (DBA) moze stworzyé no- wa przestrzef tablic, nie przerywajac pracy bazy i wydajac polecenie: ieee eae SQL > CREATE TABLESPACE nazwa_nowej przestrzeni_tablic DATAFILE ' nazwa_pliku * SIZE rozmiar pliku: Polecenie tworzace nowa przestrzef tablic powoduje powstanie pliku dyskowego © podanej nazwie, lokalizacji (DATAFILE) i rozmiarze (SIZE. . .M lub STZE. . .K). nazwa_nowej_przestrzeni_tablic—jest to nazwa, jaka otrzyma nowa prze- strzefi tablic w bazie; nazwa_pLiku — powinna zawieraé pena Sciezke i nazwe pliku ktéry zostanie stworzony na dysku przez serwer Oracle’a i system operacyjny komputera pra- cujacego jako serwer bazy np.: nazwa_volumenu_novellowego: oranw\da- tabase\nazwa_pliku.ora. Rozszerzenie nazwy pliku nie jest ,narzucone z gory”, zwykle uzywane sq.ORA lub .DBS; rozmiar pliku—zapisany w formacie 9999K lub 9999M (np. 500K, 10M) okre- $la wielkosé przestrzeni tablic widzianej przez serwer Oracle’a, plik na dysku jest zawsze nieznacznie wigkszy. Powiekszanie i modyfikacja przestrzeni tablic Jezeli wielkosé przestrzeni tablic zadeklarowana przy jej tworzeniu okaze sig niewy- starczajgca dla danych, ktére chcemy w niej zapisaé, mozemy powiekszyé ja przez dodanie kolejnego pliku dyskowego. W tym celu wydajemy polecenie: SQL > ALTER TABLESPACE nazwa_przestrzeni_tablic ADD DATAFILE 'nazwa_pliku’ SIZE rozmiar_pliku; okreslajac w nim nazwe i rozmiar nowego pliku, ktéry wejdzie w sktad przestrzeni tablic, gdzie: nazwa_pliku—to pena sciedka i nazwa pliku, kt6ry zostanie stworzony na dys- ku jako kolejny plik danych powigkszanej przestrzeni tablic; rozmiar_pliku—zapisany w formacie analogicznym do instrukeji CREATE; nazwa_przestrzeni_teblic—to nazwa powickszanej przestrzeni tablic Innym sposobem na powiekszanie przestrzeni tabel jest ustawienie parametru umoz- liwiajacego samoczynne rozszerzanie sig pliku zadeklarowanego podczas tworzenia przestrzeni, Nalezy jednak uwazaé na rozmiar takiego pliku, mimo ze systemy opera- cyjne obstuguja coraz to wieksze pliki, ich nadmieme rozszerzanie sig nie jest wy- godne. Latwiej na przyklad przekopiowaé 4 pliki po 500 MB kaddy, niz jeden 2 GB Aby nasza przestrzei powigkszala sig ,samoistnie”, nalezy podczas je) tworzenia okresli¢ nastepujace parametry: SOL > CRI DATAPILE EXTEND ON TABLESPACE nazh 1iku * Rozdziat 2, ¢ Baza danych Oracle od srodka 35 NEXT xxx MAXSIZE xxxx ; gdzie: AUTOEXTEND ~ okresla przyzwolenie lub zakaz.,samoczynnego” powigkszania sie plikow; NEXT — okresla wielkosé o jaka plik zostanie powigkszony, jesli nastapi taka koniecznosé; MAXS1Zz — jest maksymalng dopuszczalna wielkoscia tego pliku. Instrukoja ALTER TABLESPACE umodliwia réwniex zmiang nazwy istniejacego juz pliku wchodzqcego w sktad przestrzeni. Wykonuje to instrukeja: SQL > ALTER TABLESPACE nazwa_przestrzeni_tablic RENAME DATAFILE '‘nazwa_pliku’ TO ‘nowa_nazwa_pliku'; Poniewaz operacja ta nie moze byé wykonana na przestrzeni, ktéra w bazie ma status ONLINE, a instrukcja RENAME DATAFILE nie tworzy nowego pliku na dysku, nalezy wykonaé nastepujacy ciag czynnosci: © przy zamknigtej bazie, na poziomie systemu operacyjnego, skopiowaé plik poddawany instrukcji RENAME DATAFILE. Podczas kopiowania nadajemy kopii pliku nowa nazwe lub zmieniamy jego lokalizacje. Przez chwile mamy wiee dwa pliki o tej samej zawartosci, réznigce sig nazwa lub potozeniem w drzewie katalogéw; © z programu SQL*PLUS lub SVRMGRL zalogowaé sie w bazie jako admini- strator lub uzytkownik SYSTEM; + wydaé polecenie zmieniajace status przestrzeni tablic na OFFLINE; SQL > ALTER TABLESPACE nazwa_przestrzeni_tablic OFFLINE; wykonaé instrukeje ALTER TABLESPACE nazwa_przestrzeni_tablic RENAME DATAFILE ‘nazwa pliku' TO "nowa_nazwa_pliku'; podajac jako: nazwe_pliku~ starq nazwe i lokalizacje modyfikowanego przez nas zbioru; nowa_nazwe_pliku—nazwe lokalizacji kopii modyfikowanego pliku. Od tej chwili w bazie znajdowa¢ sig bedzie informacja 0 nowej nazwie i lo- kalizaoji pliku danych, a ,stary” plik nie bedzie juz przez baze uzywany; ¢ zmienié status przestrzeni tablic na ONLINE, by ponownie udostepnié ja u2yt- kownikom bazy SQL > ALTER TABLESPACE nazwa_przestrzeni_tablic ONLINE? 36 Oracle tatwiejszy niz przypuszezasz # usunaé fizyeznie z dysku ,stary” plik, uzywajac komend systemu operacyjnego. Zmiana statusu przestrzeni tablic Przestrzeti tablic w pracujace) bazie Oracle moze byé dostgpna lub niedostepna dla uzytkownikow bazy, czyli administrator moze ,.wytaczy¢” z pracy jedna lub kilka przestrzeni tablic, zmieniajac ich bazodanowy status. Zmiany statusu przestrzeni tablic dokonujemy poleceniem ALTER TABLESPACE. Usta- wienie statusu przestrzeni na ONLINE powoduje, 2e jest ona gotowa do pracy i dostep- na dla uzytkownik6w. Bezposrednio po stworzeniu instrukcjq CREATE ‘TABLESPACE przestrzen tablic ma status ONLINE. Status przestrzeni OFFLINE oznacza, Ze nie mozna ani korzystaé z danych zgroma- dzonych w te} przestrzeni, ani tez zapisywaé tam nowych danych. Zmiany statusu przestrzeni dokonujemy poleceniami: SQL > ALTER TABLESPACE nazwa_przestrzeni_tablic ONLINE; SQL > ALTER TABLESPACE nazwa przestrzeni_tablic OFFLINE; Usuwanie przestrzeni tablic Jezeli jedna 2 przestrzeni tablic bazy danych okaze si¢ zbedna, administrator bazy moze ja usunaé. Usunigcie przestrzeni tablic jest operacjq prosta i szybka, gdy prze- strzef jest pusta, tzn. wszystkie obiekty utworzone w tej przestrzeni zostaty usuniete z bazy, Puste przestrzenie tablic usuwamy z bazy instrukeja: SQL > DROP TABLESPACE nazwa_przestrzeni_tablic: Jesli w przestrzeni tablic, ktéra chcemy usungé, sq dane i istniejq uzytkownicy, dla ktorych przestrzef ta jest przestrzenig domysina, nalezy skorzystaé z polecenia: SQL > DROP TABLESPACE nazwa_praestrzeni_tablic INCLUDING CONTENTS; Polecenie to usuwa z bazy przestrzef danych wraz 2 jej zawartoscia. W wyniku usunigcia przestrzeni tablic w stowniku bazy pozostaje informacja o niej, Jako 0 przestrzeni ze statusem TNVALTD. Choé nazwa usunietej przestrzeni nadal po- zostaje zapamigtana w bazie, nie przeszkadza to w utworzeniu przestrzeni 0 nazwie juz kiedys uzytej. Instrukoja ta nie powoduje fizyeznego skasowania z dysku plik6w two- rzqcych przestrzen. Nalezy to wykonaé z poziomu systemu operacyj- nego, po wykonaniu instrukgji prop. Rozdziat 2. ¢ Baza danych Oracle od srodka 37 Schemat (SCHEMA) Pojeciem nierozerwalnie zwiazanym z baza danych i jej uzytkownikiem jest schemat (Schema). Pojecie to nie wystepuje w bazach typu .DBF. Schemat jest logicznym po- wigzaniem obiektw i nie posiada skojarzonych z nim plikéw na dysku Mozna powiedzieé, ze schemat jest to zbiér obiektow bazy nalezacych do jednego uzytkownika. Obiekty schematu przechowywane sa w przestrzeniach tablic bazy, a dane zawarte wtych obiektach fizycznie sktadowane sq w jednym lub w kilku plikach wchodza- cych w sktad przestrzeni tablic. Obiekty jednego schematu moga byé rozmieszezone w kilku réznych przestrzeniach tablic i odwrotnie: przestrzeh tablic moze zawicraé obiekty nalezace do wielu schemat6w. Obiekty schematu Przyjrzyjmy sie blizej obiektom, ktére moga naleze¢ do schematu bazy danych Oracle. Poznamy w ten sposb obiekty bazy bezposrednio gromadzace dane uzytkownika lub sluzgce do obstugi i organizacji tych danych. Schemat bazy danych Oracle moze po- siada¢ nastepujace podstawowe typy obiektéw bazy: ¢ tablice (TABLE); ¢ indeksy (INDEX); + perspektywy (VIEW); sekwencje (SEQUENCE); ¢ synonimy (SYNONYM); potaezenia migdzy bazami danych (DATABASE LINK); ¢ procedury (PROCEDURE); # pakiety (PACKAGE); migawki (SNAPSHOT). Wszystkie obiekty bazy identyfikowane sq przez swoja nazwe oraz schemat, do kté- rego naleza. Nazwy obiektow tego samego typu w obrebie jednego schematu musza byé niepowtarzalne. Jest natomiast dopuszczalne, aby wielu uzytkownikéw bazy po- siadato obiekty o takich samych nazwach. Odwotujac sig do obiektu bazy nalezacego do wlasnego schematu, uzytkownik nie musi podawaé nazwy schematu w poleceniu. Wywolywanie z bazy obiekt6w innych uzytkownikéw wymaga podania nazwy schematu. Oto kilka przyktadowych polecei odwolujacych sig do obicktéw bazy w réanych schematach. 38 Oracle tatwiejszy niz przypuszczasz Zaléamy przez chwile, ze jestesmy uzytkownikiem bazy i posiadamy w swoim sche- macie tablicg EMP. Chea sprawdzié zawartos¢ tablicy EMP, wydajemy polecenie SQL-a' SOL > SELECT * FROM EMP: W ten sposdb zapytaé mozemy tylko 0 tablice znajdujaca sig w naszym schemacie. Jesli tablica EMP istnieje tylko w schemacie uzytkownika SCOTT, zapytanie musi mieé forme: SQL > SELECT * FROM SCOTT.EMP; Jesli tablicg EMP mialby tez uzytkownik bazy KOWALSKI, to zapytalibysmy: SQL > SELECT * FROM KOWALSKI.EMP; Oczywiscie tablice uzytkownika SCOTT i KOWALSKI zobaczymy tylko wtedy, gdy ich wiasciciele pozwola nam zagladaé do swoich zasobow, a zawartosé tablic EMP pana SCOTTA i KOWALSKIEGO moga byé zupetnie rozne. Podsumowujac informacje o schematach w bazie Oracle, zapamigtaé musimy, Ze: + pytajac 0 obiekt znajdujacy sig w naszym schemacie, nie musimy podawaé nazwy schematu przed nazwa obiektu; + pytajac 0 obiekt znajdujacy sie w schemacie innego uzytkownika bazy, mu- simy podawaé nazwe tego schematu przed nazwa obiektu w formie (NAZWA_ SCHEMATU .NAZWA_OBIEKTU) Tablice (TABLE) Tablica jest podstawowa forma organizacji danych przechowywanych w bazie. Dane przechowywane w tablicach uporzadkowane sq w kolumny i wiersze. Przypomina to strukturg pliku .DBF, Tablica definiowana jest przez unikatowa w obrebie schematu nazwe oraz opis kolumn wchodzacych w je) sklad. Kazda kolumna tablicy posiada 4 nazwe niepowtarzalna dla danej tablicy; + specyfikacje typu kolumny, np.: DATE, NUMBER, VARCHAR2; 4 dopuszezalny rozmiar danych sktadowanych w danej kolumnie Dodatkowo, w tablicy mozna zadeklarowaé ograniczenia (Integrity Constrains) doty- czace wybranych kolumn. Dla przykladu, jezeli kolumnie typu znakowego nadamy ograniczenie Nor NULL, ezyli niezerowa, to mechanizmy wewnetrze bazy nie po- zwola nam wpisaé do tablicy wiersza, ktéry nie precyzuje wartosci dla te} kolumny. DomysInie atrybutem kolumny jest NULL, czyli opeja pozwalajaca na wprowadzanie do kolumny wartosci zerowe} Rozdziat 2. ¢ Baza danych Oracle od srodka 39 Strukture tablicy © nazwie EMP, znajdujacej sig w schemacie uzytkownika SCOTT, przedstawia ponizszy rysunek. eolumny tabliey kolumny tablcy EMPNO _ENAME JOB MGR HIREDATE SAL___COWM__DEPTNO. 732)~SMITH CLERK 7902_‘17-DEC-88 900.00 90000 20 7499 ALLEN SALESMAN 7698 20-FEB-#8 1600.00 300.00 30 7521 «WARD «SALESMAN 7608 22-FEB-88 125000 800.00 90 H oluma nia dopuszczajaca olurmna dopuszezajgca ‘wartoéel zero warloét zerow, Tablica EMP Tablica EMP sktada sig 2 osmiu kolumn, ktérych nazwy niepowtarzalne w obrebie da- nej tablicy wypisane sq powyzej kolumn z danymi. Kolumna pierwsza, zadeklarowa- na w bazie jako kolumna numeryezna NOT NULL, nie dopuszcza wartosei zerowych, totez we wszystkich wierszach tej tabeli wartosé tej kolumny jest niezerowa. Kolumna 0 nazwie COMM jest takze kolumng numeryczna, ale nie posiada ograniczenia NOT NULL, totez w ostatnim wierszu tej kolumny wartosé Comm nie jest podana. HIREDATE jest przykiadem kolumny typu data. Format wySwietlania daty zalezny jest od usta- wien bazy, ale mona zmienia¢ go poleceniami SQL-a. Kolumny w tablicy uporzadkowane sq zgodnie z kolejnoscia podana w czasie two- rzenia tablicy. JeSli do istniejqcej tablicy doktadamy nowa kolumne, to zostaje ona umieszezona jako ostatnia. Z istniejacej tablicy nie mozna usuwaé kolumn. Tablica EMP, znajdujaca sig w schemacie uzytkownika SCOTT, jest jednq z tablic znajdujacych sie w prawie kazdej bazie jako materiat do éwiczen. Iustrujac przykla- dami operacje wykonywane na obiektach bazy, najezeScie} postugiwa¢ sie bede wla- Snie ta tablica oraz schematem uzytkownika SCOTT. Standardowo dane tablicy EMP wygladaja nastepujaco: SQL> SELECT * FROM EMP; EMENO ENAME JOB MGR © HIREDATE = SAL. COMM.“ DEPTNO 73690 SMITH CLERK 7902 17-DEC~80 800 20, 7499 ALLEN © SALESMAN ©7698 © 20-FEB-81 1600-300 30 7521 WARD SALESMAN 7698 © 22-FERB-81 1250-500, 30 7566 JONES MANAGER 7839 02-APR-81 2975, 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 ««01-MAY-81 2850 30 7782 CLARK MANAGER 7839 © 09-JUN-81 2450 10 7788 «© ScorT ANALYST 7566 09-DEC-82 3000 20 7839 KING PRESIDENT 17-Nov-81 5000 10 7844 TURNER = SALESMAN © -7698.-««08-SEP-81 1500 ° 30 7876 ADAMS CLERK 7788 © 12-JAN-83 ©1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 0 MILLER CLERK 7782 © -23-JAN-82 1300 10 14 rows selected. 40 Oracle tatwiejszy niz przypuszezasz Tworzenie tablic Nowa tablice w bazie tworzymy poleceniem: SQL > CREATE TABLE nazwa_tablicy (nazwa_kolunny typ_kolunfy) TABLESPACE nazwa przestrzeni_teblic: przy czym: nazwa_tablicy — musi byé niepowtarzalna w obrebie schematu, w ktérym jest tworzona. Zgodnie z regutami nazewnictwa obiektéw baz danych Oracle, nazwa_tablicy musi zaczyna€ sie od liter A-Z lub a-z. Moze zawieraé litery, cyfry, zak podkreslenia _oraz znaki $ i #. DugoS¢ nazwy nie moze przekra- czaé 30 znakéw; nazwa_kolumny typ_kolumny — opis kolumn tablicy jest wyszczegélnie- niem nazw i typéw kolumn wystepujacych w tablicy i ma forme: (Nazwa_kolumny pierwszej typ_kolumny_pierwszej, Nazwa_kolumny drugiej typ_kolunny_drugie3, Nazwa_kolumny_trzecie} typ_kolumny_trzecie}) azwa_przestrzeni_tablic — jest nazwa przestrzeni tablic, w ktorej zosta- nie umieszczona tworzona tablica. Jeéli nie podamy nazwy przestrzeni tablic, czyli pominiemy caty czlon polecenia: TABLESPACE nazwa_przestrzeni _tablic, nowa tablica zostanie zatozona w domyslnej przestrzeni tablic je} wiasciciela. Dla przykladu napiszmy polecenie tworzace znana nam juz tablice EMP: SQL> CREATE TABLE EMP ( EMPNO NOT NULL NUMBER(4), ENAME, VARCHAR2 (10), soa VARCHAR? (3), MGR NUMBER (4) , AIREDATE DATE, SAL NOWBER(7, 2), come NUMBER (7, 2), DEPINO NOT NULL’ NOMBER(2)) gdzie: + pierwsza kolumna jest kolumna numeryezna o maksymalnej liczbie znakéw 4, zograniczeniem NOT NULL; + druga kolumna jest typu znakowego, o maksymalnej liczbie znakéw w wier- szu réwnej 10; # trzecia kolumna jest typu znakowego, 0 maksymalnej liczbie znakéw w wier- szu rownej 9; * cowarta kolumna jest kolumna numeryczna, o maksymalnej liczbie znakéw 4; + piata kolumna jest typu data i nie wymaga specyfikacji formatu; Rozdziat 2, # Baza danych Oracle od srodka 4a szésta kolumna jest kolumng numeryczna, 0 maksymalnej liczbie znakow 7 i dokladnoscia 2 znakéw po przecinku; + siédma kolumna jest kolumna numeryczng, 0 maksymalnej liezbie znakéw 7 iz dokladnoscia 2 znak6w po przecinku; ‘¢ 6sma kolumna jest kolumng numeryczna, 0 maksymalnej liezbie znakow 2. W bazie Oracle dopuszezalne sq nastepujqce podstawowe wbudowane typy kolumn: CHAR (x) VARCHARZ NUMBER (x, d) LONG DATE RAW (x) LONG RAW ROWID UROWID CLOB BLOB BFILE Kolumna typu znakowego 0 liezbie znakow —x. Maksymalna liczba znakow w kolumnie nie moze przekroczy¢ 2000. Dopuszczalne znaki to: wielkie i mate litery, znaki +, -, %, $, & itd. Kolumna typu znakowego o okreslonej liczbie znakow —x. Maksymalna liczba znakow w kolumnie — 4000. Dopuszczalne znaki jw. Kolumna typu numeryeznego z ograniczeniem do eyfr 0 szerokoSci -x i dokladnosé po przecinku ~d, mogaca zawieraé do 38 cyfr znaczacych. Kolumna o typie zblizonym do VARCHAR2, mogaca zawieraé cigg znakdw 0 dlugosci do 2GB. W tablicy moze byé zadeklarowana tylko jedna kolumna typu LONG. Kolumna typu data, przechowujaca date i czas w zakresie od 01.01.14712 r. p.ne., do 31.12.9999 rnc. Kolumna przechowujaca dane binarne o dopuszczalnej wielkosci x. Maksymalny rozmiar kolumny 2000 bajtéw, Kolumna przechowujaca dane binare 0 dopuszczalnej wielkosci 2 GB. Kolumna przechowujaca niepowtarzalny adres wiersza tabeli zapisany w systemie heksadecymalym, Kolumna przechowujaca logicany adres wiersza poindeksowane} tabeli ‘Typ danych stuzaey do przechowywania duzych danych zakowych. Maksymalny rozmiar danych 4 GB. ‘Typ danych stuzqcy do przechowywania duzych danych binarnych. Maksymalny rozmiar danych 4 GB Typ przechowujacy znacznik do duzych danych skladowanych poza baza lub duzych (4 GB) obiekt6éw LOB sktadowanych w bazie. Instrukeja CREATE ‘TABLE pozwala nam tez na tworzenie nowych tablic na wz6r ta- blic juz istniejacych. Wyprébujmy to na przykladzie istniejacej tablicy EMP. 42 Oracle tatwiejszy niz przypuszezasz Stwérzmy tablice EMP_BIS, kt6ra bedzie kopia tablicy EMP, zawierajaca zarowno identyczne definicje kolumn, jak i takie same dane, SQL > CREATS TABLE EMP_BIS AS SELECT * FROM EMP; Sprawdémy teraz efekty naszych eksperymentow SQL > SELECT * FROM EMP_BIS; EMPNO ENAME JOB MGR ««HIREDATE = SAL._—«« COMM: DEPTNO 73690 SMITH CLERK 7902 17-DEC-80 800 7499 ALLEN © SALESMAN © -7698-««20-FEB-81 1600-300 7521 WARD SALESMAN 7698 22-FEB-81 1250-500 7566 JONES MANAGER 7839 © 02-APR-81 2975 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 7698 = BLAKE MANAGER 7839 © Q1-MAY-81 2850 7782 CLARK MANAGER 7839 © O9-JUN-81 2450 7788 © scorT ANALYST 7566 09-DEC-82 3000 7839 KING PRESIDENT 17-Nov-81 5000 7844 TURNER © SALESMAN 7698 08-SEP-81 1500 0 7876 ADAMS CLERK 7788 83 1100 7900 JAMES CLERK 7698 03-DEC~81. 950 7902 FORD ANALYST 7566 Q3-DEC-81 3000 7934 MILLER CLERK 7782 © 23-JAN-82 1300 14 rows selected. Jak widzimy, tablica EMP_BIS istnieje i zawiera doktadnie takie same dane, jak ta- blica stuzqca jej za wz6r. Przegladanie struktury tablic Strukturg tablic mozemy obejrzeé za pomoca polecenia: SQL > DESC nazwa_tablicy; SVAMGRL> DESCRIBE nazwa_tablicy; W odpowiedzi otrzymamy definicje wszystkich kolumn tablicy. Zobaczmy, jak wy- glada opis tablicy EMP: SQL > DESC EMP; Name wull? Type EMPNO NOP NOLL NUMBER (4) ENAME, VARCHARZ (10) JOB VARCHAR? (9) MGR NUMBER (4) HIREDATE DATE SAL NUMBER (7, 2 comm NUMBER (7, 2 DEPTNO NOT NOLL NUMBER (2) W pierwszej kolumnie opisu wypisane sq nazwy wszystkich kolumn tablicy w kolej- nosci zadeklarowanej w poleceniu CREATE TABLE. Druga kolumna opisu zawiera in- formacje, czy dana kolumna tablicy zadcklarowana zostala jako NOT NULL, czyli ezy dopuszezalne beda zerowe wartosci danych w tej kolumnie. W ostatniej kolumnie opi- su znajduje sie zadeklarowany typ danych dla poszezegéInych kolumn tablicy. Rozdziat 2. ¢ Baza danych Oracle od Srodka 43 Modyfikacja tablic Jezeli po utworzeniu tablicy definicja kolumn tablicy okaze sig bledna lub zaistnieje koniecznosé dodania kolumn, mozemy to wykonaé, modyfikujac istniejaca juz struk- ture. Aby dodaé nowa kolumne do tablicy, wydajemy polecenie: SQL > ALTER TABLE nazwa_tablicy ADD (nazwa_kolumny typ_kolumny): gdzie: nazwa_tablicy —jest nazwa modyfikowane} tablicy; nazwa_kolumay typ_kolumny ~to definicja kolumn dodawanych do tablicy. Dodajmy kolumng numeryezna 0 nazwie NowA_KOLUMNA do tablicy EMP: SQL > ALTER TABLE EMP ADD (Nowa_kolumna number (2)) Sprawdémy efekty naszego dziatania, wydajac polecenie: SQL > DESC EMP; Name Null? Type EMPNO NOT NULL NUMBER (4) ENAMB, VARCHAR2 (10) JOB VARCHAR? (3) MGR NUMBER (4) HIREDATE, DATE SAL NUMBER (7,2) come NUMBER (7,2) DEPTNO NOT NULL NUMBER (2) NOWA_KOLUMNA, NUMBER (2) Zmiane formatu istniejace) kolumny, np. rozszerzenia jej zakresu, dokonujemy przez: SQL > ALTER TABLE nazwa_tablicy MODIFY (nazwa_kolumny typ_kelumny); Wykorzystujac now kolumng tablicy EMP, zmiefmy jej definicje 2 NuMBER (2) na NUMBER (4): SQL > ALTER TABLE EMP MODIFY (Nowa_kolumna number (4)); Zobaczmy teraz opis tablicy EMP: SOL > DESC EMP; Name well? Type EMPNO NOT NULL NOMBER (4) ENAME VARCHAR (10) JOB VARCHAR2 (9) MGR NUMBER (4) HIREDATE, DATE SAL NUMBER (7,2) comm NUMBER (7,2) 44 Oracle tatwiejszy nit przypuszezasz DEPTNO NOT NULL NUMBER (2) NOWA_KOLUMNA NUMBER (4) Nasza NOWA_KOLUMNA ma definicje zmieniona na NUMBER (4). Ze wegledu na ograniczenia nakladane na kolumny tablic, nie wszystkie modyfikacje ich definicji sa przez baze akceptowane. Wewnetrzne zabezpieczenia bazy nie po- zwalaja na takie przedefiniowanie kolumn, ktére mogloby byé sprzeczne ze struktura wprowadzonych juz do tablicy danych. Niemozliwe jest wykonanie nastepujacych modyfikacji: # przedefiniowanie kolumny, w kt6rej wystepuja dane o wartosei NULL, na ko- lumng NOT NULL; @ dodanie nowej kolumny o wlasciwosci NOT NULL. Jezeli chcemy rozszerzyé tablice 0 kolumne z takim ograniczeniem, musimy doda¢ nowa kolumne typu NULL, ezyli dopuszezajaca wartosci zerowe, nastepnie wprowadzié do niej niezerowe dane i zmieni¢ jej definicjg na NOT NULL: zmniejszenie rozmiaru kolumny lub jej typu, jesli kolumna nie jest pusta, czyli posiada zapisane dane. Sprobujmy zmienié typ naszej NOWEI_KOLUMNY z NUMBER (4) na VARCHAR2. Oczy- wiscie, NOWA_KOLUMNA nie zawiera jeszcze Zadnych danych. SQL > ALTER TABLE EMP MODIFY Nowa_Kolumna varchar2 (10): Teraz ostatnia kolumna tablicy EMP jest typu znakowego i dopuszeza maksymalna dlugos¢ tekstu do 10 znakéw. Upewnimy sig o tym wydajac polecenie SQL > DESC EMP; Name Null? ‘Type EMPNO nor NULL NUMBER (4) ENAME, VARCHAR2 (10) JOB VARCHAR? (9) MGR NUMBER (4) HIREDATE DATE SAL NUMBER (7, 2) comm NUMBER (7, 2) DEPTNO NOT NULL NUMBER (2) NOWA_KOLUMNA VARCHAR2 (10) Zgodnie z oczekiwaniami definicja kolumny Nowa_xOLUMNA zostala zmodyfikowana Teraz sprobujmy wykonaé jedna z najistotniejszych operacji w pracy z baza, ezyli wprowadémy do tablicy dane. Wpisywanie danych do tablicy Wprowadzanie danych do tablic bazy odbywa sie komenda: SQL > INSERT INTO nazwa_tablicy (nazwy_kolumn) VALUES (dane) ; Rozdziat 2. ¢ Baza danych Oracle od Srodka 45 W pierwszym nawiasie podajemy oddzielone przecinkami nazwy kolumn, do ktérych chcemy wpisaé dane, po stowie VALUES wpisujemy w nawiasie dane oddzielone prze- cinkami. Kolejnos¢ kolumn i danych, ktore chcemy do nich wpisaé, musi byé zgodna, tzn. dane musza byé wymienione w te} same} kolejnosci, co nazwy kolumn tablicy. Jesli wpisujemy dane do wszystkich kolumn tablicy, nie musimy wyszczegélniaé ich nazw po nazwie tablicy. Dla praykladu wpiszmy cos do nasze} NOWEI_KOLUMNY. Préba wpisania informacji 'w postaci wiersza zawierajacego dane tylko w tej kolumnie, z gory skazana jest na niepowodzenie, Poniewaz tablica EMP ma zadeklarowane dwie kolumny typu NOT NULL, nie mozna do nie} dopisaé wiersza, ktory nie zawiera danych w tych dwoch kolumnach. Wewngtrzne mechanizmy bazy nie pozwola na wykonanie polecenia: SOL> INSERT INTO BMP (nowa_kolumne) VALUES (‘dane w nowej kolumnie'): Po uzupelnieniu wiersza o wartosci kolumn EMeNO i DEPTNO, mozemy dopisaé nowy wiersz, wydajac komendg: SQL> INSERT INTO EMP (empno, deptno, nowa_kolumna) VALUES (9999, 99, 'dane w nowej kolumnie'); 1 row created. Po dopisaniu nowego wiersza obejrzyjmy dane zapisane w tablicy EMP: SQL> SELECT * FROM EMP; EMPKO ENAME JOR MGR HIREDATE SAL COMM DEPTNO — NOWA_ KOLUMNA 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FE5-81 1600 300 30 7521 WARD «SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30, 7698 BLAKE © MANAGER 7839 O1-MAY-81 2850 30 7782 CLARK = MANAGER 7839 09-JUN-81 2450 10 7788 «SCOTT ANALYST 7566 09-DEC-82 3000 20 7839 KING PRESIDENT 17-Nov-81 5000 10 7844 TURNER SALESMAN 7698 08-SE0-81 1500 0 30 7876 ADAMS CLERK 7788 12-JAN-83 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-B2 1300 10 93 dane w 9999 nowe3 kol. 15 rows selected. Nauezmy sig teraz nie mnie} waznej operacji na danych — kasowania pojedynczych wierszy tablicy. 46 Oracle tatwiejszy nit przypuszezasz Usuwanie wybranych wierszy tablicy W bazie danych Oracle informacja zapisana w wierszu tablicy identyfikowana jest tylko przez zawartosé wiersza. Oznacza to w praktyce, 2e nie mozemy rozkazaé ska- sowania np. 10. wiersza tablicy. Mozemy natomiast nakazaé skasowanie wiersza, kt6- ry w kolumnie o nazwie XXXX ma zapisang informacje YYYYY. ‘Sktadnia polecenia kasujacego pojedyncze wiersze tablicy wyglada nastepujaco: SQL > DELETE FROM schemat.nazwa_tablicy WHERE warunek Usuimy dla przyktadu dopisany przez nas przed chwilg wiersz tablicy EMP: SQL > DELETE FROM EMP WHERE nowa_kolumaa = ‘dane w nowej kolumnie'; 1 row deleted. Teraz tablica EMP ma znéw 14 wierszy SQL> SELECT * FROM EMP; EMPNO ENAME JOB MGR HIREDATE SAL COM DEPTNO NOWA_ KOLUMNA 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES © MANAGER 7839 02-APR-€1 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE © MANAGER 7839 O1-MAY-81 2850 30 7782 CLARK © MANAGER 7839 09-JUN-€1 2450 10 7788 SCOTT — ANALYST 7566 09-DEC-82 3000 20 7839 «KING PRESIDENT 17-nov-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 ° 30 7876 ADAMS CLERK 7788 12-JAN-83 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 14 rows selected. Usuwanie wszystkich wierszy tablicy Jezeli chcemy zachowaé strukture tablicy i skasowaé wszystkie jej wiersze, mozemy wydaé polecenie DELETE bez sprecyzowania warunk6w, jakie spetnié powinny wier- sze. W tym szczegdInym przypadku usunigte zostana wszystkie wiersze tablicy. SQL > DELETE FROM nazwa_tablicy; Innym sposobem na usunigcie zawartosci tablicy jest polecenie: SQL > TRUNCATE TABLE nazwa_tablicy; Podobnie jak DELETE, pozostawia ono definicje kolumn tablicy, kasujac wszystkie zapisane tam dane. Rozdziat 2, ¢ Baza danych Oracle od Srodka 47 Zasadnicza ré2nicq pomigdzy komendami DELETE i TRUNCATE jest mozliwose cof- nigcia tej pierwszej, Wydanie polecenia TRUNCATE jest nieodwracalne w skutkach!!! Usunigcie wierszy tablicy poleceniem D&LETE mozna cofnaé anulujac transakeje ko- menda ROLLBACK. Dokonajmy karkolomnego eksperymentu, efektem ktdrego bedzie utrata wszystkich wierszy tablicy EMP_BIS. Tablice te utworzylismy éwiczac two- rzenie tablic instrukeja CREATE. Rozpocznijmy od sprawdzenia stanu aktualnego ta~ blicy EMP_BIS. Upewnimy sig, Ze jest ona wierna kopia tablicy EMP. SQL> SELECT * FROM EMP_BIS; EMPNO —_ENAME, JOB MGR -«HIREDATE = SAL_« «COMM; DEPTNO 73690 SMITH CLERK 7902 ~—-17-DEC-80 800 20 7499 ALLEN © SALESMAN ©7698 «=«20-FEE-81 1600-300. 30 7521 WARD SALESMAN 7698 22-FEB-81 1250-500 30 7366 JONES MANAGER 7839 © O2-APR-81 2975 20 7654 MARTIN SALESMAN 7688 28-SEP-81 1250-1400, 30 7698 BLAKE MANAGER 7839 © O1-MAY-81 2850, 30 7782 CLARK MANAGER 7839 © 09-JUN-81 2450 10 7788 «= scorr ANALYST 7566 09-DEC-82 3000 20 7839 KING PRESIDENT 17-nov-81 5000 10 7844 TURNER © SALESMAN 7698 «(08-SEP-81 1500 0 30 7876 © ADAMS CLERK 7788 © 12-JAN-83_ 1100 20 7300 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 14 rows selected. ‘Teraz dokonajmy usunigcia wszystkich wierszy tablicy EMP_BIS instrukeja DELETE: SQL > DELETE FROM EMP_BIS; 14 rows deleted. Baza informuje nas 0 usunigciu 14. wierszy. Sprawdémy, czy tablica istotnie jest pusta: SQL > SELECT * FROM EMP_BIS; no rows selected Tablica EMP_BIS jest pusta, gdyz zapytanie SQL-a nie znalazlo zadnego je) wiersza. Sprébujmy wycofa¢ polecenie DELETE, anulujac transakejg komenda ROLLBACK SQL > ROLLBACK; Rollback complete Instrukeja zostala przetworzona i tablica EMP_BIS powinna wygladaé tak, jak na po- ezatku éwiezen: SQL > SELECT * FROM EMP BIS; EMPNO | ENAME JOB MGR =«HIREDATE = SAL_«s« COMM.“ DEPTNO 7369 0 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN «= SALESMAN ©7698 © -20-FEB-81 1600 © 300 30 7521 WARD “SALESMAN © -7698««22-FEB-81 1250 © 500 30 7566 © JONES MANAGER 7839 © 02-APR-81 2975 20 7654 MARTIN SALESMAN ©7698 «28-SEP-81 1250-1400 30 7698 BLAKE MANAGER 7839 O1-MAY-81 2850 30 48 Oracle tatwiejszy niz przypuszczasz 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 = ScorT ANALYST 7566 © 09-DEC-82 3000 20 7839 KING PRESIDENT 17-Nov-81 5000 10 7841 TURNER © SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 12-JAN-83 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 14 rows selected. Zgodnie z oczekiwaniami baza praywrécita tablice do stanu pierwotnego. Sprawdé- my, czy podobna sekwencja polece pozwoli nam wycofaé komendg TRUNCATE. Pamietajae, ze tablica EMP_BIS ma znéw 14 wierszy, wydajemy polecenie: SQL > TRUNCATE FROM EMP_BTS; Table truncated. Baza nie informuje nas, ile wierszy zostato usunietych, zapytajmy wige, co znajduje sig w tablicy: SQL > SELECT * FROM EMP_BIS; no rows selected Tablica jest pusta. Postarajmy sig, analogicznie jak poprzednio, wycofa¢ efekty dzia- Jania komendy TRUNCATE: SQL > ROLLBACK; Rollback complete. SQL > SELECT * FROM EMP_BIS; no rows selected Pomimo ze baza przetworzyla pomySInie polecenie ROLLBACK, tablica EMP_BIS jest pusta, Tym razem usunglismy z nie} wszystkie dane bezpowrotnie. Zmiana nazwy tablicy Zmiang nazwy tablicy mozemy dokonaé poleceniem SOL > RENAME stara_nazwa_tablicy TO nowa_nazwa_tablicy; Dla przykladu zmiefimy nazwe tablicy EMP_BIS na BIS_EMP. Polecenie bedzie mia- Jo nastepujacy ksztalt: SQL > RENAME EMP_BIS TO BIS_EMP; Table renamed. Od tej chwili nasza, pozbawiona przed chwila, wszystkich wierszy, tablica EMP_BIS nosié bedzie nazwe BIS_EMP. Proba odnalezienia informacji o tablicy EMP_BIS jest z gory skazana na niepowodzenie: SQL > DESC EMP_EIG; Object does not exist. Rozdziat 2. ¢ Baza danych Oracle od srodka 49 Istnieje natomiast definicja pustej tablicy BIS_EMP: SQL> DESC BIS_EMP; Nane Null? Type EMPNO NOT NULL NOMBER (4) ENAME, VARCHAR2 (10) JOB VARCHAR? (9) MGR NUMBER (4) HIREDATE. DATE SAL NUMBER (7,2) comm NUMBER (7,2) DEPTNO NOT NULL NUMBER (2) SQL> SELECT * FROM BIS_EMP; no rows selected Usuwanie tablic Uzytkownik bazy Oracle moze usunaé z bazy tablice zawarta w jego schemacie. Po- lecenie: DROP TABLE nazwa_tablicy; usuwa tablice wraz z jej zawartoscia. Tablice zawierajace dane traktowane sq przez baze podobnie jak tablice puste, jesli nie sq powigzane wigzami integralnosci z innymi obiektami bazy. Aby przeéwiczyé dziatanie tej komendy, usurimy tablice BIS EMP: SQL> DROP TABLE BIS_EMP: Table dropped. SQL> DESC BIS_EMP; Object does not exist Skutk6w wykonania polecenia prop nie mozna odwrécié poleceniem ROLLBACK. Perspektywy (VIEW) Co to jest perspektywa? Perspektywa to zbiér kolumn jednej lub kilku tablic zdefi- niowana w bazie pod jednq unikatowa nazwa. Uzytkownik bazy widzi perspektywe jako wirtualng tablice zawierajaca dane zebrane z kilku tablic. W praktyce oznacza to, ze mozemy pod jedna nazwa zebraé kolumny zapisane w kil- ku réanych tablicach, na dodatek wybrane wedlug okreslonych warunk6w, i uproscié sobie znacznie sposéb odpytywania bazy o te dane. 50 Oracle tatwiejszy niz preypuszezasz Taibloa A Toblca 8 Perspektywy tworzymy, aby: * ograniczyé dostep do danych tabeli, okreslajac w definicji perspektywy filtry na wySwietlanie danych przez klauzule WHERE; uzytkownik moze mieé prawo do przegladania perspektywy, nie widzae tablic bedacych arédtem danych; ulatwié uzytkownikom bazy wykonywanie skomplikowanych zapytai przez zapisanie ich w postaci perspektywy; ulatwié dostgp do danych, grupujae je w perspektywy zawierajace dane inte- resujace konkretnych uzytkownikéw yrozniamy perspektywy: proste — oparte na jednej tablicy i zlozone ~ zbierajace da ne z kilku tablic. Tworzenie perspektyw Perspektywy tworzymy poleceniem: perspektywy nazwa_perspektywy — to unikatowa w obrebie schematu nazwa nowo two- rzone} perspektywy; zapytanie_SOL-a~ okresla zawartosé perspektywy. Nazwa_perspektywy odpowiadaé musi tym samym kryteriom, co nazwy tablic. Je- 2eli chcemy kolumnom perspektywy nadaé nazwy inne niz te, ktore nosza one w ta- Rozdziat 2. ¢ Baza danych Oracle od Srodka 51 blicach Zrédiowych, nalezy wyspecyfikowaé je po nazwie perspektywy w kolejnosei zgodnej z kolejnoscia kolumn, wystepujacych w zapytaniu po slowie AS Na przyklad: SQL > CREATE VIEW NOWY_EMP (KOL_PIERWSZA, KOL_DRUGA, KOL_TRZECTA} AS SELECT EMPNO, ENAME, JOB FROM EMP; Teraz kolumna tablicy EMP 0 nazwie EMPNO w perspektywie o nazwie NOWY_EMP nazywaé sig bedzie KOL_PIERWSZA. Kolumna o nazwie ENAME bedzie nosié na- zwe KOL_DRUGA, a kolumna JOB przemianowana bedzie na KOL_TRZECIA. Sprawdémy, jak wyglada odpowieds bazy na zapytanie skierowane do utworzonej perspektywy: SQL > SELECT * FROM NOWY_EMP; KOL_PIERWSZA © KOL_DRUGA —-KOL_TRZECIA 73690 SMITH CLERK 7499 ALLEN SALESMAN 7821 WARD SALESMAN 7566 © JONES MANAGER 7654 MARTIN SALESMAN 7698 BLAKE MANAGER 7782 CLARK MANAGER 7788 © scorT ANALYST 7839 KING PRESIDENT 74a TURNER SALESMAN 7876 © ADAMS. CLERK 7900 JAMES CLERK 7902 FORD ANALYST 7934 = MILLER CLERK 14 rows selected. Identycznq odpowied2 uzyskalibysmy, pytajac o dane zawarte w tablicy Zrédtowej SQL > SELECT EMPNO, ENAME, JOB FROM EMP; z dokladnoscia do nazw kolumn, Jest to przyklad perspektywy proste, opartej na jednej tylko tabeli. Sprobujmy stwo- rzyé perspektywe zlozona oparta na dwéch tablicach. Pierwszq z nich bedzie dobrze znana nam tablica EMP, druga tablica DEPT znajdujaca sie takze w schemacie uzyt- kownika SCOTT. Tablica DEPT zawiera informacje o departamentach pewnego przedsigbiorstwa i wy- glada nastepujaco: SQL > SELECT + FROM DEPT; DEPTNO —-DNAME. toc 10 ACCOUNTING NEWYORK 20 RESEARCH DALLAS 30 SALES cHrCAGO 40 OPERATIONS BOSTON 4 rows selected. 52 Oracle tatwiejszy niz przypuszezasz Tablica EMP zawiera informacje o pracownikach zatrudnionych w tym przedsigbior- stwie. W kolumnie DEPTNO zapisany jest numer departamentu, w ktorym zatrudnio- ny jest dany pracownik. Utw6rzmy najprostszy przyklad perspektywy zlozonej z tablic EMP i DEPT. SQL > CREATE VIEW EMP_DEPT AS SELECT NAME, JOB, DNAME, LOC FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT. DEPTNO; View created. Polaezenie dwéch tablic wymaga wpisania warunku wiERE. Obie tablice posiadaja kolumny o nazwie DEPTNO, w tablicy EMP za je} pomoca przypisywany jest numer departamentu do pracownika, zag w tablicy DEPT numery te uzupelnione sq informa- ja o nazwie i lokalizacji departamentu. Zbierajac te informacje za pomoca warunku WHERE EMP.DEPTNO = DEPT. DEPTNO przypisujemy kazdemu wierszowi z nazwiskiem pracownika informacje o nazwie i lo- kalizacji departamentu, w ktérym pracuje. Aby odréznié kolumng DEPTNO, znajdu- jaca sig w tablicy EMP, od kolumny DEPTNO tablicy DEPT, przed nazwa kolumn piszemy nazwe tablicy, z ktore} pochodza. Stad, myslac o kolumnie DEPTNO z tabli- cy EMP, piszemy: EMP. za’, odwotujac sig do kolumny DEPTNO z tablicy DEPT, piszemy: DEPT. DEPTNO DEPTNO W efekcie pod jedna nazwa perspektywy zebrane mamy informacje 0 miejscu pracy kazdego pracownika: jego nazwisko, stanowisko pracy, departament, w ktorym pra- cuje, i nazwe miasta, w ktorym znajduje sie ow departament: SQL> SELECT * FROM EMP_DEPT; ENAME, goB DNAME oc CLARK MANAGER ACCOUNTING NEWYORK KING PRESIDENT ACCOUNTING NEWYORK MILLER CLERK ACCOUNTING NEWYORK SMITH CLERK RESEARCH DALLAS ADAMS. CLERK RESEARCH DALLAS FORD ANALYST. RESBARCH DALLAS. scorr ANALYST RESEARCH DALLAS, JONES MANAGER RESEARCH DALLAS ALLEY SALESMAN SALES CHICAGO BLAKE MANAGER SALES CHICAGO MARTIN SALESMAN SALES CHTCAGO BME CLERK SALES CHICAGO TURNER SALESMAN SALES CHICAGO WARD SALESMAN SALES CHICAGO 14 rows selected, Usuwanie perspektyw Do usuwania perspektyw stuzy polecenie: SQL > DROP VIEW nazwa_perspektyay: Rozdziat 2. ¢ Baza danych Oracle od srodka 53 Rozkaz ten powoduje usunigcie z bazy definicji perspektywy i nie ma wplywu na da- ne przez nia wyswietlane. Dla przeéwiezenia tego polecenia usurimy z bazy perspektywe NOWY_EMP. SQL > DROP VIEW NOWY_EMP; View dropped. Indeksy (INDEX) Indeksy w bazie danych Oracle spetniaja taka sama funkeje, jak indeksy w innych ba- zach danych. Stosujemy je w celu przyspieszenia wyszukiwania danych w tablicy na podstawie zdefiniowanego klucza, czyli jednej lub kilku kolumn Tablica moze byé indeksowana przez wlasciciela tablicy lub uzytkownika bazy, ktory uzyskat prawo indeksowania dane] tablicy od je} wlasciciela. Baza danych Oracle uzywa indeks6w zalozonych na tablicy automatycznie, bez dodat- kowych czynnosci uzytkownika, Realizujac zapytanie, baza stara sie to zrobié mozli- wie matym kosztem i jezeli jest to mozliwe, automatycznie wykorzystuje istniejace indeksy. O tym, czy indeks bedzie uzyty w realizacji zapytania, decyduje tresé zapy- tania, Oto kilka przyktadéw takich uwarunkowa 1. Indeksy zalozone na tabeli nie sq wykorzystywane, gdy w zapytaniu nie wy- stepuje klauzula wHERE, czyli w prostych pytaniach typu SOL > SELECT * FROM DEPT; 2. Indeks bedzie wykorzystany, jezeli kolumna wymieniona w klauzuli wHeRE jest kolumna, na ktérej zalozony jest indeks: SQL > SELECT * FROM DEPT WHERE LOC = 'NEW YORK": jesli na kolumnie LOC zostat wezesniej zalozony indeks. 3. Indeks nie bedzie uzyty, jezeli kolumna, na ktérej zalozony jest indeks, wy- mieniona jest w klauzuli WHERs jako argument funkeji lub czeSé wyrazenia: SQL > SELECT * FROM DEPT WHERE UPPER(LOC) = ‘NEW YORK‘; Struktura indeksu Baza danych Oracle przy budowie indekséw stosuje zwykle metodg zbalansowanego B-drzewa, Gwarantuje to srednio jednakowy czas dostepu do dowolnego wiersza ta- beli, bez wzgledu na jego fizyczne polozenie w tablicy. Czas dostepu jest tez w du- zym stopniu niezalezny od wielkosci tablicy. Oracle tatwiejszy niz przypuszezasz Kolumna lub kolumny, na podstawie ktorych zbudowany jest indeks, nazywane sq kluczem indeksu. Indeks budowany przez bazg sklada sig z pewnej ilosci stron pamieci zorganizowa- nych w postaci drzewa. Kazda ze stron zawiera zestaw wartosci kluezy indeksu oraz. wskadniki lokalizacji stron potozonych nize] w hierarchii drzewa. Na najnizszym po- ziomie drzewa, obok wartosci klucza indeksu, znajduja sig ,adresy” wierszy w bazie Kazdy wiersz bazy posiada automatycznie tworzony identyfikator zwany ROWID, czyli identyfikator wiersza. To on wlasnie jest ,adresem” wiersza w bazie. Prayjrzyjmy sig przyktadowemu drzewu indeksu. Podstawa indeksu jest tablica na- zwisk zawierajaca nastepujace dane: nazwisko: skubis Adami ak Witkowska Janas Malec Bednarek cupak Semit Kowalski Tomezak Ammer guszczak Furmanek Miler Kolejnosé nazwisk w tablicy jest przypadkowa. Jezeli zalozymy na tej tablicy indeks ukladajacy nazwiska w kolejnosci alfabetycznej, otrzymamy drzewo indeksu pokaza- ne na ponizsze} ilustracji f I Bioki tablicy Rozdziat 2. ¢ Baza danych Oracle od srodka 35 Alfabetyczny uklad nazwisk tej tablicy wyglada nastepujaco: Adamiak, Ammer, Bednarek, Cupak, Furmanek, Janas, Juszczak, Kowalski, Malec, Miler, Skubis, Szmit, Tomczak, Witkowska. Nazwisko Kowalski znajduje sig mnie} wigcej posrodku tablicy ~ i w drzewie indeksu umieszezone zostalo na najwy2szym poziomie. Nastepny poziom drzewa zawiera na- zwiska dokonujace dalszego podzialu zbioru: Adamiak, anmer, Bednarek, Cupak, Furmanek, Janas, Suszezak, Kowaleks, Malec, Miler, Skubis, Semit, Tomezak, Witkowska Poniewaz nie mozna kontynuowa¢ dalej takiego podziatu zbioru nazwisk, na najniz- szym, trzecim, poziomie drzewa zapisane sq juz wartosci klucza indeksu w kolejno- Sci alfabetycznej, wraz z okreslajacymi ich umigjscowienie w bazie identyfikatorami ROWID. W przypadku wykonania operacji wstawiania lub usuwania wierszy z tablicy, na kt6- rej zalozony jest indeks, wewnetrzne mechanizmy bazy Oracle dokonuja aktualizacji indeksu. Indeks oparty na B-drzewie nie nadaje sig do sortowania danych wedhug kolumny o male} réznorodnosci danych. Przykladem takiej kolumny jest na przyklad pteé. Jesli mamy tablice pracownikéw z zapisana informacja o pici, indeksowanie po tej kolum- nie metoda B-drzewa nie daje zadnych rezultatow. Do danych charakteryzujacych sig malq réznorodnoscia wykorzystujemy indeksy bitmapowe BITMAP. Rodzaje indeks6w W zale¢nosci od struktury indeksu wyréznié mozemy indeksy typu: UNIQUE — zapewniajace wystepowanic unikatowych wartosci w kolumnie lub kolumnach objetych indeksem; NON UNIQUE — zapewniajace najszybszy z mozliwych dostep do danych (ten typ indeksu przyjmowany jest domysinie); SINGLE COLUMN ~ czyli indeksowanie tylko jednej kolumny; CONCATENATED ~ indeks obejmujacy do 16 kolumn, zaktadany w celu po- prawienia szybkosci przeszukiwania bazy lub zapewnienia unikatowosci warto- Sci w objetych indeksem kolumnach.

You might also like