Tuesday, February 4, 2014

Oracle DB - Instalacija 11gR2 na Windows Server 2003 x32


U ovom postu predstaviću postupak instalacije Oracle baze podataka na serveru sa Windows operativnim sistemom.  

Hardverski zahtjevi za instalaciju Oracle baze podataka variraju zavisno za od toga koja se verzija Oracle baze podataka instalira i na kojem se to operativnom sistemu instalira.

O ovom primjeru instaliraću Oracle 11gR2 (11.2.0.4) x32 bazu podataka na Windows Server 2003 SP2 x32 operativni sistem.


Priprema instalacije

Za ovu instalaciju potrebno je ispuniti sledeće hardverske zahtjeve:

- RAM memorija mora biti veća od 1GB, ja na raspolaganju imam 2GB.

- Virtualna (SWAP) memorija mora biti duplo veća od raspoložive RAM memorije, u ovom slučaju to je 4GB.

- CPU mora raditi na taktu koji je veći od 800MHz-a, moj CPU radi na 3.1GHz-a.

- Potrebno je imati minimum 6GB slobodnog prostora na hard disku servera, ja imam tri particije: C:\ od 10GB, E:\ od 7GB i F:\ od 10GB.

- Video kartica na serveru mora podržavati minimum 256 boja.


Download potrebnog softvera

Softver za kreiranje Oracle RDBMS baze podataka može se download-ovati sa Oracle-ovog sajta. Da bi mogli download-ovati software morate imati kreiran nalog, nalog se može kreirati na ovoj stranici.

Download linkovi za Oracle 11gR2 (11.2.0.1.0) bazu podataka su:

win32_11gR2_database_1of2.zip
win32_11gR2_database_2of2.zip

U ovom primjeru ja ću instalirati Oracle 11gR2 bazu podataka sa poslednjim PatchSet-om (11.2.0.4) koji je dostupan samo za Oracle partnere, ali postupak istalacije je isti kao i za osnovnu verziju Oracle 11gR2 baze podataka.

Instalaciju trenutno aktuelne Oracle 12cR1 baze podataka predstaviću u nekom narednom postu jer se ta instalacija, zbog uvođenja novih funkcionalnosti, značajno razlikuje od instalacije prethodnih verzija Oracle RDBMS baze podataka.


Instalacija Oracle RDBMS softvera

1. Raspakovati download-ovane fajlove:

- Prvi fajl:






Note: Fajlove obavezno raspakovati u ISTI folder.

- Drugi fajl:





2. Pokrenutu instalaciju

Instalacija se pokreće dvoklikom na setup.exe


Setup provjerava da li su ispunjeni svi hardverski i softverski preduslovi za instalaciju Oracle 11gR2 baze podataka, ako je sve uredu pokreće se Oracle Universal Installer:



Rasčekirati ček-boks i pritisnuti dugme: Next.



Čekirati: Skip software updates i pritisnuti na dugme: Next.

Čekirati: Install database software only i pritisnuti dugme: Next.



Čekirati: Single instance database installation i pritisnuti dugme: Next.



Ako je potrebno da baza prepoznaje naše karaktere: č, ć, ž, đ i š potrebno je odabrati Croatian iz lijevog panela i prebaciti ga u desni panel. Nakon toga pritisnuti dugme Next.

Čekirati: Personal Edition (instalaciju radimo zbog vježbe i testiranja) i pritisnuti dugme Next.



Definisati Oracle Base (root lokacija za instalaciju Oracle softvera) lokaciju i pritisnuti dugme Next.

Sačekati da installer provjeri da li su svi potrebni parametri za instalaciju Oracle softvera ispunjeni:




Ako je sve uredu može se početi sa instalacijom Oracle 11gR2 Database softvera pritiskom na dugme: Install.

Startuje se instalacija Oracle 11gR2 database softvera:



Nakon 20-ak minuta (zavisno od resursa sa kojima server raspolaže) instalacija se završava:


Pritisnuti na dugme: Close.

Ovim je završena instalacija Oracle 11gR2 Database softvera, sada je potrebno kreirati bazu.


