giovedì 6 agosto 2009

Installare Oracle Rac 11g su Centos 5.2

SCENARIO:
2 server che montano antrambi 4 interfacce di rete configurate in bonding
1 storage scsi
1 switch Gigabit Atlantis Land

ORACLE SARA' INSTALLATO IN QUESTA MODALITA':
OCR e VOTING DISK su dischi raw devices esterni (su storage scsi, quindi ridondanza esterna)
DATI su disco esterno non formattato gestito da Oracle ASM (su storage scsi, quindi ridondanza esterna)

Software:
Oracle 11g (11.1.0.6) Database & Clusterware Software
OS: Centos 5.2
Ciascuno dei due server monta 2 dischi da 70 Gb in RAID1 hardware così partizionati:
/dev/sda1 19Gb /
/dev/sda2 32Gb /data
/dev/sda3 10Gb swap

INSTALLAZIONE SERVER CENTOS:

Configurazione:

Server 1:
hostname: db1
IP (Public): 192.168.111.21 in channel bonding
IP (Private): 192.168.112.21 in channel bonding

Server 2:
hostname: db2
IP (Public):192.168.111.22 in channel bonding
IP (Private):192.168.112.22 in channel bonding


Pacchetti selezionati in fase di installazione OS:

Desktop Environments
KDE Desktop Environment
Applications
Editors
Graphical Internet
Text-based Internet
Development
Development Libraries
Development Tools
Legacy Software Development
Servers
Server Configuration Tools
Base System
Administration Tools
Base
Java
Legacy Software Support
System Tools
X Window System

I packages sotto riportati ( o le loro successive versioni) sono necessari per l'installazione del cluster Oracle (da installare attraverso il comando yum install NOMEPACKAGE ). Nel nostro caso si installeranno le seguenti versioni packages x86_64:
binutils-2.17.50.0.6-2.el5
compat-libstdc++-33-3.2.3-61
elfutils-libelf-0.97-5
elfutils-libelf-devel-0.125
glibc-2.5-12
glibc-common-2.5-12
glibc-devel-2.5-12
gcc-4.1.1-52
gcc-c++-4.1.1-52
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.1-52
libstdc++-4.1.1
libstdc++-devel-4.1.1-52
make-3.81-1.1
sysstat-7.0.0
unixODBC-2.2.11
unixODBC-devel-2.2.11
sg3_utils

Scaricare inoltre da internet ed installare anche i seguenti pacchetti rpm:

rpmforge-release-0.3.6-1.el5.rf
redhat-release-5Server-5.1.0.2.src.rpm

Interfacce Channel Bonding
Centos permette agli amministratori di unire le interfacce di rete multiple insieme in un singolo canale usando il modulo del kernel bonding e una interfaccia di rete speciale chiamata interfaccia channel bonding. Il channel bonding permette a due o più interfacce di agire come se fossero una unica interfaccia aumentando simultaneamente la larghezza della banda fornendo così ridondanza.
Per creare una interfaccia channel bonding, creare un file nella directory /etc/sysconfig/network-scripts/ chiamato ifcfg-bond, sostituendo con il numero per l'interfaccia, come ad esempio 0.
Il contenuto del file può essere identico a qualsiasi tipo di interfaccia alla quale ci si sta legando come ad esempio una interfaccia Ethernet.
La sola differenza è che la direttiva DEVICE= deve essere bond sostituendo con il numero per l'interfaccia.
Il seguente è un esempio del file di configurazione channel bonding:

DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
NETWORK=192.168.111.0
NETMASK=255.255.255.0
IPADDR=192.168.111.21
USERCTL=no

Dopo aver creato l'interfaccia channel bonding, le interfacce di rete da unire devono essere configurate aggiungendo le direttive MASTER= e SLAVE= ai loro file di configurazione. I file di configurazione per ogni interfaccia channel bonded, possono essere quasi identici.
Per esempio, se il channel bonding unisce due interfacce Ethernet, eth0 e eth1, i due file delle interfacce potrebbero somigliare al seguente esempio:

DEVICE=eth
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

In questo esempio, sostituire con il valore numerico per l'interfaccia.
Il modulo del Kernel deve essere caricato per far si che l'interfaccia channel bonding possa essere valida. Per assicurarsi che il modulo sia stato caricato quando si usa l'interfaccia channel bonding aggiungere la seguente riga a /etc/modprobe.conf:

