09/09/14

centos 6.5 (64bit) - installazione oracle 10r2 (64bit)

Step by step su come installare su una distro a 64 bit, Oracle RDBS a 64bit: ver. 10 g.
Come prima cosa scaricare la versione 10.2.0.1 e la patch alla 10.2.0.5 dai metalink di Oracle.


Attivita' preliminari
Controllare se sono correttamente installati i seguenti pacchetti (rpm) fondamentali per l'installazione dell'RDBMS:
- libXp 
- libXtst
- libXt
- binutils 
- compat-db 
- compat-libstdc
- glibc 
- glibc-devel
- glibc-headers
- gcc 
- gcc-c
- libstdc
- cpp
- make 
- libaio
- libaio
- libaio-devel 
- glibc-devel 
- glibclibgcc 
- compat-libstdc
- compat-libf2c
- compat-gcc
- compat-libgcc

inoltre assicurarsi che sia correttamente installata la versione a 32bit della seguente libreria glibc-devel.
In perticolare:
- glibc-devel.i686


Per le librerie mancanti usare il comando:

#yum install nome.pacchetto


Creazione usente oracle e gruppi: oinstall / dba
# groupadd oinstall
# groupadd dba
# useradd -d /home/oracle -g oinstall -G dba -s /bin/bash oracle
# passwd oracle

la home dell'utente e' /home/oracle mentre come vedremo piu' avanti, il motore e i datafile li mettero' su posizioni diverse in modo da separare il tutto.

Modifica file /etc/security/limits.conf inserendo i seguenti parametri:
oracle    soft  nproc  2047
oracle    hard  nproc  16384
oracle    soft  no file  1024
oracle    hard  nofile  65536
Per applicare i seguenti limiti in fase di riavvio (e login) modificare il file /etc/pam.d/login aggiungendo la seguente linea:
session required /lib64/security/pam_limits.so

Modifica del file /etc/sysctl.conf (i seguenti valori vanno modificati se e solo se sono inferiori a quelli impostati sulla macchina o vanno aggiunti se mancanti): 
fs.file-max = 65535
# maximum size in bytes of a single shared memory segment 
# that a Linux process can allocate in its virtual address space.
# with 64GB of RAM, we set the max segment size at 60GB, thus the 
# SGA cannot be larger than 60GB for one database instance
kernel.shmmax = 64424509440

# total amount of shared memory pages that can be used system wide.
# Hence, SHMALL should always be at least ceil(shmmax/PAGE_SIZE). 
# with 60GB of RAM and a page size at 4KB
kernel.shmall = 15728640

# system wide maximum number of shared memory segments
kernel.shmmni = 4096

# control the number of semaphores on the system
kernel.sem = 2048 262144 2048 128

# usuable port range
net.ipv4.ip_local_port_range = 9000 65500

# default OS receive buffer size in bytes 
net.core.rmem_default = 262144

# max OS receive buffer size in bytes 
net.core.rmem_max = 4194304

# default OS transmit buffer size in bytes 
net.core.wmem_default = 262144

# max OS transmit buffer size in bytes 
net.core.wmem_max = 1048576

IMPORTANTE
Prima di installare Oracle, assicurarsi che sul file hosts (/etc/host) sia presente il nome della macchina in modo da non avere problemi con il “listener” in fase di avvio. In particolare eseguire da root il seguente comando:

#hostname
riportare il nome completo dell'hostname sul file hosts cosi' come compare a video e assegnarlo all'indirizzo fisico della macchina stessa.
Nel mio caso era: ("matrix.azienda.local")
#vi /etc/hosts
10.1.1.215     matrix.azienda.local
127.0.0.1       localhost.domain.com      localhost

Inoltre disabilitare il firewall di Linux (SELINUX) da file /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted
# SETLOCALDEFS= Check local definition changes
SETLOCALDEFS=0


Cambiare la versione della sistro mettendo redhat-4 sul file /etc/redhad-release al posto di cento6.5 (come utente root). Fare una copia del file originale e in modo da poterlo ripristinare al termine dell'installazione di Oracle:

#cp /etc/redhat-release /etc/redhat-release.orig
#vi  /etc/redhat-release
"Centos release (6.5) final" che va sostituito con "redhat-4"


Riavviare la macchina (come root): 
#reboot now

Installazione di Oracle

Connettersi come utente oracle precedentemente creato:
#su - oracle

quindi unzippare il file:
# gunzip 10201_database_linux_x86_64.cpio.gz
# cat 10201_database_linux_x86_64.cpio |cpio -idmv

assicurarsi che il runInstaller ha i diritti di esecuzione cosi' come il file .oui che si trova dentro la cartella "install"; 
# cd database
#chmod 777 runInstaller
# cd install .oui
#chmod 777 

quindi:
#cd ..
# ./runInstall -ignoreSysPrereqs

Durante l'installazione di Oracle decidere la ORACLE_HOME, dove risiede il "motore" oracle il servizio; consiglio di creare l'istanza in un secondo momento e non durante l'installazione del motore oracle.

Al termine dell'installazione impostare le variabili di ambiente sul file dell'utente oracle .bash_profile

#vi .bash_profile

export ORACLE_BASE=/opt/db-oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=xxxxxxxx


Prima di creare l'istanza Oracle, si deve installare la patch scaricata dal sito metalink di Oracle. Nel mio caso la 10.2.0.5.
Scompattata viene creato il folder "Disk1" dove troviamo il file runInstaller.
Ripetere i passi precedenti.


Come detto inizialmente il motore l'ho installato in /opt diverso dalla home dell'utente oracle. Mentre i dati, nel caso di filesystem dedicati ai dati, consiglio in fase di creazione dell'istanza tramite il software dbca di mettere i datafile sul filesystem dedicato.


Terminata l'installazione di Oracle, per creare l'istanza come utente oracle:
#dbca
Quindi al termine eseguire sempre come utente oracle:
#netca
per la configurazione del listener e del tnsnames.