Kreiranje Oracle 11gR2 baze podataka

Oracle baza podataka kreira se pomoću posebnog alata: Database Configuration Assistant-a (DBCA). Da bi se moglo pristupiti bazi mora se kreirati poseban servis koji je zadužen za komunikaciju između baze i korisnika, njegovo ime je LISTENER.

Za kreiranje LISTENER servisa koristi se alat: NETCA (Network Configuration Assistant).

Procedura je sledeća:

1. Pokrenuti CMD (Command Prompt) i kucati komandu: NETCA i zatim pritisnuti Enter




2. Startuje se alat NETCA


3. Čekirati: Listener configuration i pritisnuti dugme Next (Slijedeći)


4. Čekirati: Add i pritisnuti dugme Next



5. Unijeti ime servisa (ili ostaviti default-ni naziv) i pritisnuti dugme Next


6. Samo pritisnuti dugme Next


7. Pritisnuti dugme Next


8. Čekirati: No i pritisnuti dugme Next


9. Pritisnuti dugme Next


10. Na kraju pritisnuti dugme End (Završavanje)

11. Provjeriti status LISTENER servisa pomoću komande: lsnrctl status


Sada se može kreirati i baza.

Procedura kreiranja Oracle Baze podataka je sledeća:

1. Pokrenuti CMD (Command Prompt) i kucati komandu: DBCA i zatim pritisnuti Enter



2. Startuje se alat DBCA


3. Pritisnuti dugme Next


4. Čekirati: Create a Database i pritisnuti dugme Next


5. Čekirati: General Purpose or Transaction Processing i pritisnuti dugme Next


6. Unijeti ime baze (max 8 karaktera) i pritisnuti dugme Next


7. Unijeti lozinku za sistemske naloge i pritisnuti dugme Next


8. Samo pritisnuti dugme Next


9. Ostaviti default-na podešenja i pritisnuti na dugme Next



10. Samo pritisnuti na dugme Next


Ovdje sve ostaviti default-ne vrijednosti.


Na tabu Character Sets (ukoliko je potrebno da baza prepoznaje naše karaktere) podesiti kao na slici.

11. Pritisnuti na dugme Next


12. Samo pritisnuti na dugme Next


13. Na kraju pritisnuti dugme Finish


14. Na Create Database Summary prozoru pritisnuti na dugme OK. Nakon toga počinje proces kreiranja Oracle baze podataka:






15. Na kraju pritisnuti dugme Exit. Oracle baza podataka je sada instalirana i spremna je za rad.








Tuesday, January 28, 2014

Oracle DB - User/Schema


Za pristup Oracle bazi podataka (odnosno podacima u bazi) koriste se korisnički nalozi. Ti korisnički nalozi nazivaju se USER-i. To su "obični" korisnički nalozi, pored njih postoje i "specijalni" korisnički nalozi koji se nazivaju SCHEMA-e. SCHEMA-ma se nazivaju oni USER-i koji imaju privilegije da kreiraju objekte (tabele, view-e, procedure ili funkcije) i koji posjeduju neki od objekata na bazi. Dakle, SCHEMA-e su USER-i koji posjeduju svoje podatke u Oracle bazi podataka, a USER-i su korisnički nalozi (korisnici) kojima se daju privilegije za pristup određenim podacima čiji su vlasnici SCHEMA-e.

Prilikom instalacije Oracle baze podataka kreiraju se i neke default-ne SCHEMA-e od kojih su najvažnije SCHEMA-e SYS i SYSTEM. Spisak ostalih default-nih USER-a/SCHEMA možete pogledati na link-u.

SYS SCHEMA je vlasnik Oracle Data Dictionary-a, odnosno Catalog-a. Catalog sadrži sve podatke o samoj bazi, njenoj strukturi i konfiguraciji. SYS je ujedno i glavni (ROOT) administratorski nalog na bazi. Koristi se za administraciju same baze. Prilikom konekcije na bazu sa nalogom SYS mora se navesti i sa kojom se ROLE-om vrši konekcija. Moguće ROLE su SYSDBA i SYSOPER.

