Mesaje recente

Members
Stats
  • Total Posts: 17,786
  • Total Topics: 1,234
  • Online today: 202
  • Online ever: 340
  • (22 November 2024, 00:10)
Users Online
Users: 0
Guests: 179
Total: 179

TUTORIAL: Instalare Oracle RDBMS 9i/10g/10gR2 pe Linux

Started by kman, 04 December 2006, 23:48

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

kman

La cererea lui kquizak m-am apucat sa scriu acest mic tutorial de instalare a Oracle RDBMS pe un sistem Linux oarecare.

Oficial Oracle nu suporta decat versiunile enterprise de Linux de la RedHat, SuSE, UnitedLinux si Asianux, neoficial merge pe orice versiune de Linux indeajuns de decenta, doar ca nu toate feature-urile functioneaza as expected, in special componentele de integrare cu mediul enterprise (LDAP, Enterprise Manager, si altele care nu imi mai vin acuma in minte), ideea e ca pentru functionalitatea de baza e OK.

Deci,.. hai la drum:

Pasul 1: Alocarea spatiului pe disc
In general, daca sunteti doar dezvoltatori si testati feature-uri simple ale aplicatiei la care lucrati nu va puneti problema performantei sau a spatiului alocat, deci e de ajuns sa creati o singura partie dedicata pentru oracle undeva pe disc, ar fi bine sa aiba in jur de 10GB pentru a avea loc pentru o cantitate rezonabila de date.
Pe sistemele de productie, se face distinctie intre loc-ul in care se plaseaza binarele si locul in care se pun fisierele de date, unii DBA-i prefera chiar sa aiba fiecare datafile pe un volume group separat stocat pe un system de storage cat de cat decent (RAID5+0 si multi GB liberi), dar asta nu face obiectul acestui tutorial.
E de ajuns deci sa creati o partitie si sa o montati in /oracle (asta e locatia pe care o prefer eu si o voi folosi de acum incolo in acest tutorial)

Pasul 2: Crearea utilizatorilor
Eu prefer sa creez la instalare 1 grup (dba, gid=1500) si 1 utilizator cu rol de DBA (oracle, uid=1500), cu home-ul in /oracle/home.

Pasul 3: Crearea directoarelor de instalare
Locatia preferata pentru instalarea binarelor este /oracle/product/$MAJOR_VERSION, unde $MAJOR version poate fi 9.2, 10.1 sau 10.2 (sau ce alta versiune majora o mai fi), cel putin asta e preferinta mea, daca se instaleaza mai multe produse, gen ClusterWare, DeveloperSuite sau companion CD, atunci se prefera inca un subdirector in $MAJOR_VERSION numit db. Pentru moment presupun ca instalati versiunea 10.2 deci directorul de instalare va fi /oracle/product/10.2.

Pasul 4: Parametri de kernel
Oracle RDBMS e o aplicatie foarte consumatoare de resurse si anumiti parametri de kernel trebuie adaptati in consecinta pentru a-i permite sa ruleze in conditii optime.
Pentru ajustarea parametrilor de kernel se foloseste utilitarul sysctl. Un exemplu de fisier de configurare (recomandat de RedHat) gasiti mai jos:

# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.
fs.aio-max-size = 1048576
fs.file-max = 327680
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.ip_forward = 0
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128

Unii parametri (in special cei de aio) s-ar putea sa nu existe pe sistemele voastre, si vor genera warning-uri la rularea comenzii de activare a parametrilor sysctl -e -p /etc/sysctl.conf. In caz ca sistemul vostru nu executa comanda de mai sus la boot ar fi bine sa o puneti de mana intr-un fisier care se executa imediat dupa boot, pe majoritatea functioneaza /etc/rc.local.

Pasul 5: Profilul de DBA
Profilul de DBA si cel de utilizator obisnuit de oracle ar trebui sa contina setate cel putin urmatoarele valori:

export ORACLE_BASE=/oracle
export ORACLE_VERSION=10.2
export ORACLE_HOME=$ORACLE_BASE/product/$ORACLE_VERSION
export ORACLE_TERM=xterm
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export ORACLE_SID=<sid-ul-bazei> # acesta va fi definit dupa crearea bazei
export PATH=$ORACLE_HOME/bin:$PATH:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export TWO_STEP=$ORACLE_SID # pentru a va putea log-a la baza fara a mai specifica sid-ul
uname 022


