Oracle 10g andmebaas

Allikas: Kuutõrvaja
Redaktsioon seisuga 21. juuli 2007, kell 13:25 kasutajalt Imre (arutelu | kaastöö)

Sissejuhatus

Oracle 10g andmebaas on populaarne relatsiooniline andmebaas, mis on toetatud Solaris ning mitmetel Linux platvormidel. Iseenesest on tegu kommertstarkvaraga, kuid litsentsitingimused jätavad üksikasutajale võimaluse tarkvara tutvumise eesmärgil kasutada. Täpsemalt saab kasutamistingimustega tutvuda tootja kodulehel aadressil http://www.oracle.com/. Kuutõrvajas käsitletakse Oracle 10g andmebaasi nende arvutikasutajate silmaringi laiendamise eesmärgil, kes ei ole selle tarkvaraga tuttavad. Käesolev pala ei asenda Oracle veebikohas esitatud dokumentatsiooni, on püütud esitada ühe kasutamise kogemust lootuses, et seejärel on huvilisel lihtsam orienteeruda ametlikus dokumentatsioonis.


Paigaldamine

Oracle andmebaasist esineb mitmeid versioone

  1. Standard Edition
  2. Standard Edition One
  3. Enterprise Edition
  4. Express Edition

Kuna kõige väiksema kuluga saab huviline töötava andmebaasi enda tarbeks paigalda toetatud platvormile kasutades Solaris operatsioonisüsteemi, siis käesolevas palas toodud näidete puhul on just seda operatsioonisüsteemi kasutatud. Siiski, ka muude operatsioonisüsteemide puhul toimub Oracle 10g andmebaasi kasutamise praktiliselt samamoodi.

Tarkvara paigaldamiseks saab kasutada installerit kahel viisil

  1. internaktiivselt - ./runInstaller
  2. mitte-interaktiivsel - ./runInstaller -silent -responseFile /opt/oracle/oracle-10gresponse-file.txt

Nn responsefail'i abil tehtud paigaldus käib kiiremini ja on lihtsamini reprodutseeritav. Samas, reeglina tekitatakse responsefile interaktiivse interaktiivse paigaldamiskorra ajal

 bash$ export PATH=/usr/sbin:/usr/sfw/bin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin
 bash$ ./runInstaller -record -destinationFile /opt/oracle/oracle-10gresponse-file.txt

Tarkvara paigaldamise tulemusena on tekkinud failisüsteemis kataloogi /opt/oracle andmebaasi nö mootori moodustavad failid, kusjuures andmebaasi andmete kogumi mõttes ei ole moodustatud ja ühtegi Oracle 10g andmebaasiga seotud protsessi ei tööta.

Andmebaasi moodustamine

Enne andmebaasi moodustamist peab olema Oracle 10g tarkvara edukalt paigaldatud. Seejärel tuleb logida arvutisse kasutajana oracle ning veenduda, et kirjeldatud sarnased keskkonnamuutujad

ORACLE_HOME=/opt/oracle
PATH=$PATH:/opt/oracle/10.2.0/db_1/bin

Andmebaasi saab moodustada mitmel erineval viisil, kõige nö kasutajasõbralikum on kasutada programm dbca (database configuration assistant), kus andmebaasi loomise jaoks vajalikud parameetrid sisestatakse graafiliste dialoogide vahendusel.

Andmebaasi käivitamine

Andmebaasi käivitamiseks peavad olema seadistatud sellised keskkonnamuutujad

ORACLE_HOME=/opt/oracle
ORACLE_SID=test
PATH=$PATH:/opt/oracle/10.2.0/db_1/bin

ning nö käsitsi käivitamiseks tuleb öelda

bash$ sqlplus / as sysdba
SQL> startup

Seejärel saab käsu

bash$ ps -ef | grep oracle

abil veenduda, et andmebaasile vastavad protsessid töötavad. Andmebaasi seiskamiseks tuleb öelda

SQL> shutdown

Andmebaasi võrgust kättesaadavaks muutmine

Selleks, et andmebaas oleks võrgust ligipääsetav, mis tegelikult on reegline andmebaasi praktilise kasutamise jaoks oluline, tuleb käivitada listener programm. Vajalik on sarnase sisuga seadistusfail