alias bond0 bonding
options bond0 miimon=80 mode=3

L'opzione mode determina la modalità di bonding (in questo caso trasmette in broadcast con tutte le interfacce garantendo la massima fault tolerance).
Per ogni interfaccia channel bonding configurata ci dovrebbe essere una entry di questo genere corrispondente in /etc/modprobe.conf


PREPARAZIONE DEI DISCHI DELLO STORAGE /dev/sdd /dev/sde
/dev/sdd ---------> un'unica partizione /dev/sdd1 da 500 Gb destinata ad accogliere i data files
/dev/sde ---------> due partizioni: a) /dev/sde1 da 500 Mb RAW device per files Oracle Registry
b) /dev/sde2 da 500 Mb RAW device per files Voting Disk
Importante: non formattare nessuna delle tre partizioni create!!!!

Per vedere i dischi /dev/sde1 e /dev/sde2 come raw devices su entrambi i server occorre fare due operazioni:

1)creare il file /etc/sysconfig/rawdevices in cui scrivere quanto segue:

/dev/raw/raw1 /dev/sde1
/dev/raw/raw2 /dev/sde2

2)creare il file /etc/udev/rules.d/60-raw.rules in cui scrivere quanto segue:

ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw1 %N"

ACTION=="add", KERNEL=="sde2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="raw*", OWNER=="oracle", GROUP=="dba", MODE=="0660"

L'ultima riga è importante perchè i raw devices devono appartenere all'utente oracle.
Una volta fatto tutto ciò fare un riavvio della macchina e verificare che i sistemi vedano i raw devices appartenenti ad oracle.
Il comando per listare i raw devices è: raw -aq
Il comando per verificare i permessi dei raw devices: ls -lash /dev/raw/raw*

Creiamo l'ambiente per Oracle.

1)Creazione di utenti e gruppi
Come utente root eseguire sequenzialmente:

groupadd -g 501 oinstall
groupadd -g 502 dba
useradd -g oinstall -G dba -s /bin/ksh oracle
passwd oracle

2)Configurare kernel parameters e shell limits
Editare il file /etc/sysctl.conf come utente root e verificare l'esistenza ed i valori assegnati ai seguenti parametri(quelli presenti non devono essere inferiori a quelli sotto riportati):

kernel.sem = 250 32000 100 128
kernel.shmmax = 536870912
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144

Per far avere effetto immediato ai cambiamenti tira il seguente comando: /sbin/sysctl –p

3) File /etc/hosts

a)server db1:
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6

192.168.112.21 db1priv1
192.168.111.31 db1vip
192.168.112.22 db2priv1
192.168.111.32 db2vip
192.168.111.222 db2
192.168.111.221 db1

b)server db2:
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6

192.168.112.21 db1priv1
192.168.111.31 db1vip
192.168.112.22 db2priv1
192.168.111.32 db2vip
192.168.111.222 db2
192.168.111.221 db1

4) Come utente root creare le seguenti dir e darne la ownership all'utente oracle:

mkdir -p /u01/app/crs
mkdir /u01/app/oracle/product/11.1.0/db_1
chown -R oracle:oinstall /u01/app
mkdir /u02/oradata/orcl/arch
chown -R oracle:oinstall /u02

Settare le variabili di ambiente dell'utente oracle:
Editare il file .bash_profile dell'utente oracle aggiungendo quanrto sotto riportato:
(Nota: quando setti le variabili di ambiente Oracle per ogni nodo del cluster assicurati
che ogni nodo abbia un unico Oracle SID!
Nel nostro caso abbiamo usato questi:

db1 : ORACLE_SID=db1
db2 : ORACLE_SID=db2

Loggati con l'utente oracle su ogni nodo ed aggiungi le seguenti variabili al .bash_profile (attenzione che l'ORACLE_SID varia a seconda del nodo db su cui ci troviamo!):

# User specific environment and startup programs
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1
export ORA_CRS_HOME=/u01/app/crs
export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
# Each RAC node must have a unique ORACLE_SID. (i.e. db1, db2,...)
export ORACLE_SID=db1
export PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp

Nel nostro esempio ORACLE_SID su db1 è db1, su db2 è db2

Scrivere i shell limits per l'utente Oracle
Come utente root aggiungi le seguenti linee al file /etc/security/limits.conf :

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

Se non esiste il file creare /etc/pam.d/login ed aggiungere come penultima riga:

session required pam_limits.so

Aggiungere nel file /etc/profile :

if [ $USER = “oracle” ]; then
if [ $SHELL = “/bin/ksh” ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi

Creare le dir di destinazione degli archive logs.
Come utente root:
mkdir /data/arch
ln -s /data/arch /u02/oradata/orcl/arch
chown -R oracle:oinstall /data/arch
chown oracle:oinstall /u02/oradata/orcl/arch

Abilitare la SSH User Equivalency
L'Oracle Universal Installer usa comandi ssh e scp durante l'installazione per eseguire comandi remoti e copiare files sugli altri nodi del cluster. Per questo bisogna settare la “user equivalency” per l'utente Oracle su tutti i nodi.
Come utente oracle (nella sua home dir) sul nodo cluster db1 eseguire:

mkdir ~/.ssh
chmod 700 ~/.ssh
/usr/bin/ssh-keygen -t rsa
Nota: Lasciare vuota la passphrase e battere invio.

Come utente oracle sul nodo cluster db2 eseguire:

mkdir ~/.ssh
chmod 700 ~/.ssh
/usr/bin/ssh-keygen -t rsa
Nota: Lasciare vuota la passphrase e battere invio.

Come utente oracle sul nodo cluster db1 eseguire:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh db2 "cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys"

Come utente oracle copiare la chiave pubblica generata in db1 su db2 e viceversa
su db1: scp ~/.ssh/id_rsa.pub 192.168.111.22:/home/oracle/.ssh/id_rsa.pub.db1
su db2: scp ~/.ssh/id_rsa.pub 192.168.111.21:/home/oracle/.ssh/id_rsa.pub.db2

Come utente oracle copiare le chiavi pubbliche copiate dentro i file authorized_keys

su db1: cat ~/.ssh/id_rsa.pub.db2 >> ~/.ssh/authorized_keys
su db2: cat ~/.ssh/id_rsa.pub.db1 >> ~/.ssh/authorized_keys

Eseguire i seguenti comandi di verifica su entrambi i nodi come utente Oracle:

ssh db1 date
ssh db2 date
ssh db1priv1 date
ssh db2priv1 date


Installare i packages ASMLib
Scarica dal sito della Oracle il software ASM che include i seguenti packages (noi installiamo a 64 bit):
ASMLib Kernel Driver: oracleasm-2.6.18-53.el5-2.0.4-1.el5.x86_64.rpm
Userspace Library: oracleasmlib-2.0.3-1.el5.x86_64.rpm
Driver Support Files: oracleasm-support-2.0.4-1.el5.x86_64.rpm

Installiamo gli rpm scaricati come utente root con il seguente comando:

rpm -iv oracleasm-2.6.18-53.el5-2.0.4-1.el5.x86_64.rpm
rpm -iv oracleasm-support-2.0.4-1.el5.x86_64.rpm

rpm -iv oracleasmlib-2.0.3-1.el5.x86_64.rpm


Configurare e caricare i packages ASMLib 2.0
Come utente root su entrambi i nodi lancia il seguente comando:

/etc/init.d/oracleasm configure

L'output del comando appena tirato sarà questo:

Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets (’[]’). Hitting without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Fix permissions of Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: [ OK ]
Loading module “oracleasm”: [ OK ]
Mounting ASMlib driver filesystem: [ OK ]
Scanning system for ASM disks: [ OK ]

Creare il disco ASM destinato ad accogliere i dati
Come utente root sul nodo db1 (o su db2, ma NON su entrambi) esegui:

/etc/init.d/oracleasm createdisk DATA /dev/sdd1

L'output di questo comando sarà:

Marking disk /dev/sdd1 as an ASM disk: [ OK ]

Ora verifichiamo il nuovo disco ASM configurato
Come utente root su entrambi i nodi esegui i seguenti comandi:

# /etc/init.d/oracleasm scandisks

# /etc/init.d/oracleasm listdisks

L'output di questi comandi su entrambi i nodi del cluster dovrà essere questo:

[root@db1]# /etc/init.d/oracleasm scandisks
Scanning system for ASM disks: [ OK ]
[root@db2]# /etc/init.d/oracleasm scandisks
Scanning system for ASM disks: [ OK ]
[root@db1]#/etc/init.d/oracleasm listdisks
DATA
[root@db2 etc]#/etc/init.d/oracleasm listdisks
DATA

Fatto questo ora siamo pronti ad installare Oracle Clusterware.


Scaricare il software Oracle RAC 11g
Loggarsi sul nodo db1 sul quale saranno eseguite tutte le installazioni Oracle
attraverso l'utente oracle.
In questo esempio scaricheremo il software Oracle necessario su db1 e lo salveremo
nella dir /home/oracle/install.
Il software da scaricare(VERSIONE x86_64 in questo caso) dal sito www.oracle.com
è il seguente:

Oracle Clusterware 11g Release 1 (11.1.0.6.0)
Oracle Database 11g Release 1 (11.1.0.6.0)

Tutti i download sono disponibili dalla stessa pagina.
Come utente oracle estrai i due pacchetti scaricati nella dir temporanea
/home/oracle/install in questo modo:

cd /home/oracle/orainstall
unzip linux_11gR1_clusterware.zip
unzip linux_11gR1_database.zip


Installare Oracle Clusterware

Verificare il server e abilitare l'accesso al server X
# hostname
db1
xhost +
access control disabled, clients can connect from any host

Loggarsi come utente oracle e settare la variabile DISPLAY (se necessario perchè stai usando un client
remoto per connetterti al nodo per eseguire l'installazione)

DISPLAY=:0.0
export DISPLAY

Ora possiamo lanciare l'installazione del software cluster:

cd /home/oracle/install/clusterware
/home/oracle/orainstall/clusterware/runInstaller

Si apre la GUI di installazione.
Seguire le seguenti voci passo per passo:

Welcome Screen
Cliccare Next
Specify Inventory directory and credentials
Accetta i valori di default:
Inventory directory: /u01/app/oraInventory
Operating System group name: oinstall
Clicca Next per continuare
Specify Home Details (for crs)
Setta il Name e il Path come ORACLE_HOME di crs (la $ORA_CRS_HOME che abbiamo
messo
nel .bash_profile) :
Name: OraCrs11g_home
Path: /u01/app/crs
Clicca Next per continuare
Product-Specific Prerequisite Checks
L'installer lancerà una serie di checks per determinare se il nodo soddisfa i
requisiti minimi per l'installazione di Oracle Clusterware Software. Se qualcuno
di questi fallisce devi verificarli manualmente cliccando nel checkbox e ripetendo
il controllo. Nella mia installazione tutti i check sono passati senza problemi.
Clicca Next per continuare.
Specify Cluster Configuration
Cluster Name: db
Public Node - Name Private Node - Name Virtual Host Name
db1 db1priv1 db1vip
db2 db2priv1 db2vip

NB: i private nodes e i vip nodes devono essere inseriti nel file /etc/hosts di
entrambi i servers
Specify Network Interface Usage
Bond0 192.168.111.0 Public
Bond1 192.168.112.0 Private
Specify OCR Location
Scegliere External Redundancy ed indicare la OCR location come /dev/raw/raw1
Specify Voting Disk Location
Scegliere External Redundancy ed indicare la Voting Disk location
come /dev/raw/raw2
Summary
Cliccare Install per iniziare l'installazione!
Execute Configuration scripts
Una volta che l'installazione è completa comparirà una finestra in cui viene richiesta
l'esecuzione di due scripts come utente root su entrambe le macchine. Apri una finestra
terminale ed esegui questi scripts come utente root su ciascun nodo. Scegli OK per
continuare
dopo che i due scripts sono stati eseguiti con successo su entrambi i nodi.NON
ESEGUIRE
SIMULTANEAMENTE GLI SCRIPTS SU ENTRAMBI I NODI (fai prima un nodo e
poi l'altro!!!!)

Configuration Assistants
Esegue un controllo post installazione. Questo controllo potrebbe generare
errori. Se gli errori sono relativi al sistema operativo (per esempio oracle non riesce
a capire che versione di Red Hat sta usando) si possono tralasciare e dare la spunta di
verificato a mano. Se i problemi sono relativi a librerie mancantri allora vanno
verificati a fondo. Una volta verificato il tutto cliccare su Next.
End of Installation
Cliccare su Exit


Verificare lo stato del Clusterware
Esegui i seguenti comandi come utente root:
/bin/olsnodes -n
db1 1
db2 2

/u01/app/oracle/product/11.1.0/crs/bin/crsctl check crs
Cluster Synchronization Services appears healthy
Cluster Ready Services appears healthy
Event Manager appears healthy

Per avere altre informazioni dettagliate come utente root lanciare il seguente comando:
/u01/app/oracle/product/11.1.0/crs/bin/crs_stat -t -v
Name Type R/RA F/FT Target Status Host
ora.db1.gsd application 0/5 0/0 ONLINE ONLINE db1
ora.db1.ons application 0/3 0/0 ONLINE ONLINE db1
ora.db1.vip application 0/0 0/0 ONLINE ONLINE db1
ora.db2.gsd application 0/5 0/0 ONLINE ONLINE db2
ora.db2.ons application 0/3 0/0 ONLINE ONLINE db2
ora.db2.vip application 0/0 0/0 ONLINE ONLINE db2

Verificare Oracle Clusterware Auto-Start Scripts
$ ls -l /etc/init.d/init.*
-rwxr-xr-x 1 root root 2236 Oct 12 22:08 /etc/init.d/init.crs
-rwxr-xr-x 1 root root 5290 Oct 12 22:08 /etc/init.d/init.crsd
-rwxr-xr-x 1 root root 49416 Oct 12 22:08 /etc/init.d/init.cssd
-rwxr-xr-x 1 root root 3859 Oct 12 22:08 /etc/init.d/init.evmd


Installare il software Oracle Database 11g

Come utente oracle:
$ cd /home/oracle/install/database
$ /home/oracle/orainstall/database/runInstaller


Welcome Screen
Cliccare Next
Select Installation Type
Selezionare Standard Edition
Cliccare Next
Install Location
Lascia sia la default Oracle Base Location (/u01/app/oracle) sia la default
Oracle Home location (/u01/app/oracle/product/11.1.0/db_1).
Next per continuare
Specify Hardware Cluster Installation Mode
Lascia la default ‘Cluster Installation’ e seleziona entrambi i nodi.
Clicca Next per continuare.
Product-Specific Prerequisite Checks
La OUI ora verificherà che l'ambiente soddisfi tutti i requisiti necessari.
Tutti i passaggi pre-requisiti devono essere completati con successo.
Clicca Next per continuare.
Select Configuration Option
Scegli ‘Install Software Only’. Si userà più avanti il tool DBCA
(Database Configuration Assistant) per configurare ASM e creare il database.
Next per continuare.
Privileged Operating System Groups
Lascia le opzioni di defaults(dba, oinstall and oinstall).
Clicca Next per continuare.
Summary
Controlla il riepilogo di installazione e clicca su Install per cominciarla.
Install
Osserva il progresso dell'installazione
Configuration scripts
Una volta che l'installazione è completa comparirà una finestra che richiede
l'esecuzione come utente root di uno script. Apri una finestra di terminale ed eseguilo
su entrambi i nodi. Seleziona Ok per continuare dopo che lo script è stato eseguito
con successo su entrambi i nodi.
End of Installation
Cliccare su Exit


Creare istanze Oracle ASM
Lanciare in esecuzione DBCA (Database Configuration Assistant) per configurare ASM e creare un RAC database.
Apri una finestra terminale come utente oracle.
Dalla dir /u01/app/oracle/product/11.1.0/db_1/bin lancia dbca con il seguente comando:
$ ./dbca


Welcome Screen
Lascia la selezione di default (Oracle RAC database).
Next per continuare.
Operations
Seleziona Configure Automatic Storage Management.
Clicca Next.
Node Selection
Seleziona tutti i nodi.
Clicca Next per continuare
Create ASM Instance
Setta la “SYS password” per l'istanza ASM. Lascia il tipo di “parmeter file”
di default (IFILE) da creare.
Next per continuare.
Database configuration assistant
Scegli Ok per confermare la creazione dell'istanza ASM.
Scegli Yes per permettere a DBCA di creare i listeners di default.
ASM Disk Groups
Scegli “Create New” per creare un nuovo ASM disk groups.
Scrivi DATA come nome del disk group. Setta “Redundancy External” e
seleziona il data disk ORCL:DATA
Clicca Ok per continuare.
Il disk group DATA dovrà ora essere montato.
Seleziona il check box DATA e clicca il tasto Finish.
Database configuration assistant
Scegli Yes per eseguire la creazione del database.
Operations
Seleziona “Create a Database”.
Clicca “Next” per continuare.
Node Selection
Seleziona tutti i nodi e clicca su “Next” per continuare.
Database Templates
Lascia il default setting (General Purpose or Transaction Processing).
Clicca “Next” per continuare.
Database Identification
Inserisci “db” (senza le virgolette) come global database name.Il sid si scriverà in
automatico uguale al global database name.
“Next” per continuare.
Management Options
Lascia i defaults settings (“Configure Enterprise Manager” e “Configure
Database Control for local management” selezionati, ma “Enable Alert Notifications” e
“Enable Daily Disk Backup to Recovery Area” deselezionati).
Clicca su “Next” per continuare.
Database Credentials
Seleziona “Use the same Administrative Password for All Accounts” e
inserisci la password.
Clicca “Next” per continuare.
Storage Options
Seleziona “Automatic Storage Management”.
Clicca “Next” per continuare.
ASM Disk Groups
Seleziona il disk group DATA2 .
Clicca “Next” per continuare.

Database File Locations
Lascia la selezione di default (Use Oracle-Managed Files).
Controlla che +DATA2 compaia come Database Area.
Clicca “Next” per continuare.
Recovery Configuration
Togli la spunta a “Specify Flash Recovery Area”.
Seleziona “Enable archiving” e clicca sul bottone “Edit Archive Mode Parameters”.
Edit Archive Mode Parameters
Modifica l'Archive Log Destination in /u02/oradata/orcl/arch .
Clicca “OK” e poi “Next” per continuare.
Database Content
Non selezionare nulla.
Clicca Next per continuare.
Initialization Parameters
Riduci la ‘Memory Size’ al 25% e seleziona “Use Automatic Memory Management”.
Cliccare sul tab “Character Sets”.
Selezionare questi parametri(si selezioni il tipo di carattere necessario):
SET DEI CARATTERI DEL DB: AL32UTF8
SET DI CARATTERI NAZIONALI: AL16UTF16 - Unicode UTF-16 Universal character set
Lingua predefinita: Americano
Territorio predefinito: Stati Uniti
Lascia tutti gli altri parametri invariati.
Clicca “Next” per continuare.
Security Settings
Lascia la selezione di default.
Clicca “Next” per continuare.
Automatic Maintenance Tasks
Assicurarsi che sia selezionato “Enable automatic maintenance tasks” .
Cliccare “Next” per continuare.
Database Storage
Controlla le opzioni storage per tutti i files.
Clicca “Next” per continuare.
Creation Options
Seleziona “Generate database creation scripts”.
Clicca su ‘Finish’ per rivedere i parametri di installazione.
Summary
Seleziona “Ok” per chiudere la pagina riepilogativa.
Clicca su Finish per cominciare l'installazione.
Database Configuration Assistant
DBCA per prima cosa genererà gli scripts di creazione db che tu hai
selezionato prima. Un messaggio sarà visualizzato una volta che questa operazione
sarà terminata. Visto il messaggio starterà la creazione del db.
Database Configuration Assistant
Una volta che la creazione del db è terminata comparirà una finestra di riepilogo
con le informazioni del db.
Clicca su “Exit” per uscire dall'OUI.


Come utente oracle edita il file /etc/oratab su entrambi i nodi.
Sostituisci il nome del database con il nome dell'istanza per il database Rac
(per esempio sostituisci la parola db con db1 o db2 a seconda del nodo Rac su cui ti trovi).
Inoltre aggiungi i dettagli della tua home clusterware in questo file.
Questo ti permetterà di abilitare di settare la tua home Clusterware usando lo script oraenv.
Una volta editato il file /etc/oratab dovrà contenere quanto segue:
Sul nodo db1:
+ASM1:/u01/app/oracle/products/11.1.0/db_1:N
db1:/u01/app/oracle/products/11.1.0/db_1:N
crs:/u01/app/oracle/products/11.1.0/crs:N
Sul nodo db2:
+ASM2:/u01/app/oracle/products/11.1.0/db_1:N
db2:/u01/app/oracle/products/11.1.0/db_1:N
crs:/u01/app/oracle/products/11.1.0/crs:N


Riavviare entrambi i nodi e verificare che Oracle RAC 11g parta al boot.
La management console non starta al boot.
Per farla partire bisogna lanciare come utente oracle prima su db1 poi su db2
il seguente comando:

$ emctl start dbconsole

Con Oracle RAC11 la dbconsole va startata su tutti i nodi del cluster.
Ripetere lo stesso comando di start della console anche su db2
L'installazione del nostro Rac Oracle è terminata.


APPENDICE

DISINSTALLARE ORACLE RAC 11 g
Nel caso in cui in fase di installazione si commetta qualche errore ci possiamo trovare nelle condizioni di dover reinstallare tutto il software.
A tal fine per disinstallare Oracle Rac 11 g occorre eseguire queste operazioni:
A)come utente oracle lanciare il comando /home/oracle/install/database/runinstaller
e disinstallare il software db
B)come utente oracle lanciare il comando /home/oracle/install/clusterware/runinstaller
e disinstallare il software cluster
La disinstallazione di Oracle non termina qui perchè purtroppo la GUI non ripulisce del
tutto i server.
Bisogna quindi provvedere a mano, come utente root, a rimuovere tutto ciò che segue
su entrambi i nodi del cluster:
1)tutto il contenuto della dir /u01/app ECCETTO la dir asm
2)tutto il contenuto della dir /u02/oradata/orcl/arch
3)la directory /etc/oracle
4)i files /etc/oraInst.loc , /etc/oratab e /etc/inittab.crs
5)i files /usr/local/bin/coraenv , /usr/local/bin/dbhome , /usr/local/bin/oraenv
6)tutto il contenuto della dir /tmp
7)/etc/init.d/init.crs , /etc/init.d/init.crsd , /etc/init.d/init.cssd , /etc/init.d/init.evmd