SYSTEM je default-ni DBA (Administratorski) nalog na bazi. Koristi se za administraciju korisnika na bazi, i u određenoj mjeri za administraciju same baze podataka.




Da bi kreirali USER-a na Oracle bazi podataka moramo se prvo prijaviti na bazu kao SYSTEM user:

$ sqlplus /nolog



SQL*Plus: Release 11.2.0.4.0 Production on Tue Jan 28 12:14:03 2014



Copyright (c) 1982, 2013, Oracle.  All rights reserved.



SQL> conn system

Enter password:

Connected.

SQL>


Zatim izvršimo naredbu za kreiranje USER-a:

SQL> create user testuser1 identified by testpass1;



User created.


Ovom naredbom kreiran je USER testuser1 sa lozinkom testpass1. Ovako kreiran USER nema nikakve privilegije na bazi, čak ne može ni pristupiti bazi. Da bi USER testuser1 mogao pristupiti bazi moraju mu se dati privilegije za to:

SQL> grant create session to testuser1;



Grant succeeded.


Sada se user testuser1 može ulogovati na bazu ali ne može ništa drugo uraditi. Da bi USER mogao nešto raditi na bazi za to mu se moraju dodati odgovarajuća prava. Korisnička prava USER-u mogu se dati i dodavanjem ROLE-a (skupa privilegija/prava). Neke od "ugrađenih" ROLE-a su: connect, resource i dba. Moguće je kreirati i custom ROLE.

Komanda za kreiranje SCHEMA-e je slična komandi za kreiranje USER-a, takođe, mora je izvršiti SYSTEM user:

SQL> CREATE USER testschema1 IDENTIFIED BY testpass2 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;



User created.


Sada je potrebno dodati odgovarajuće privilegije SCHEMA-i testschema1:

SQL> grant connect, resource to testschema1;



Grant succeeded.


Konektujmo se na bazu kao USER testschema1:

SQL> conn testschema1

Enter password:

Connected.


Sada možemo kreirati neku tabelu u SCHEMA-i testschema1:

SQL> CREATE TABLE korisnici (ID NUMBER(3) PRIMARY KEY,Ime VARCHAR2(10) NOT NULL,Prezime VARCHAR2(16),Datum_kreiranja DATE DEFAULT (sysdate));



Table created.



SQL> select * from cat;



TABLE_NAME                     TABLE_TYPE

------------------------------       -----------

KORISNICI                           TABLE



Unesimo neki podatak u tabelu korisnici:

SQL> insert into korisnici(ID,Ime,Prezime,Datum_kreiranja) values(1,'Suad','Adrovic',sysdate);



1 row created.



SQL> select * from korisnici;



        ID   IME        PREZIME          DATUM_KREI

----------  ---------- ----------------       ----------

         1    Suad       Adrovic               28.01.2014


Dodajmo  sada pravo pregleda tabele korisnici USER-u testuser1:

SQL> grant select on korisnici to testuser1;



Grant succeeded.


Provjerimo sada da li USER testuser1 ima pristup tabeli korisnici čiji je vlasnik SCHEMA testchema1:

SQL> conn testuser1
Enter password:
Connected.

SQL> select * from testschema1.korisnici;



          ID      IME        PREZIME          DATUM_KREI

---------- ----------    ----------------          ----------

         1        Suad             Adrovic          28.01.2014



Spisak privilegija i ROLE-a koje USER/SCHEMA mogu imati možete pogledati na link-u.


Thursday, January 23, 2014

Oracle DB - "geneza" - strip


Na sajtu OracleAlchemist.com našao sam ovaj smiješni strip o "genezi"  Oracle baze podataka i morao sam da ga objavim.




Razumjeće ga svi Oracle database administratori.




Windows/Linux server - Quick Info


Često se desi da moram izvršiti intervenciju na nekom serveru čije karakteristike ne znam. Najbrži i najlakši način da saznam sve što me interesuje o datom serveru jeste upotreba odgovarajućih sistemskih komandi.

