Oracle-tietokanta Riku Nykänen 1/2010
Sisältö Oraclen historiaa Tietokannan rakenne ja arkkitehtuuri Oraclen ominaisuuksia Tietokannan hallintatyökalut DB configuration assistant (DBCA) Enterprise Manager SQL*Plus
Oraclen historiaa (1/2) 1977: Yritys perustetaan 1979: Oracle 2 julkaistaan ensimmäinen tietokannan versio 1989: Oracle versio 6 julkaistaan rivitason lukitus online-varmistukset 1993: Oracle versio 7 julkaistaan täysi PL/SQL-tuki 1997: JDeveloper Java-kehitysympäristö julkaistaan 1998: Oracle 8i julkaistaan ensimmäistä kertaa myös Linux-tuettuna
Oraclen historiaa (2/2) 1998: Oracle Application Server 4.0 julkaistaan 2003: Oracle 10g julkaistaan 2006: Oracle julkaisee oman Linux-jakelunsa Unbreakable Linux perustuu Red Hatiin Nykyisin Oracle Enterprise Linux 2007: Oracle 11g julkaistaan 2008: Oracle ostaa BEA Systems in 2009: Oracle ostaa Sun Microsystems in (kauppa vahvistettiin 20.1.2010)
Oraclen tuotteita Tietokannan lisäksi Oracle on paljon muita tuotteita lähinnä yritysten ja suurten organisaatioiden käyttöön Fusion Middleware Collaboration Suite Oracle Financial Applications Oracle Project Portfolio Management Applications Oracle E-Business Suite Customer Relationship Management Enterprise Resource Management Procurement Product Lifecycle Management Supply Chain Management Manufacturing
Oraclen tietokannan erikoispiirteitä Suorituskykyorientoitunut Paljon omia laajennuksia SQL-kielessä Data dictionary -näkymät PL/SQL-kieli Java-tuki
Oracle-tietokannan rakenne Yksi Oracle-sovellus voi sisältää useita tietokantainstansseja Tietokantainstansseja voidaan hallita itsenäisesti Yksi tietokantainstanssi voi pitää sisällään useita skeemoja sisältää omat käyttäjänsä (voidaan linkittää myös käyttöjärjestelmän käyttäjiin) käyttää omia tallennustiedostoja Jokainen tietokantainstanssi voi sisältää useita taulualueita, jotka taas voivat käyttää useita tietokantatiedostoja
Oraclen muistialueet Program Global Area (PGA) Yhden Oracle-prosessin käyttämä muistialue Jokaisella palvelin prosessilla on oma, jakamaton PGAmuistialueensa System Global Area (SGA) Jaettu muistialue, joka sisältää tietoa yhdestä tietokantainstanssista Useat käyttäjät voivat jakaa muistialueen avulla tietoa tietokannan tilasta Suuri SGA alue vähentää tietojen kirjoittamista ja lukemista levyltä eli parantaa suorituskykyä
Arkkitehtuuri Windowsissa tietokantaprosessi koostuu useista säikeistä (tai taustaprosesseista) Prosessi käynnistyy automaattisesti Windows-palveluna Jokaisella samalla koneella toimivalla tietokantaprosessilla on omat taustaprosessit Kuva Oracle
Joitakin SGA alueella jaettuja tietoja Buffer cache Kaikkien käyttäjäprosessien jakama välimuisti, josta kaikki tietokannan tieto luetaan ja kirjoitetaan Shared pool Uudelleen käytettävät SQL-lauseet (valmiiksi käännettyjä) Käyttäjien, taulujen ja indeksien tietoja Tietoja käyttöoikeuksista Tietoja tallennetuista proseduureista Redo log buffer Tallentaa suoritetut transaktiot ennen kuin varsinaisia tietokantatiedostoja päivitetään
DBA-käyttäjätunnukset SYS-käyttäjä Luodaan tietokannan luonnin yhteydessä automaattisesti Saa automaattisesti DBA-käyttäjäroolin Kaikki perustaulut ja näkymät luodaan SYS-käyttäjälle SYS-käyttäjän tauluja ja näkymiä saa muokata vain järjestelmä SYSTEM-käyttäjä Luodaan tietokannan luonnin yhteydessä automaattisesti Saa automaattisesti DBA-käyttäjäroolin Hallinnollinen käyttäjätunnus, joka voi luoda tauluja
Hallinnolliset käyttäjäroolit DBA-rooli Luodaan automaattisesti tietokannan luonnin yhteydessä Sisältää suurimman osan tietokannan hallintaan tarvittavista oikeuksista => ei tulisi missään tilanteessa myöntää tavalliselle käyttäjälle Ei sisällä SYSDBA- tai SYSOPER-rooleja SYSDBA- ja SYSOPER-roolit Luodaan automaattisesti tietokannan luonnin yhteydessä Molemmilla rooleilla oikeus käynnistää ja pysäyttää tietokantainstanssi Voivat hallita tietokantaa, vaikka se ei olisi auki
Oraclen dynaamiset ja staattiset näkymät Yli tuhat erilaista näkymää, joista löytyy tietoa tietokannasta ja sen objekteista Dokumentoitujen näkymien lisäksi löytyy myös dokumentoimattomia näkymiä DICTIONARY-näkymästä löytyy kaikkien dokumentoitujen näkymien nimi ja kuvaus Näkymät jakaantuvat pääasiassa staattisiin ja dynaamisiin näkymiin
Staattiset näkymät Sisäänrakennettustaattisia näkymiä on kolmea tyyppiä ALL_<tarkenne> DBA_<tarkenne> USER_<tarkenne> Taulujen metatiedot löytyvät esimerkiksi ALL_TABLES tai USER_TABLES näkymistä USER_TABLES-näyttää vain kirjautuneen käyttäjän tiedot Kaikkien tietokannan objektien tiedot löytyvät ALL_OBJECTS-näkymästä
V$-näkymät Dynaamisia näkymiä, jotka sisältävät tietoa tietokannasta ja sen tilasta Joitakin käytetyimpiä näkymiä V$PARAMETER, V$DATABASE, V$INSTANCE, V$SGA, V$SGASTAT V$SESSION, V$TRANSACTION, V$LOCK V$SQL, V$SQLAREA, V$SQLTEXT V$LOG, V$LOGFILE
SQL-funktioita TO_CHAR: muuttaa päiväyksen merkkijonoksi TO_CHAR(sysdate, 'DD-MON-YYYY HH24:MI:SS') TO_DATE: muuttaa merkkijonon päiväykseksi TO_DATE('260120101500', 'DDMMYYYYHH24MI') SYSDATE: nykyinen päiväys ja kellonaika Matemaattisia funktioita: FLOOR, CEIL, MOD, POWER, SIGN,... Merkkijonofunktioita: UPPER, LOWER, TRIM, CONCAT, REPLACE
Muita erikoisuuksia Jokaisessa taulussa sarake ROWID Jokaiselle riville yksikäsitteinen tunniste (saman tietokannan sisällä) Nopein tapa hakea yksittäinen rivi taulusta DUAL-taulu Yhden sarakkeen taulu, jossa yksi rivi Löytyy jokaisesta Oracle-tietokannasta SELECT SYSDATE FROM DUAL
PL/SQL-proseduurit PL/SQL on proceduraalinen ohjelmointikieli, jota Oracle-tietokannat tukevat versiosta 7.3 alkaen PL/SQL:llä voidaan tehdä funktioita tietokantaan, joita voidaan suorittaa osana SQL-kyselyitä tai SQL*Plus-työkalulla Proseduureilla voidaan suorittaa loogisia operaatioita, jotka eivät ole SQL-kielessä mahdollisia Proseduureille mahdollista antaa parametreja ja saada paluuarvoja
PL/SQL esimerkki DECLARE var_salary number(6); var_emp_id number(6) = 1000; BEGIN SELECT salary INTO var_salary FROM employee WHERE emp_id = var_emp_id; dbms_output.put_line(var_salary); dbms_output.put_line( 'The employee ' var_emp_id ' has salary ' var_salary); END; /
Java-funktiot Java-luokkia ja funktioita on mahdollista tallentaa tietokantaan kuten PL/SQL-proseduureja Java-luokat toteutetaan tietokannan ulkopuolella Java-luokka ladataan tietokantaan loadjavakomennolla Tämän jälkeen funktio julkaistaan tallennettuna proseduurina Sen jälkeen funktiota voidaan kutsua esim SQL*Plus:sta SQL> EXECUTE add_new_book('jon Ronson', 'The Men Who Stare At Goats'); Esimerkkejä: http://www.oracle.com/technology/sample_code/tech/ja va/jsp/dbwebservices.html
Oracle-tietokannan sovelluksia Database Configuration Assistant Net Configuration Assistant Enterprise Manager Administration Assistant SQL Developer SQL*Plus isql*plus
Oracle DBCA Database Configuration Assistant on työkalu uuden tietokantainstanssin luomiseen tai olemassa olevan asetusten muuttamiseen
Oracle DBCA DBCA kyselee instanssin luomiseen tarvittavat tiedot Wizard-tyyppisesti Asetukset on mahdollista tallentaa malliksi DBCA on mahdollista käynnistää komentorivillä ja antaa parametrit response-tiedostossa
Tietokannan luonti DBCA:lla Valitse tietokannantyyppi General Purpose or Transaction Processing Custom Database Data Warehouse Anna tietokannalle nimi (Global Database Name) ja määritä SID (Oracle System Identifier) Määritä hälytysten vastaanottajat Anna pääkäyttäjien salasanat Määritä tallennuspaikka Määritä palautusasetuset (optionaalinen, Flash Recovery Area) Valitse mahdolliset esimerkkiskeemat Määritä oletusasetukset Määritä tietoturva-asetukset Määritä tallennustiedostojen sijainnit Lopuksi luo tietokanta (voit myös tallentaa asetukset malliksi)
Oracle Net Listener Oracle Net Listener on Oracletietokantapalvelimen komponentti, joka kuuntelee asiakassovellusten yhteydenmuodostuspyyntöjä Yhteysosoitteet konfiguroidaan yleensä asiakassovelluksen tnsnames.oratiedostossa Tiedostoa voi muokata myös Net Configuration Assistant-työkalulla
Enterprise Manager Selainkäyttöinen hallintasovellus Käytännössä lähes kaikki tietokannan hallintaoperaatiot on mahdollista tehdä EM:n kautta Löytyy osoitteesta http://palvelin:5500/em 5500 oletusportti
Enterprise Managerin toimintoja Dashboard-tilanäyttö Asetusten hallinta Varmuuskopioiden hallinta ja ottaminen Logien näyttäminen Resurssien- ja käyttäjienhallinta Skeemojen selaaminen ja muokkaaminen SQL Worksheet SQL-komentojen suorittamiseen...
Oracle Administration Assistant Graafisella käyttöliittymällä varustettu hallintasovellus Lähinnä käyttäjien, ryhmien ja roolien hallintaan
Oracle SQL*Plus SQL*Plus on klassinen Oracle-tietokantojen käyttöliittymä, jolla voidaan suorittaa SQLkomentoja SQL*Plus:n ominaisuuksia tekstipohjainen käyttöliittymä SQL-skriptien suorittaminen tulosteen tallentaminen tiedostoon (myös HTML-muodossa)
SQL*Plus käynnistäminen Käynnistettynä Windowsin aloitusvalikosta SQL*Plus ottaa yhteyden oletustietokantaan Komentoriviltä käynnistettäessä on mahdollista antaa käyttäjä ja tietokanta parametrina: sqlplus käyttäjä/salasana@tietokanta SQL-tiedoston antaminen parametriksi: sqlplus me/passme@db @c:\script.sql Kirjautuminen käyttöjärjestelmän tunnuksella sqlplus /
SQL*Plus käyttö Komentokehoitteeseen voi kirjoittaa minkä tahansa SQL-lauseen tai SQL*Plus komennon SQL-lauseen loppuun lisättävä ; merkki loppuun SELECT SYSDATE FROM DUAL; / ajaa edellisen komennon uudestaan @tiedosto ajaa tiedoston sisältämät SQL-lauseet!komento suorittaa käyttöjärjestelmän komennon QUIT ja EXIT komennot sulkevat sovelluksen
SQL*Plus:n komentoja CONNECT SYS AS SYSDBA Ota yhteys pääkäyttäjänä SET PAGESIZE 100 Aseta sivun 100 riviä Kenttien otsikkorivit tulostuvat jokaiselle sivulle kerran SET LINESIZE 100 Aseta rivinleveydeksi 100 merkkiä SPOOL <tiedoston nimi> Tallenna kaikki komennot ja tulostukset tiedostoon SPOOL OFF Lopeta tallennus
SQL*Plus:n komentoja DESC TABLE/VIEWNAME Näyttää taulun tai näkymän rakenteen SHOW PARAMETERS Näyttää käytössä olevat parametrit SET TIMING ON/OFF Näyttää SQL-lauseen suoritusajan SET PAUSE ON/OFF Näyttää PAGESIZE:n muokaisen määrän rivejä kerrallaan SET AUTO ON/OFF Aseta autocommit päälle/pois
isql*plus Selainkäyttöinen versio SQL*Plus sta Palvelu täytyy käynnistää palvelimella: isqlplusctl start Tämän jälkeen isql*plus on käytettävissä selaimella osoitteessa: http://palvelimennimi:5560/isqlplus
Oracle Datapump (export/import) dpexp-sovelluksella voidaan viedä tietokannasta pois tietoa, esimerkiksi toiseen tietokantaan dpimp-sovelluksella voidaan tuoda tietoa tietokantaan
Lisää luettavaa Oracle 11R2 http://www.oracle.com/pls/db112/homepage 2-day DBA http://www.oracle.com/pls/db112/to_toc?pathname =server.112/e10897/toc.htm Oracle Technology Network http://www.oracle.com/technology/index.html
Harjoituksia Käynnistä SQL*Plus tai EM:n kautta SQL Worksheet Kokeile Data Dictionaryn näkymiä Yritä löytää kyseisen session käyttäjätunnus, esim V$SESSION-näkymän kautta Paljonko kyseisellä käyttäjällä on tauluja (USER_TABLES saattaa auttaa) Kokeile funktioita Hae nykyinen päivämäärä ja muunna se muotoon 23:15:00 31.01.2010