Inoltre bisogna ripulire i dischi dello storage che sono stati marcati da ASM ed i raw devices.
Nel nostro caso li ripuliamo così:
A)dd if=/dev/zero of=/dev/raw/raw1 bs=1M count=10
B)dd if=/dev/zero of=/dev/raw/raw2 bs=1M count=10
C)dd if=/dev/zero of=/dev/sdd1 bs=1M count=10

Le macchine ora sono ripulite completamente e si può provvedere a reinstallare Oracle in tutta tranquillità.







mercoledì 5 agosto 2009

Usare Openswan per una vpn IPSEC

Openswan è una completa implementazione di IPSEC per i kernel Linux 2.0, 2.2, 2.4 e 2.6.

Su debian openswan è facilmente installabile usando apt.

La vpn che andremo a creare è attestata lato nostro su un firewall linux Debian (hostname: firewall) ed è configurata attraverso un software chiamato openswan. Dall'altra parte del tunnel l'altro peer è un router Cisco 3845.

Il nostro firewall ha due schede di rete: etho (pubblica) ed eth1 (privata)

Prima di iniziare la configurazione dobbiamo sempre stabilire con chi gestisce l'altro peer (sempre che non siamo noi a gestire entrambi!) le caratteristiche del tunnel IPSEC che andremo ad instaurare. Per questo motivo mando sempre una mail al mio dirimpettaio in cui scrivo:

" ...per permettere che la VPN funzioni correttamente sarà necessario che sia basata su un IPSEC vendor free senza features aggiuntive.
Altre caratteristiche:


Autenticazione: preshared key
Cifratura: 3DES
Hash: MD5
Diffie Helmann: Gruppo 2
Perfect Forward Secrecy: Disabilitata
Modalità VPN: tunnel
IKE: Main Mode
NAT-T: No "

I file di configurazione della vpn su cui andremo a lavorare lato nostro sono i seguenti:
/etc/ipsec.conf dove indicheremo l'include del file di configurazione
/etc/ipsec.secrets dove indicheremo la pre shared key per agganciarci al peer remoto
/etc/ipsec.d/CONNESSIONI-ATTIVE/con-nuovotunnel dove scriveremo tutti i parametri della connessione

Per non incorrere in problemi di natting e di criptazione dei dati sul firewall è stata aggiunta appositamente un'ulteriore interfaccia interna, eth1:1, che nel nostro esempio risponderà all'IP 192.168.72.2

Creiamo la directory /etc/ipsec.d/CONNESSIONI-ATTIVE in cui andremo ad inserire i file di configurazione delle vpn che andremo man mano a creare:

firewall#mkdir
/etc/ipsec.d/CONNESSIONI-ATTIVE