Ako je na serveru instaliran Windows OS sve informacije mogu dobiti pomoću samo jedne komande.

Procedura je sledeća:

1. Ulogovati se na server sa administratorskim privilegijama

2. Pokrenuti Command Prompt (Start -> Run -> cmd)

3. Otkucati komandu:

systeminfo


Pomoću komande systeminfo moguće je dobiti sve neophodne informacije o Operativnom Sistemu i sve informacije o hardware-u koji je instaliran na serveru.

Output navedne komande izgleda ovako:



Radi lakše analize moguće je kreirati tekstualni fajl komandom:

systeminfo > SysInfo.txt 


Kada je u pitanju Unix/Linux OS za brzo dobijanje informacija o serveru najbolje je koristiti neku shell skriptu. Ja najčešće korisitim skripu:


#!/bin/bash
#
SYSINFO=`head -n 1 /etc/issue`
IFS=$'\n'
UPTIME=`uptime`
D_UP=${UPTIME:1}
MYGROUPS=`groups`
DATE=`date`
KERNEL=`uname -a`
CPWD=`pwd`
ME=`whoami`
CPU=`arch`

printf "<=== SYSTEM ===>\n"
echo "  Distro info:    "$SYSINFO""
printf "  Kernel:\t"$KERNEL"\n"
printf "  Uptime:\t"$D_UP"\n"
free -mot | awk '
/Mem/{print "  Memory:\tTotal: " $2 "Mb\tUsed: " $3 "Mb\tFree: " $4 "Mb"}
/Swap/{print "  Swap:\t\tTotal: " $2 "Mb\tUsed: " $3 "Mb\tFree: " $4 "Mb"}'
printf "  Architecture:\t"$CPU"\n"
cat /proc/cpuinfo | grep "model name\|processor" | awk '
/processor/{printf "  Processor:\t" $3 " : " }
/model\ name/{
i=4
while(i<=NF){
        printf $i
        if(i<NF){
                printf " "
        }
        i++
}
printf "\n"
}'
printf "  Date:\t\t"$DATE"\n"
printf "\n<=== USER ===>\n"
printf "  User:\t\t"$ME" (uid:"$UID")\n"
printf "  Groups:\t"$MYGROUPS"\n"
printf "  Working dir:\t"$CPWD"\n"
printf "  Home dir:\t"$HOME"\n"
printf "\n<=== NETWORK ===>\n"
printf "  Hostname:\t"$HOSTNAME"\n"
ip -o addr | awk '/inet /{print "  IP (" $2 "):\t" $4}'
/sbin/route -n | awk '/^0.0.0.0/{ printf "  Gateway:\t"$2"\n" }'
cat /etc/resolv.conf | awk '/^nameserver/{ printf "  Name Server:\t" $2 "\n"}'


Procedura za kreiranje i izvršavanje shell skripte je sledeća:

1. Kopirati navedenu skriptu

2. Na Unix/Linux serveru pokrenuti terminal (kao root user) ili uspostaviti SSH konekciju sa radne stanice (takođe, kao root user)

3. Kreirati shell script fajl komandom:

 # vi info.sh

4. Pritisnuti taster "i" i paste-ovati kopiranu skriptu u ovaj fajl

5. Snimiti fajl i izaći iz VI editora na sledeći način: pritisnuti dugme ESC i kucati komandu

:wq

6. Napraviti izvršnu shell skriptu komandom:

# chmod +x info.sh


7.  Pokrenuti skriptu komandom:

# ./info.sh


Dobijaju se sledeće informacije:



Takođe, i ovdje je moguće kreirati tekstualni fajl radi lakše analize, komanda je slična:

# ./info.sh > SysInfo.txt




Tuesday, January 21, 2014

Oracle DB - Instanca