LISTENER=
 (DESCRIPTION=
   (ADDRESS_LIST=
     (ADDRESS=(PROTOCOL=tcp)(HOST=baas.loomaaed.tartu.ee)(PORT=1521))
     (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))
SID_LIST_LISTENER=
 (SID_LIST=
   (SID_DESC=
     (GLOBAL_DBNAME=test.baas.loomaaed.tartu.ee)
     (ORACLE_HOME=/opt/oracle/product/10.2.0/db_1)
     (SID_NAME=TEST)))

ning tuleb öelda

bash$ lsnrctl start

Seejärel saab käsu

bash$ netstat -an | grep 1521

abil veenduda, et teenus kuulab pordil 1521.


Veebipõhise haldusliidese kasutamine

Oracle 10g andmebaasi tarvkara paigaldusjärgseid seadistusi saab teha selleks mõeldud veebipõhise kasutajaliidese, 'Oracle Enterprise Manager 10g Database Control' abil. Andmebaasi mootoriga koos paigaldati pisike java veebiserver ning selle käivitamiseks tuleb öelda

bash$ emctl start dbconsole

Ning pöörduda brauseriga aadressile http://baas.loomaaed.tartu.ee:1158/em/. Kasutajanimeks valige sys rollis sysdba ning sisestage andmebaasi moodustamisel kasutatud parool.


Olemasoleva andmebaasi alusel andmebaasi moodustamine

dbca -silent -createTemplateFromDB -sourceDB test -sysDBAUserName \
 sys -sysDBAPassword parool -templateName test2

Tulemusena tekitatakse template fail

$ORACLE_HOME/assistants/dbca/templates/test2.dbt

Järgmise sammuna tuleb selle template'i alusel genereeritada andmbaasi moodustavad skriptid

dbca -silent -generateScripts -gdbName test2.baas.loomaaed.tartu.ee

-sysDBAUserName \

 sys -sysDBAPassword parool -templateName test2 -scriptDEST

/opt/oracle/test2

Tulemusena tekivad sellised failid

test2.sh
test2.sql
init.ora
CreateDB.sql
CreateDBFiles.sql
CreateDBCatalog.sql
emRepository.sql
postDBCreation.sql
test2.log

Uue andmebaasi genereerimiseks tuleb käivitada skript test2.sh, kuid enne maksab faili CreateDBCatalog.sql teisel real kirjutada 'set echo off'.

Skeemi kopeerimine ühest andmebaasist teise

Andmebaasi skeemi kopeerimiseks lastakse lähteandmebaasil salvestada oma failisüsteemi spetsiaalses DataPump formaadis fail, seejärel kopeeritakse see teise arvutisse, kus töötab sihtandmebaas ning loetakse failisüsteemist sihtandmebaasi sisse. Andmebaasi ja failisüststeemi vahel toimuva andmevahetuse juures peavad neid tegevusi sooritaval andmebaasi kasutajal olema sobivad õigused ning andmebaas peab teadma, kus failisüsteemis dump fail asub.

Vaikimisi on kirjeldatud nn andmebaasi DIRECTORY objekt nimega data_pump_dir, millele vastab failisüsteemis kataloog

$ORACLE_HOME/admin/$ORACLE_SID/dpdump

Kasutajale saab vastavad õigused anda sysdba rollis kasutaja näiteks sellise käsuga (mugavam on ehk anda sama õigus veebipõhise EM liidese abil)

SQL> grant read, write on directory data_pump_dir to priit;

Kui kõnealune kasutaja peab saama lisaks oma skeemile dumpida ka teiste kasutajate skeemi, siis tuleb talle omistada FULL_EXP_DATABASE roll.

Dump faili moodustamiseks tuleb öelda lähteandmebaasis

bash$ expdp priit/parool DIRECTORY=data_pump_dir \
 DUMPFILE=priit-20070330-exp.dmp LOGFILE=priit-20070330-exp.log

Seejärel tuleb lähteandmebaasi data_pump_dir kataloogi moodustunud dumpfail kopeerida teise andmebaasi failisüsteemis data_pump_dir kataloogi ning anda käsk

bash$ impdp priit/parool SCHEMAS=priit DIRECTORY=data_pump_dir \
 DUMPFILE=priit-20070330-exp.dmp LOGFILE=priit-20070330-imp.log

Tegevuse käigus näidatakse standardväljundisse progressi ja lisaks salvesatakse see näidatud logifaili.

Lisaks on võimalus expdp käsu abil ilma dumpfaili moodustamata hinnata andmete mahtu käsuga

bash$ expdp priit/parool ESTIMATE_ONLY=y DIRECTORY=data_pump_dir

Andmete migreerimise käigus saab skeemi nime muuta nii, et uues kohas tuleb tekitada uue skeemi nimeline kasutaja ning seejärel öelda

bash$ impdp priit/parool SCHEMAS=priit DIRECTORY=data_pump_dir LOGFILE=priit-20070330-imp.log \
      DUMPFILE=priit-20070330-exp.dmp EXCLUDE=USER remap_schema=priit:uuspriit

Sel juhul peab aga kasutajal priit olema IMP_FULL_DATABASE roll.

Andmebaasi veebipõhise haldusliidese moodustamine

Mõnel juhul, näiteks peale andmebaasi genereerimist template'ist moodustatud skriptide abil, on vajalik tekitada lisaks ka andmebaasi veebipõhine haldusliides (Oracle Enterprise Manager 10g Database Control). Selleks tuleb tekitada andmebaasi mõned skeemid ning samuti ettevalmistada failisüsteemis asuv javapõhine veebiserver, tuleb anda käsud

bash$ emca -repos create
bash$ emca -config dbcontrol db

Viimane käsk näitab oma väljundis ära veebiliidese aadressi.

Andmebaasi kustutamine

Andmebaasi sh talle vastavate failide kustutamiseks tuleb andmebaasi seisata ning anda käsk

bash$ dbca -silent -deleteDatabase -sourceDB andmebaasinimi -sysDBAUserName sys -sysDBAPassword parool

Inventory

Oracle andmebaasile paigaldatud CPU (critical patch update) ning üksikute paikade nimekirjaga tutvumiseks tuleb anda käsk

basj$ $ORACLE_HOME/OPatch/opatch lsinventory

Klientprogrammi sqlplus kasutamine

Andmebaasi paigaldamisel paigaldatakse ka klientprogramm sqlplus, mille abil saab andmebaasile anda interaktiivses rezhiimis, samuti batch-rezhiimis, korraldusi. Programmi on kõige mugavam kasutada, kui on kirjeldatud ära nn oracle nimede fail

$ORACLE_HOME/network/admin/tnsnames.ora

Selles failis seostatakse ühenduse nimi ühenduse tekitamiseks kasutatud parameetritega, näiteks selliselt

test =
       (DESCRIPTION =
       (ADDRESS=(PROTOCOL=tcp)(HOST=baas.loomaaed.tartu.ee)(PORT=1521) )
       (CONNECT_DATA=
               (SERVICE_NAME=test.baas.loomaaed.tartu.ee)
               (INSTANCE_NAME=test)))

NB! Selle faili juures on indentimine oluline!

Seejärel saab andmebaasi poole pöörduda selliselt

bash$ sqlplus priit/parool@test
SQL>

Batch rezhiimi kasutamiseks tuleb esmalt moodustada sql lausetest koosnev tekstifaili ning anda see täitmiseks

bash$ sqlplus priit/parool@test @failinimi

Andmebaasitarkvara eemaldamine

Andmebaasitarkvara eemaldamiseks tuleb esmalt programmide töö lõpetada, eemaldada dbca abil andmebaasid ning seejärel veenduda, et oleks sobivalt seadistatud keskkonnamuutuja ORACLE_HOME väärtus ning mitte asudes mõnes eemaldatavas kataloogis käivitada

bash$ $ORACLE_HOME/oui/bin/runInstaller

Avanenud aknast valida 'Deinstall products' ning lõpuks öelda Cancel runInstaller programmist väljumiseks. Tegevust sooritamise ajal ei tohi olla vastavas failisüsteemis kust tarkvara eemaldamine toimub avatud faile.

rman utiliidi kasutamine

rman (recovery manager) utiliidi abil saab anda Oracle andmebaasi töö käigus tekkivate logidega tegeleda.

bash$ rman target sys/parool @script

Arhiveeritud logide nimekirja kuvamiseks peaks skript sisaldama rida

list copy;

backupsetide nimekirja esitamiseks

list backupset;

Probleemid

  • Kui saab veateate, et spfile fail pole andmebaasi käivitamisel leitav, siis tasub üle kontrollida, kas ORACLE_SID väärtus on õiges tõstes, nimelt teatud juhtumitel on see tõstutundlik.
  • Kui peale dbca dialoogide läbimist ja Finish valimist ei hakka midagi toimuma, siis võib olla põhjuseks, et andmebaasi globaalne nimi ei sisalda andmebaasiarvuti nime. St kui arvutinimi on oracle.loomaaed.tartu.ee, siis korrektne globaalne nimi võiks olla näiteks orcl.oracle.loomaaed.tartu.ee.
  • Kui andmebaasi veebipõhine haldusliides käitub nö imelikult, siis tasub üle vaadata /etc/hosts faili sisu, nimelt lühike ja pikk nimi mõlemad peaksid lahenema. Solarise puhul on see ka muude Oracle toodete puhul väga tundlik koht, mõnel juhul ebaõnnestub tarkvara paigaldamine kui hosts fail sisaldab ebasobivaid väärtusi.