Erinevus lehekülje "Oracle 10g andmebaas" redaktsioonide vahel
(→Klientprogrammi sqlplus kasutamine) |
|||
(ei näidata sama kasutaja 18 vahepealset redaktsiooni) | |||
250. rida: | 250. rida: | ||
bash$ sqlplus priit/parool@test @failinimi | bash$ sqlplus priit/parool@test @failinimi | ||
+ | |||
+ | Pöörduda saab ka connection stringi ilmutatult kasutades | ||
+ | |||
+ | $ sqlplus "priit/parool@(DESCRIPTION = (ADDRESS=(PROTOCOL=tcp)(HOST=baas.loomaaed.tartu.ee)(PORT=1521)) \ | ||
+ | (CONNECT_DATA=(SERVICE_NAME=test.baas.loomaaed.tartu.ee)(INSTANCE_NAME=test)))" | ||
+ | |||
+ | Tundub, et ka selline viis töötab, kus test.baas.loomaaed.tartu.ee on service name | ||
+ | |||
+ | $ sqlplus skeem/parool@10.0.13.77:1521/test.baas.loomaaed.tartu.ee | ||
+ | |||
+ | Andmebaasi versiooni kindlakstegemiseks tuleb öelda näiteks | ||
+ | |||
+ | $ sqlplus /nolog | ||
+ | SQL> CONNECT / AS SYSDBA | ||
+ | SQL> select * from v$version; | ||
+ | |||
+ | ===DBD::Oracle teegi kasutamine=== | ||
+ | |||
+ | Kui paigaldada Oracle andmebaasi draiver DBD::Oracle, siis saab andmebaasi saab kasutada Perlist. Eelduseks on, et süsteemis on nö piisavalt palju töötavat Oraclet, mis praktiliselt tähendab seda, et paigaldatud on Oracle andmebaas või Oracle klient. Oracle database draiveri (DBD) saab kopeerida CPANist, nt http://search.cpan.org/~pythian/DBD-Oracle-1.20/Oracle.pm. Kompileerimiseks tuleb seada ORACLE_HOME keskkonnamuutuja ning LD_LIBRARY_PATH, kuid reeglina Makefile.PL avastab õige koha ka ise. Kompileerides Sparc Solarisel tuleb kohendada Makefile'i, et DBD kasutaks 32bit teeke, nt selline võiks olla Makefile diff | ||
+ | |||
+ | < EXTRALIBS = -L$(LIBHOME) -xarch=v8 -L/opt/oracle/product/10.2.0/client_1/lib32/ \ | ||
+ | -L/opt/oracle/product/10.2.0/client_1/rdbms/lib32/ -lclntsh \ | ||
+ | `cat /opt/oracle/product/10.2.0/client_1/lib32/sysliblist` -R/opt/oracle/product/10.2.0/client_1/lib32 \ | ||
+ | -laio -lposix4 -lkstat -lm -lthread -lpthread | ||
+ | --- | ||
+ | > EXTRALIBS = -L$(LIBHOME) -xarch=v9 -L/opt/oracle/product/10.2.0/client_1/lib/ \ | ||
+ | -L/opt/oracle/product/10.2.0/client_1/rdbms/lib/ -lclntsh \ | ||
+ | `cat /opt/oracle/product/10.2.0/client_1/lib/sysliblist` -R/opt/oracle/product/10.2.0/client_1/lib \ | ||
+ | -laio -lposix4 -lkstat -lm -lthread -lpthread | ||
+ | 499c499 | ||
+ | < OTHERLDFLAGS = -xarch=v8 -L/opt/oracle/product/10.2.0/client_1/lib32/ \ | ||
+ | -L/opt/oracle/product/10.2.0/client_1/rdbms/lib32/ -lclntsh \ | ||
+ | `cat /opt/oracle/product/10.2.0/client_1/lib32/sysliblist` -R/opt/oracle/product/10.2.0/client_1/lib32 \ | ||
+ | -laio -lposix4 -lkstat -lm -lthread -lpthread | ||
+ | --- | ||
+ | > OTHERLDFLAGS = -xarch=v9 -L/opt/oracle/product/10.2.0/client_1/lib/ \ | ||
+ | -L/opt/oracle/product/10.2.0/client_1//rdbms/lib/ -lclntsh \ | ||
+ | `cat /opt/oracle/product/10.2.0/client_1/lib/sysliblist` -R/opt/oracle/product/10.2.0/client_1/lib \ | ||
+ | -laio -lposix4 -lkstat -lm -lthread -lpthread | ||
+ | |||
+ | Üldiselt on tark enne Perli kasutamist veenduda, et niisama sqlplus kliendiga saab andmebaasi kasutada, nt selline skript võiks töötada | ||
+ | |||
+ | use strict; | ||
+ | use DBI; | ||
+ | |||
+ | my $dbh = DBI->connect( 'dbi:Oracle:host=IP.AA.DRE.SS;sid=SID_VAARTUS', 'kasutajanimi', 'parool', | ||
+ | { | ||
+ | RaiseError => 1, | ||
+ | AutoCommit => 0 | ||
+ | } ) || die "Database connection not made: $DBI::errstr"; | ||
+ | |||
+ | my $sql = qq{ SELECT nimi, vanus from klassifikaator }; | ||
+ | my $sth = $dbh->prepare( $sql ); | ||
+ | $sth->execute(); | ||
+ | |||
+ | my ( $nimi, $vanus ); | ||
+ | $sth->bind_columns( undef, \$nimi, \$vanus ); | ||
+ | |||
+ | while( $sth->fetch() ) { | ||
+ | print "$nimi, $vanus\n"; | ||
+ | } | ||
+ | |||
+ | $sth->finish(); | ||
+ | $dbh->disconnect(); | ||
+ | |||
+ | Oracle andmebaasiga ühendumisel saab kasutada ka tnsnames.ora faili, kui seal on sektsioon | ||
+ | |||
+ | orcl = | ||
+ | (DESCRIPTION = | ||
+ | (ADDRESS_LIST = | ||
+ | (ADDRESS = (PROTOCOL = TCP)(HOST = orcl.loomaaed.tartu.ee)(PORT = 1521)) | ||
+ | ) | ||
+ | (CONNECT_DATA = | ||
+ | (SERVICE_NAME = kala.orcl.loomaaed.tartu.ee))) | ||
+ | |||
+ | siis peaks olema skriptis rida | ||
+ | |||
+ | my $dbh = DBI->connect( 'dbi:Oracle:orcl', 'kasutajanimi', 'parool', | ||
+ | { | ||
+ | RaiseError => 1, | ||
+ | AutoCommit => 0 | ||
+ | } ) || die "Database connection not made: $DBI::errstr"; | ||
===Andmebaasitarkvara eemaldamine=== | ===Andmebaasitarkvara eemaldamine=== | ||
301. rida: | 383. rida: | ||
Kui ASM iseensest toimib, saab kasutajate ja rakenduste jaoks mõeldud Oracle baasi dbca abil baase moodustades valida storage'ks ASM. | Kui ASM iseensest toimib, saab kasutajate ja rakenduste jaoks mõeldud Oracle baasi dbca abil baase moodustades valida storage'ks ASM. | ||
− | asmcmd utiliide abil saab muidu tavaliste unixi failisüsteemi vahendite abil ligipääsmatu ASMi jaoks eraldatud storage sisuga tutvuda. | + | asmcmd utiliide abil saab muidu tavaliste unixi failisüsteemi vahendite abil ligipääsmatu ASMi jaoks eraldatud storage sisuga tutvuda. Lisaks saab ASMi kasutava üldotstarbelise Oracle andmebaasi Enterprise Manageri veebiliidese kaudu vaadata ASM omadusi. |
+ | |||
+ | ===Paikamine=== | ||
+ | |||
+ | bash$ cd 5601428 | ||
+ | bash$ opatch apply | ||
+ | Invoking OPatch 10.2.0.1.0 | ||
+ | |||
+ | Oracle interim Patch Installer version 10.2.0.1.0 | ||
+ | Copyright (c) 2005, Oracle Corporation. All rights reserved.. | ||
+ | |||
+ | Oracle Home : /u01/app/oracle/product/10.2.0/db_1 | ||
+ | Central Inventory : /u01/app/oracle/oraInventory | ||
+ | from : /u01/app/oracle/product/10.2.0/db_1/oraInst.loc | ||
+ | OPatch version : 10.2.0.1.0 | ||
+ | OUI version : 10.2.0.1.0 | ||
+ | OUI location : /u01/app/oracle/product/10.2.0/db_1/oui | ||
+ | Log file location : /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch-2007_Aug_30_08-37-29-EEST_Thu.log | ||
+ | |||
+ | ApplySession applying interim patch '5601428' to OH '/u01/app/oracle/product/10.2.0/db_1' | ||
+ | |||
+ | OPatch detected non-cluster Oracle Home from the inventory and will patch the local system only. | ||
+ | |||
+ | Backing up files and inventory (not for auto-rollback) for the Oracle Home | ||
+ | Backing up files affected by the patch '5601428' for restore. This might take a while... | ||
+ | Backing up files affected by the patch '5601428' for rollback. This might take a while... | ||
+ | |||
+ | Patching component oracle.rdbms.rsf, 10.2.0.1.0... | ||
+ | Copying file to "/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/utltzuv2.sql" | ||
+ | Copying file to "/u01/app/oracle/product/10.2.0/db_1/oracore/zoneinfo/timezdif.csv" | ||
+ | ApplySession adding interim patch '5601428' to inventory | ||
+ | |||
+ | OPatch succeeded. | ||
+ | |||
+ | Rakendatud paikade nimekiri | ||
+ | |||
+ | bash$ opatch lsinventory | ||
+ | Invoking OPatch 10.2.0.1.0 | ||
+ | |||
+ | Oracle interim Patch Installer version 10.2.0.1.0 | ||
+ | Copyright (c) 2005, Oracle Corporation. All rights reserved.. | ||
+ | |||
+ | Oracle Home : /u01/app/oracle/product/10.2.0/db_1 | ||
+ | Central Inventory : /u01/app/oracle/oraInventory | ||
+ | from : /u01/app/oracle/product/10.2.0/db_1/oraInst.loc | ||
+ | OPatch version : 10.2.0.1.0 | ||
+ | OUI version : 10.2.0.1.0 | ||
+ | OUI location : /u01/app/oracle/product/10.2.0/db_1/oui | ||
+ | Log file location : /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch-2007_Aug_30_08-40-56-EEST_Thu.log | ||
+ | |||
+ | Lsinventory Output file location : /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory-2007_Aug_30_08-40-56-EEST_Thu.txt | ||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | Installed Top-level Products (1): | ||
+ | |||
+ | Oracle Database 10g 10.2.0.1.0 | ||
+ | There are 1 products installed in this Oracle Home. | ||
+ | |||
+ | Interim patches (1) : | ||
+ | |||
+ | Patch 5601428 : applied on Thu Aug 30 08:37:34 EEST 2007 | ||
+ | Created on 19 Feb 2007, 16:07:29 hrs US/Pacific | ||
+ | Bugs fixed: | ||
+ | 5126270, 5238255, 5601428 | ||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | OPatch succeeded. | ||
+ | |||
+ | Paiga tagasivõtmine | ||
+ | |||
+ | bash$ opatch rollback -id 5601428 | ||
+ | |||
+ | ===Backupist taastamine=== | ||
+ | |||
+ | Üheks võimaluseks on sooritada selline järgnevus, eeldusel, et andmebaas on selleks sobivalt ettevalmistatud | ||
+ | |||
+ | * Andmebaas seisata, nt | ||
+ | |||
+ | sql> shutdown immediate | ||
+ | |||
+ | * Andmebaas käivitada külgeühendatult | ||
+ | |||
+ | sql> startup mount | ||
+ | |||
+ | * Liikuda ajas tagasi | ||
+ | |||
+ | $ ORACLE_HOME/bin/rman target / nocatalog | ||
+ | RUN | ||
+ | { | ||
+ | SET UNTIL TIME "TO_DATE('01-OCT-2008 15:50:00','DD-MON-YYYY HH24:MI:SS')"; | ||
+ | RESTORE DATABASE; | ||
+ | RECOVER DATABASE; | ||
+ | } | ||
+ | |||
+ | * Lõpuks ütelda | ||
+ | |||
+ | sql> ALTER DATABASE OPEN RESETLOGS; | ||
+ | |||
+ | ===Katkiste andmebaasi objektide ümberkompileerimine=== | ||
+ | |||
+ | Vahel tekib andmebaasi muudatuste tegemise tulemusena katkisi objekte, mida vahel saab parandada ümberkompileerimisega (või dropimisega, võib vaadata metalinkist infot juurde) | ||
+ | |||
+ | Avaleht -> All Metrics -> Invalid objects by schema -> valida objekt -> Invalid objects | ||
+ | |||
+ | [[Pilt:Oracle-db-invalid-objects.gif]] | ||
+ | |||
+ | Ümberkompileerimise õnnestumisel öeldakse | ||
+ | |||
+ | All objects selected have been successfully compiled and become valid objects, they are removed from the invalid objects result table. | ||
+ | Successfully Recompiled Objects - DCM.VALIDATE_COMPONENT | ||
===Probleemid=== | ===Probleemid=== | ||
+ | * Alates 2008 aasta paikadest on 10.2.0.4 baas reegline https://domeeninimi:1158/em/ aadressil, st mitte enam http:// | ||
* 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 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 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. | ||
323. rida: | 516. rida: | ||
Finished running the script successfully | Finished running the script successfully | ||
Please see /tmp/changePerm_err.log for errors and /tmp/changePerm.log for the log of events | Please see /tmp/changePerm_err.log for errors and /tmp/changePerm.log for the log of events | ||
+ | |||
+ | Kasutaja parooli ajutiseks muutmiseks tuleb sys kasutajana sisse logida ja öelda | ||
+ | |||
+ | SQL> select username,password from dba_users where username='SCOTT'; | ||
+ | |||
+ | USERNAME PASSWORD | ||
+ | ------------------------------ ------------------------------ | ||
+ | SCOTT F894844C34402B67 | ||
+ | |||
+ | SQL> alter user SCOTT identified by uusparool; | ||
+ | |||
+ | User altered. | ||
+ | |||
+ | Ja vana tagasipanemiseks | ||
+ | |||
+ | SQL> alter user SCOTT identified by values 'F894844C34402B67'; | ||
+ | |||
+ | User altered. |
Viimane redaktsioon: 1. november 2008, kell 17:08
Sisukord
- 1 Sissejuhatus
- 2 Paigaldamine
- 3 Andmebaasi moodustamine
- 4 Andmebaasi käivitamine
- 5 Andmebaasi võrgust kättesaadavaks muutmine
- 6 Veebipõhise haldusliidese kasutamine
- 7 Olemasoleva andmebaasi alusel andmebaasi moodustamine
- 8 Skeemi kopeerimine ühest andmebaasist teise
- 9 Andmebaasi veebipõhise haldusliidese moodustamine
- 10 Andmebaasi kustutamine
- 11 Inventory
- 12 Klientprogrammi sqlplus kasutamine
- 13 DBD::Oracle teegi kasutamine
- 14 Andmebaasitarkvara eemaldamine
- 15 rman utiliidi kasutamine
- 16 Andmebaasitarkvara uuendamine
- 17 Automatic Storage Management (ASM) kasutamine
- 18 Paikamine
- 19 Backupist taastamine
- 20 Katkiste andmebaasi objektide ümberkompileerimine
- 21 Probleemid
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
- Standard Edition
- Standard Edition One
- Enterprise Edition
- 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
- internaktiivselt - ./runInstaller
- 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/10.2.0/db_1 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/10.2.0/db_1 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
Mõnel juhul on asjakohane kasutada
SQL> shutdown immediate
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.
Seiskamiseks tuleb öelda
bash$ lsnrctl stop
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.
Seiskamiseks tuleb öelda
bash$ emctl stop dbconsole
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
Pöörduda saab ka connection stringi ilmutatult kasutades
$ sqlplus "priit/parool@(DESCRIPTION = (ADDRESS=(PROTOCOL=tcp)(HOST=baas.loomaaed.tartu.ee)(PORT=1521)) \ (CONNECT_DATA=(SERVICE_NAME=test.baas.loomaaed.tartu.ee)(INSTANCE_NAME=test)))"
Tundub, et ka selline viis töötab, kus test.baas.loomaaed.tartu.ee on service name
$ sqlplus skeem/parool@10.0.13.77:1521/test.baas.loomaaed.tartu.ee
Andmebaasi versiooni kindlakstegemiseks tuleb öelda näiteks
$ sqlplus /nolog SQL> CONNECT / AS SYSDBA SQL> select * from v$version;
DBD::Oracle teegi kasutamine
Kui paigaldada Oracle andmebaasi draiver DBD::Oracle, siis saab andmebaasi saab kasutada Perlist. Eelduseks on, et süsteemis on nö piisavalt palju töötavat Oraclet, mis praktiliselt tähendab seda, et paigaldatud on Oracle andmebaas või Oracle klient. Oracle database draiveri (DBD) saab kopeerida CPANist, nt http://search.cpan.org/~pythian/DBD-Oracle-1.20/Oracle.pm. Kompileerimiseks tuleb seada ORACLE_HOME keskkonnamuutuja ning LD_LIBRARY_PATH, kuid reeglina Makefile.PL avastab õige koha ka ise. Kompileerides Sparc Solarisel tuleb kohendada Makefile'i, et DBD kasutaks 32bit teeke, nt selline võiks olla Makefile diff
< EXTRALIBS = -L$(LIBHOME) -xarch=v8 -L/opt/oracle/product/10.2.0/client_1/lib32/ \ -L/opt/oracle/product/10.2.0/client_1/rdbms/lib32/ -lclntsh \ `cat /opt/oracle/product/10.2.0/client_1/lib32/sysliblist` -R/opt/oracle/product/10.2.0/client_1/lib32 \ -laio -lposix4 -lkstat -lm -lthread -lpthread --- > EXTRALIBS = -L$(LIBHOME) -xarch=v9 -L/opt/oracle/product/10.2.0/client_1/lib/ \ -L/opt/oracle/product/10.2.0/client_1/rdbms/lib/ -lclntsh \ `cat /opt/oracle/product/10.2.0/client_1/lib/sysliblist` -R/opt/oracle/product/10.2.0/client_1/lib \ -laio -lposix4 -lkstat -lm -lthread -lpthread 499c499 < OTHERLDFLAGS = -xarch=v8 -L/opt/oracle/product/10.2.0/client_1/lib32/ \ -L/opt/oracle/product/10.2.0/client_1/rdbms/lib32/ -lclntsh \ `cat /opt/oracle/product/10.2.0/client_1/lib32/sysliblist` -R/opt/oracle/product/10.2.0/client_1/lib32 \ -laio -lposix4 -lkstat -lm -lthread -lpthread --- > OTHERLDFLAGS = -xarch=v9 -L/opt/oracle/product/10.2.0/client_1/lib/ \ -L/opt/oracle/product/10.2.0/client_1//rdbms/lib/ -lclntsh \ `cat /opt/oracle/product/10.2.0/client_1/lib/sysliblist` -R/opt/oracle/product/10.2.0/client_1/lib \ -laio -lposix4 -lkstat -lm -lthread -lpthread
Üldiselt on tark enne Perli kasutamist veenduda, et niisama sqlplus kliendiga saab andmebaasi kasutada, nt selline skript võiks töötada
use strict; use DBI; my $dbh = DBI->connect( 'dbi:Oracle:host=IP.AA.DRE.SS;sid=SID_VAARTUS', 'kasutajanimi', 'parool', { RaiseError => 1, AutoCommit => 0 } ) || die "Database connection not made: $DBI::errstr"; my $sql = qq{ SELECT nimi, vanus from klassifikaator }; my $sth = $dbh->prepare( $sql ); $sth->execute(); my ( $nimi, $vanus ); $sth->bind_columns( undef, \$nimi, \$vanus ); while( $sth->fetch() ) { print "$nimi, $vanus\n"; } $sth->finish(); $dbh->disconnect();
Oracle andmebaasiga ühendumisel saab kasutada ka tnsnames.ora faili, kui seal on sektsioon
orcl = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = orcl.loomaaed.tartu.ee)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = kala.orcl.loomaaed.tartu.ee)))
siis peaks olema skriptis rida
my $dbh = DBI->connect( 'dbi:Oracle:orcl', 'kasutajanimi', 'parool', { RaiseError => 1, AutoCommit => 0 } ) || die "Database connection not made: $DBI::errstr";
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;
Andmebaasitarkvara uuendamine
TODO
Automatic Storage Management (ASM) kasutamine
ASM on üldiselt soovitatud viis andmebaasi andmete hoidmiseks. Tavaliselt tähendab see seda, et andmeid ei hoita mitte tavalises failisüsteemis paiknevates failides vaid andmebaasile on antud kasutamiseks seadmed ning Oracle tegeleb ise otse seadmega suhtlemisega. ASM esineb spetsiaalse andmebaasi kujul, mida kasutab üldotstarbeline andmebaas, kus kasutajatele ja rakendustele olulisi andmeid hoitakse.
ASM kasutamiseks tuleb andmebaasi paigaldusmeedialt käivitada ./runInstaller, valida Advanced ning ASM ning paigaldada spetsiaalne Oracle installatsioon eraldi ORACLE_HOME'i, nt kataloogi /opt/oracle/asm ning seejärel see käivitada
bash$ export ORACLE_SID="+ASM" bash$ export ORACLE_HOME="/opt/oracle/asm" bash$ sqlplus / as sysdba SQL> startup bash$ lsnrctl start
ASMi paigaldamise järel tuleb ASM seadistada, peaasjalikult seisneb see ASMile kettaseadmete näitamises, mida ta kasutama hakkab. Lõpuks tuleb käivitada Cluster Synchronization Services (CSS) deemon
bash# /etc/rc.d/init.d/init.cssd start
Kas deemon töötab, saab kontrollida selliselt
bash$ crsctl check cssd CSS appears healthy
Kui ASM iseensest toimib, saab kasutajate ja rakenduste jaoks mõeldud Oracle baasi dbca abil baase moodustades valida storage'ks ASM.
asmcmd utiliide abil saab muidu tavaliste unixi failisüsteemi vahendite abil ligipääsmatu ASMi jaoks eraldatud storage sisuga tutvuda. Lisaks saab ASMi kasutava üldotstarbelise Oracle andmebaasi Enterprise Manageri veebiliidese kaudu vaadata ASM omadusi.
Paikamine
bash$ cd 5601428 bash$ opatch apply Invoking OPatch 10.2.0.1.0 Oracle interim Patch Installer version 10.2.0.1.0 Copyright (c) 2005, Oracle Corporation. All rights reserved.. Oracle Home : /u01/app/oracle/product/10.2.0/db_1 Central Inventory : /u01/app/oracle/oraInventory from : /u01/app/oracle/product/10.2.0/db_1/oraInst.loc OPatch version : 10.2.0.1.0 OUI version : 10.2.0.1.0 OUI location : /u01/app/oracle/product/10.2.0/db_1/oui Log file location : /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch-2007_Aug_30_08-37-29-EEST_Thu.log
ApplySession applying interim patch '5601428' to OH '/u01/app/oracle/product/10.2.0/db_1' OPatch detected non-cluster Oracle Home from the inventory and will patch the local system only. Backing up files and inventory (not for auto-rollback) for the Oracle Home Backing up files affected by the patch '5601428' for restore. This might take a while... Backing up files affected by the patch '5601428' for rollback. This might take a while... Patching component oracle.rdbms.rsf, 10.2.0.1.0... Copying file to "/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/utltzuv2.sql" Copying file to "/u01/app/oracle/product/10.2.0/db_1/oracore/zoneinfo/timezdif.csv" ApplySession adding interim patch '5601428' to inventory
OPatch succeeded.
Rakendatud paikade nimekiri
bash$ opatch lsinventory Invoking OPatch 10.2.0.1.0 Oracle interim Patch Installer version 10.2.0.1.0 Copyright (c) 2005, Oracle Corporation. All rights reserved.. Oracle Home : /u01/app/oracle/product/10.2.0/db_1 Central Inventory : /u01/app/oracle/oraInventory from : /u01/app/oracle/product/10.2.0/db_1/oraInst.loc OPatch version : 10.2.0.1.0 OUI version : 10.2.0.1.0 OUI location : /u01/app/oracle/product/10.2.0/db_1/oui Log file location : /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch-2007_Aug_30_08-40-56-EEST_Thu.log Lsinventory Output file location : /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory-2007_Aug_30_08-40-56-EEST_Thu.txt -------------------------------------------------------------------------------- Installed Top-level Products (1): Oracle Database 10g 10.2.0.1.0 There are 1 products installed in this Oracle Home. Interim patches (1) : Patch 5601428 : applied on Thu Aug 30 08:37:34 EEST 2007 Created on 19 Feb 2007, 16:07:29 hrs US/Pacific Bugs fixed: 5126270, 5238255, 5601428
-------------------------------------------------------------------------------- OPatch succeeded.
Paiga tagasivõtmine
bash$ opatch rollback -id 5601428
Backupist taastamine
Üheks võimaluseks on sooritada selline järgnevus, eeldusel, et andmebaas on selleks sobivalt ettevalmistatud
- Andmebaas seisata, nt
sql> shutdown immediate
- Andmebaas käivitada külgeühendatult
sql> startup mount
- Liikuda ajas tagasi
$ ORACLE_HOME/bin/rman target / nocatalog RUN { SET UNTIL TIME "TO_DATE('01-OCT-2008 15:50:00','DD-MON-YYYY HH24:MI:SS')"; RESTORE DATABASE; RECOVER DATABASE; }
- Lõpuks ütelda
sql> ALTER DATABASE OPEN RESETLOGS;
Katkiste andmebaasi objektide ümberkompileerimine
Vahel tekib andmebaasi muudatuste tegemise tulemusena katkisi objekte, mida vahel saab parandada ümberkompileerimisega (või dropimisega, võib vaadata metalinkist infot juurde)
Avaleht -> All Metrics -> Invalid objects by schema -> valida objekt -> Invalid objects
Ümberkompileerimise õnnestumisel öeldakse
All objects selected have been successfully compiled and become valid objects, they are removed from the invalid objects result table. Successfully Recompiled Objects - DCM.VALIDATE_COMPONENT
Probleemid
- Alates 2008 aasta paikadest on 10.2.0.4 baas reegline https://domeeninimi:1158/em/ aadressil, st mitte enam http://
- 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.
- Tavaliselt ei õnnestu peale Oracle 10g andmebaasi tarkvara uuendamist muudel süsteemi kasutajatel kasutada andmebaasi utiliite, nt sqlplus programmi või Perli DBD::Oracle mooduli kaudu Oracle teeke. Nimelt, uuendamise käigus rakendatakse vaikimisi tagasihoidlikud failisüsteemi loabitid. Loabittide reläksimiseks on olemas utiliit $ORACLE_HOME/install/changePerm.sh, mille kasutamine toimub selliselt
oracle$ ./changePerm.sh ------------------------------------------------------------------------------- Disclaimer: The purpose of this script is to relax permissions on some of the files in the database Oracle Home so that all clients can access them. Please note that Oracle Corporation recommends using the most restrictive file permissions as possible for your given implementation. Running this script should be done only after considering all security ramifications. ------------------------------------------------------------------------------- Do you wish to continue (y/n) [n]: y Finished running the script successfully Please see /tmp/changePerm_err.log for errors and /tmp/changePerm.log for the log of events
Kasutaja parooli ajutiseks muutmiseks tuleb sys kasutajana sisse logida ja öelda
SQL> select username,password from dba_users where username='SCOTT'; USERNAME PASSWORD ------------------------------ ------------------------------ SCOTT F894844C34402B67 SQL> alter user SCOTT identified by uusparool; User altered.
Ja vana tagasipanemiseks
SQL> alter user SCOTT identified by values 'F894844C34402B67'; User altered.