In cazul in care optati sa instalati versiunea 9i (9.0, 9.1 sau 9.2), in profilul de DBA mai trebuie setate si urmatorii parametri

LD_ASSUME_KERNEL="2.4.19"
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/X11R6/lib
LD_PRELOAD=$ORACLE_BASE/libcwait.so


Ati observat probabil referinta la LD_PRELOAD, aceasta se datoreaza unei modificari in glibc (de la 2.1 la 2.2) prin care simbolul __libc_wait nu mai este vizibil catre userland. Aceasta modificare face ca versiunea 1.3 de Java folosita de installer-ul si aplicatiile de Oracle 9i sa nu functioneze corect pe sistemele bazate pe glibc 2.2. Pentru a permite lucrul normal este necesar sa compilati manual biblioteca libcwait.so al carei cod sursa il gasiti mai jos:
Code (c) Select

#include <errno.h>
#include <sys/syscall.h>
#include <sys/types.h>
#include <sys/wait.h>
pid_t
__libc_wait (int *status)
{
  int res;
  asm volatile ("pushl %%ebx\n\t"
                "movl %2, %%ebx\n\t"
                "movl %1, %%eax\n\t"
                "int $0x80\n\t"
                "popl %%ebx"
                : "=a" (res)
                : "i" (__NR_wait4), "0" (WAIT_ANY), "c" (status), "d" (0),
                  "S" (0));
  return res;
}

Acesta se compileaza folosind comanda gcc -O2 -shared -o $ORACLE_BASE/libcwait.so -fpic $ORACLE_BASE/libcwait.c.

Pasul 6: Instalarea propriu-zisa
In acest moment sunteti pregatiti sa rulati installer-ul de oracle, daca nu rulati pe un sistem de clasa enterprise din cele mentionate mai sus, cel mai probabil trebuie sa rulati installerul folosind comanda <cale_pachet>/Disk1/runInstaller -ignoreSysPreReqs.
Atentie folosind acest parametru renuntati la orice fel de suport din partea Oracle pentru instalare, dar cum voi vreti sa faceti instalarea pe un sistem nesuportat cred ca nici nu vistati la suportul Oracle, foarte bun calitativ de altfel, dar si foarte scump.
Daca nu vreti sa va mai complicati, puteti lasa installer-ul sa va creeze automat o baza pentru inceput.
Atentie, daca lasati installer-ul sa creeze baza trebuie sa modificati de mana parametrul ORACLE_SID dupa ce baza a fost creata.

Pasul 7: Crearea unei baze
Daca nu ati permis installer-ului sa creze o baza in timpul instalarii puteti crea una manual cu ajutorul comenzii dbca. Pentru detalii referitoare la parametrizarea procesului de creare e bine sa apelati la un manual mai stufos de Oracle, deci nu voi intra in detalii.

Pasul 8: Crearea fisierului tnsnames.ora si listener.ora
Dupa ce ati creat baza, trebuie sa va puteti si conecta la ea, asta se configureaza cel mai simplu cu ajutorul tool-ului netca, la fel pentru detalii va sfatuiesc calduros sa apelati la manualele on-line de la oracle. Cele doua fisiere le veti gasi dupa creare in directorul /oracle/10.2/network/admin.

Pasul 9: Pornirea manuala a bazei
In general, Oracle creaza niste scripturi ajutatoare pentru pornirea si oprirea bazei, insa acestea nu sunt tocmai suficiente, si pe sistemele nesuportate, adesea nu merg.
Pentru a porni baza manual, trebuie ca utilizatorul oracle sa ruleze urmatoarele comenzi:

lsnrctl start LISTENER
sqlplus sys/sys as sysdba
SQL>startup


Cam atat pentru moment. Ghidul de mai sus are doar un caracter general informativ, cu timpul voi incerca sa-l mai imbunatatesc daca apar comentarii sau probleme.
Cel mai bun prieten al vostru in aceasta operatiune de instalare este totusi google si site-ul de documentatie on-line al Oracle. Pentru clientii Oracle, cei care au platit banii grei la nenea Eliot, exista si un excelent site de suport numit metalink de unde se pot downloada patch-uri, howto-uri si accesa forumurile de suport tehnic, din pacate aceste servicii sunt pe bani grei.