Oracle baznu instancu čini rezervisani memorijski prostor na serveru i skup Oracle baznih procesa. Pod rezervisanim memorijskim prostorom podrazumijeva se prostor u RAM memoriji servera koji je Oracle baza podataka "rezervisala" za sebe. Taj prostor u RAM-u servera naziva se SGA (System Global Area). Pored SGA prostora, Oracel baza podataka "zauzima" dodatni prostor u RAM-u za rad svojih procesa. Taj prostor u RAM-u naziva se PGA (Program Global Area).

SGA

Oracle SGA predstavlja ovir memorijskog prostora koji je potreban procesima Oracle baze podataka za njihov rad. U okviru SGA prostora izdvajaju se posebne memorijske (buffer) cjeline. Najtipičnije memorijske cjeline u okviru SGA memoriskog prostora su:

buffer cache ili "database buffer cache" - predstavlja prostor u RAM-u u koji se smještaju podaci koji su pročitani iz baznog data fajla s ciljem dalje obrade pomoću SQL naredbi

shared pool - predstavlja memorijski keš (cache) parsiranih često korišćenih SQL naredbi

redo log buffer - sadrži informacije o komitovanim transakcijama koje baza još nije upisala u Redo Log fajl

dictionary cache - sadrži informacije o data dictionary (sistemskim) tabelama, kao npr. informacije o korisničkim nalozima, data-fajlovima, segmentima, ekstentima, tabelama i privilegijama

java pool - služi za parsiranje JAVA naredbi

library cache - sadrži SQL naredbe, PL/SQL procedure i pakete, kao i kontrolne strukture kao npr. lock-ove

large pool - je prostor u RAM-u koji je rezervisan za posebne sistemske operacije: Backup/Restore, serverske I/O operacije, ...


Pored ovih memorijskih struktura postoje i neke druge, ali one se kreiraju zavisno od opcija koje Oracle baza koristi. Neke od dodatnih memorijskih struktura su: streams pool, nk buffer cache (n veličina baznog bloka), itd.

Grafički, SGA bi mogla da se predstavi na sledeći način:


Veličina SGA memorije definiše se prilikom instalacije Oracle baze podataka, a moguća je i naknadna modifikacija njene veličine. Počevši od 10g verzije Oracle baze podataka uvodi se i novi pojam vezan za SGA, a to je Automatic Memory Management (AMM). AMM obogućava automatizaciju podešavanja SGA memorijskog prostora, uvode se novi parametri, ... ali o tome će mo kasnije.


Oracle bazni procesi

Drugu komponentu Oracle bazne instance čine Oracle bazni procesi. Osnovi Oracle bazni procesi su:

database writer (DBWn) - proces koji je zadužen za upisivanje sadržaja baznog buffer cache-a u data fajl. n označava redni broj procesa

log writer (LGWR) - proces koji je zadužen za upisivanje redo log podataka u Redo Log fajl. Redo log podaci se generišu u redo log baferu u okviru SGA memorije

checkpoint (CKPT) - u specifičnim vremenskim intervalima bazni proces DBWn vrši upisivanje svih modifikovanih podataka koji se nalaze u baznom baferu SGA memorije u bazni data fajl. Taj događaj se naziva checkpoint

system monitor (SMON) - proces izvršava proceduru za oporavak instance prilikom njenog startovanja u slučaju da je instanca nepropisno prestala sa radom. SMON, takođe, vrši brisanje privremenih (temporary) segmenata koji se više ne koriste kao i oporavak "mrtvih" transakcija koje su nastale "padom" sistema
 
process monitor (PMON) - proces koji je zadužen za oporavak korisničkog procesa u slučaju da je došlo do nekog problema prilikom rada korisnika na bazi. PMON proces zadužen je i za "čišćenje" keša (cache-a) i oslobađanje resursa koje je korisnički proces koristio

archiver (ARCn) - proces koji je zadužen za kopiranje (arhiviranje) "punih" Redo Log-ova prije njihovog brisanja. ARCn proces postoji samo ako Oracle baza radi u ARCHIVE LOG modu.


Pored nabrojanih procesa postoji još veliki broj procesa koji se aktiviraju u slučaju da je uključena neka dodatna opcija na Oracle bazi podataka .


Instanca se grafički može predstaviti na sledeći način:





Thursday, January 16, 2014

Oracle DB - Koncept i terminologija


Ako na nekom serveru imamo instaliranu Oracle RDBMS bazu podataka takvu instalaciju nazivamo ORACLE Server.

ORACLE Server se sastoji iz dvije komponente: Instance i Baze podataka. Često se javlja zabuna tako da ljudi miješaju ova dva pojma. Objasnimo ih:

Instancu čine Oracle procesi i alocirana memorija (SGA + PGA) na serveru. Instanca omogućava rad korisnika sa Oracle bazom podataka.

Bazu podataka predstavljaju svi bazni fajlovi koji se nalaze na fajl sistemu servera, a to su: Oracle Data fajlovi, Redo log fajlovi, kontrolni fajlovi i inicijalizacioni fajlovi.

Miješanje pojmova Instance i baze podataka najverovatnije je posledica njihovog imenovanja, naime pri instalaciji Oracle RDBMS baze podataka na jedanom serveru ime instance i baze podataka je isto:

SQL> select instance_name from v$instance;



INSTANCE_NAME

----------------

ora11g



SQL> select name from v$database;



NAME

---------

ORA11G


Ali prilikom klasterskih (RAC) instalacija Oracle RDBMS baze podataka na dva ili više servera kreira se samo jedna baza (sa jedinstvenim imenom) i veći broj instanci (na svakom serveru klastera po jedna).

Oracle baznu instancu detaljnije ću objasniti na nekom od sledećih postova.





Windows - Spisak instaliranog software-a


Ovo je, po meni, najlakši i najbrži način dobijanja spiska svog instaliranog software-a na Windows operativnom sistemu.

Procedura je sledeća:

1. Kopirati skriptu:


Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE
strComputer = "."
strKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
strEntry1a = "DisplayName"
strEntry1b = "QuietDisplayName"
strEntry2 = "InstallDate"
strEntry3 = "VersionMajor"
strEntry4 = "VersionMinor"
strEntry5 = "EstimatedSize"

Set objReg = GetObject("winmgmts://" & strComputer & _
 "/root/default:StdRegProv")
objReg.EnumKey HKLM, strKey, arrSubkeys
WScript.Echo "Installed Applications" & VbCrLf
For Each strSubkey In arrSubkeys
  intRet1 = objReg.GetStringValue(HKLM, strKey & strSubkey, _
   strEntry1a, strValue1)
  If intRet1 <> 0 Then
    objReg.GetStringValue HKLM, strKey & strSubkey, _
     strEntry1b, strValue1
  End If
  If strValue1 <> "" Then
    WScript.Echo VbCrLf & "Display Name: " & strValue1
  End If
  objReg.GetStringValue HKLM, strKey & strSubkey, _
   strEntry2, strValue2
  If strValue2 <> "" Then
    WScript.Echo "Install Date: " & strValue2
  End If
  objReg.GetDWORDValue HKLM, strKey & strSubkey, _
   strEntry3, intValue3
  objReg.GetDWORDValue HKLM, strKey & strSubkey, _
   strEntry4, intValue4
  If intValue3 <> "" Then
     WScript.Echo "Version: " & intValue3 & "." & intValue4
  End If
  objReg.GetDWORDValue HKLM, strKey & strSubkey, _
   strEntry5, intValue5
  If intValue5 <> "" Then
    WScript.Echo "Estimated Size: " & Round(intValue5/1024, 3) & " megabytes"
  End If
Next



2. Negdje na fajl sistemu kreirati fajl soft.vbs i u njega kopirati skriptu iz koraka 1.

3. Pokrenuti Windows Command Prompt (Start -> RUN: cmd) i pozicionirati se u folder gdje je smještena skripta soft.vbs.

4. Skriptu pokrenuti pomoću sledeće komande:

 cscript //nologo soft.vbs > install.txt


Na primjer, ako je skripta smještena u root direktorijumu C: diska, to bi izgledalo ovako:






Nakon toga dobija se fajl install.txt koji sadrži spisak svog instaliranog software-a na sistemu.