Dentro la dir appena creata scriveremo il nostro file di configurazione che chiameremo con-nuovaconnessione. Il contenuto del file sarà il seguente:

conn con-nuovaconnessione
type=tunnel #tunnel mode ipsec
left=IPPUBBLICODELNOSTROFIREWALL #the IP address of your OpenSWAN endpoint
leftnexthop=%defaultroute #default gateway
leftsubnet=192.168.72.2/32 # network behind your endpoint
right=IPPUBBLICODELLALTROPEER # Your IP, or %any for a road-warrior setup
rightnexthop=%defaultroute #defaultroute for road warrior unknown
rightsubnet=RETEPRIVATADELLALTROPEER/SUBNETMASK #network behind the PIX
esp=3des-md5 #esp: 3des, hmac: sha1
keyexchange=ike #use regular ike
compress=no #inserita per test
authby=secret #pre-shared secret, you can also use rsa nounces
auto=add #don't initiate tunnel, but allow incoming
pfs=no
spi=0x0 #use base spi of 0x0 for PIX
dpddelay=10
dpdtimeout=120
dpdaction=clear
rekey=yes

Per le singole voci del file di configurazione vi rimando alla vasta documentazione che si trova sul sito di openswan.
Ora andiamo a scrivere la pre shared key concordata dentro il file /etc/ipsec.secrets con questa modalità:

IPPUBBLICOMIOFIREWALL IPPUBBLICOALTROPEER : PSK "
presharedconcordata"

Attenzione: la pre shared key deve essere scritta dentro i doppi apici!
Fatto questo ci resta solo da inserire l'include del file di configurazione nel nostro file /etc/ipsec.conf:

include /etc/ipsec.d/CONNESSIONI-ATTIVE/con-nuovaconnessione

In questo momento abbiamo terminato la configurazione di ipsec.
Prima di provare a tirare su la vpn non dobbiamo dimenticarci però due cose:
1)aver creato l'interfaccia interna 192.168.2.72 sul nostro firewall
2)aver inserito le regole iptables per pemettere al nostro firewall di girare correttamente il traffico. Un esempio:
iptables -t nat -A POSTROUTING -s 192.168.72.0/24 --dst RETEPRIVATAALTROPEER/SUBNETMASK -j SNAT --to-source 192.168.72.2

Ora possiamo tirare su la nostra vpn con i seguenti comandi:

/etc/init.d/ipsec start
(solo se ipsec non era ancora stato avviato)
ipsec auto --verbose --up con-nuovaconnessione

Per verificare lo stato della vpn si può usare il seguente comando


ipsec auto --verbose --status

e verificare se sono in stato SA established sia ISAKMP che IPsec.
Esempio:

000 #153: "con-nuovaconnessione":500 STATE_MAIN_I4 (ISAKMP SA established); EVENT_SA_REPLACE in 871s; newest ISAKMP; lastdpd=-1s(seq in:0 out:0)
000 #152: "con-nuovaconnessione":500 STATE_QUICK_I2 (sent QI2, IPsec SA established); EVENT_SA_REPLACE in 25764s; newest IPSEC; eroute owner
000 #152: "con-nuovaconnessione" esp.2f26e857@IPPUBBLICOALTROPEER esp.2a9932cc@NOSTROIPPUBBLICO tun.0@
IPPUBBLICOALTROPEER tun.0@NOSTROIPPUBBLICO


Un ulteriore prova è quella di mettersi su una macchina dietro al nostro firewall e provare con hping3 a raggiungere una destinazione sulla rete privata dell'altro peer.
Mettendoci in ascolto con tcpdump sia sull'interfaccia privata del nostro firewall (192.168.2.72) sia su quella pubblica dovremmo vedere i pacchetti ragiiungere il firewall e venire incapsulati attraverso il tunnel verso la destinazione.
Un esempio di comando hping3 (supponiamo che la porta 80 della destinazione sia aperta) :
hping3 -S IPPRIVATORETEALTROPEER -p 80
Un esempio dei comandi tcpdump da tirare sul firewall:
1)tcpdump -i eth1:1 host IPPRIVATOALTROPEER verifica che i pacchetti giungano sull'interfaccia interna del firewall
2)tcpdump -i eth0 host IPPUBBLICOALTROPEER verifico che i pacchetti stiano venendo incapsulati e girati nel tunnel verso la destinazione.
Se i pacchetti vengono incapsulati e girati nel tunnela ma non tornano indietro è molto probabile che ci sia qualche problema di routing dall'altra parte del tunnel.
Nel caso in cui volessimo tirare giù la vpn:
ipsec auto --verbose --down con-nuovaconnessione