Cateva link-uri utile:
http://www.redhat.com/docs/manuals/csgfs/Oracle_GFS-en-US/index.html - Instalare de clasa Enterprise, abia astept sa-mi pice si mie in mana un proiect din asta :)
http://linux.togaware.com/survivor/Oracle_10g.html - ghid exhaustiv de instalare Oracle pe Debian
Sper ca cele scrise mai sus sa va fie de ajutor,
  Cristi

kquizak

si eu mi-am batut capul putin si am reusit sa instalez oracle 10gR2 asa(vreo 3 erori)...
rechizite necesare gcc,make,rpm,libaio,zip si poate mai sunt...

dupa cum a zis kman tre' sa ai un sistem enterprise,asa ca noi o sa facem un redhat enterprise din k/ubuntu(sau orice debian) asa...

$:ln -s /usr/bin/awk /bin/awk
$:ln -s /usr/bin/rpm /bin/rpm
$:ln -s /usr/bin/basename /bin/basename
$:ln -s /etc /etc/rc.d


mai trebuie sa facem asta..

$: kate /etc/redhat-release sau gedit
si scriem asta "Red Hat Linux release 3.0 (drupal)"


face directoarele necesare instalarii...

mkdir -p /u01/app/oracle
mkdir -p /u02/oradata
chown -R oracle:oinstall /u01 /u02
chmod -R 775 /u01 /u02


ne pregatim userii si grupurile...

$:userdel nobody
$:groupadd oinstall
$:groupadd dba
$:groupadd nobody
$:useradd -g oinstall -G dba -p passwd -d /home/oracle oracle -s /bin/bash[code]

$:useradd -g nobody nobody
[/code]

decomentam in /etc/pam.d/login si in /etc/pam.d/su linia session   ' required     /lib/security/pam_limits.so'
adaugam in  /etc/security/limits.conf :

*               soft    nproc   2047
*               hard    nproc   16384
*               soft    nofile  1024
*               hard    nofile  65536


in  /etc/profile punem urmatoarea bucla if:


if [ $USER = "oracle" ]; then
           ulimit -u 16384 -n 65536
fi

editati /home/oracle/.bashrc:

umask 022
PATH=${PATH}:/u01/app/oracle/oracle/product/10.2.0/db_1/bin/

ORACLE_HOME=/u01/app/oracle/oracle/product/10.2.0/db_1/
ORACLE_SID=orcl
ORATAB=/etc/oratab
ORACLE_HOME_LISTNER=$ORACLE_BASE
ORACLE_BASE=$ORACLE_HOME

export ORACLE_BASE ORACLE_SID ORATAB ORACLE_HOME ORACLE_HOME_LISTNER


deschideti terminal unde ati descarcat si dezarhivat arhiva(/database) si executati urmatoarele:

xhost +
sudo su
su oracle
ORACLE_BASE=/u01/app/oracle
ORACLE_SID=orcl
export ORACLE_BASE ORACLE_SID
unset ORACLE_HOME
unset TNS_ADMIN
ORATAB=/etc/oratab
umask 022
./runInstaller


aaaa....folositi sudo

restul povestii o cititi din ce a scris kman
network-tools.ath.cx ---nmap yourself

kman

Oh my god, ce-ai facut tu acolo e bastardizare sinistra a sistemului, ce-ai avut cu /etc si /etc/rc.d ? Dar de /etc/redhat-release de ce te-ai luat ?
Singura chestie care e eleganta in tot ce-ai pus tu acolo e modificarea in limits.conf de care eu am uitat.
Separarea /u01, /u02 e intr-adevar recomandata de Oracle dar din experienta pot sa-ti spun ca nu o folosc nici macar 10% din DBA, iar a rula ./runInstaller cu sudo e o idee nu tocmai inspirata.

In fine, merge, dar dupa cum ziceam, ai omorat musca cu tunul.

kquizak

network-tools.ath.cx ---nmap yourself