O data cu încheierea anului școlar 2012-2013 și începutul vacantei de vara presupun ca multi dintre voi vă pregătiți de concediu, cred că nu se putea găsi un moment mai prielnic în care sa testam o jucărie nouă, probabil și Larry Ellison s-a gândit la fel, de aceea a lansat noua versiune de baza de date Oracle 12c. Vă invit în următoarele rânduri să instalăm împreună două mașini virtuale cu Oracle 12c pe care le vom configura să funcționeze ca o singură bază de date.
Cei care au urmărit tutorialele mele precedente vă amintiți că în urma cu câteva luni am descris instalarea unui cluster de baza de date Oracle 11gR2, pentru cei care îmi vizitează blogul pentru prima oara ii invit sa citească seria tutorialelor pentru instalarea de RAC Oracle 11gR2.
Înainte de a începe avem nevoie de o instanta de Oracle Linux (sau RedHat) și de următoarele kituri de instalare:
Eu am ales sa instalez o instanta noua de linux pentru a exclude posibilele problemele care pot apărea din cauza unui conflict cu alte librarii instalate. Nu voi repeta toți pașii de instalare deoarece sunt identici cu cei de aici, singura excepție este la pasul 10 în care am configurat trei interfețe de rețea din VirtualBox:
- „Adapter 1” bifat, setat pe „NAT”,
- „Adapter 2” bifat, setat pe „Host-only Adapter”,
- „Adapter 3” bifat, setat pe „Internal Network”
setate ca în capturile de mai jos:
eth0: DHCP (Connect Automatically)
eth1: IP=192.168.56.101, Subnet=255.255.255.0, Gateway=192.168.56.1, DNS=192.168.56.101, Search=localdomain (Connect Automatically)
eth2: IP=192.168.1.101, Subnet=255.255.255.0, Gateway=<blank>, DNS=<blank>, Search=<blank> (Connect Automatically)
Configurări adiționale
- Dupa ce s-a finalizat instalarea sistemului de operare rulam yum update pentru actualizarea sistemului.
- Dacă nu ați dezactivat Security-Enhanced Linux atunci editați acum fișierul “/etc/selinux/config”
SELINUX=disabled
- In cazul in care nu ati dezactivat firewall-ul conform instrucțiunilor de aici atunci o puteți face rulând cele doua comenzi:
# service iptables stop # chkconfig iptables off
Pre installation setup
Vom folosi pachetul oracle-rdbms-server-12cR1-preinstall disponibil doar in repository-ul din Oracle Linux 6 pentru instalarea librăriilor și configurarea parametrilor sistemului de operare
# yum install oracle-rdbms-server-12cR1-preinstall -y
- Editați fișierul “/etc/hosts” și adăugați următoarele informații:
127.0.0.1 localhost.localdomain localhost
# Public
192.168.56.101 ora12-rac1.localdomain ora12
-rac1
192.168.56.102 ora12
-rac2.localdomain ora12
-rac2
# Private
192.168.1.101 ora12
-rac1-priv.localdomain ora12
-rac1-priv
192.168.1.102 ora12
-rac2-priv.localdomain ora12
-rac2-priv
# Virtual
192.168.56.103 ora12
-rac1-vip.localdomain ora12
-rac1-vip
192.168.56.104 ora12
-rac2-vip.localdomain ora12
-rac2-vip
Configurarea DNS-ului
Toate operațiile de mai jos se vor executa cu drept de root
- instalam pachetul
bind
:
yum install bind
editați fișierul “/etc/named.conf”
options {
listen-on port 53 { 127.0.0.1; 192.168.56.101; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "localdomain." IN {
type master;
file "localdomain.zone";
allow-update { none; };
};
zone "56.168.192.in-addr.arpa." IN {
type master;
file "56.168.192.in-addr.arpa";
allow-update { none; };
};
include "/etc/named.rfc1912.zones";
- Creați fișierul “/var/named/localdomain.zone” cu următorul conținut:
$TTL 86400 @ IN SOA localhost root.localhost ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS localhost localhost IN A 127.0.0.1 ora12-rac1 IN A 192.168.56.101 ora12-rac2 IN A 192.168.56.102 ora12-rac1-priv IN A 192.168.1.101 ora12-rac2-priv IN A 192.168.1.102 ora12-rac1-vip IN A 192.168.56.103 ora12-rac2-vip IN A 192.168.56.104 ora12-scan IN A 192.168.56.105 ora12-scan IN A 192.168.56.106 ora12-scan IN A 192.168.56.107
- Creați fișierul “/var/named/56.168.192.in-addr.arpa” cu următorul conținut:
$ORIGIN 56.168.192.in-addr.arpa. $TTL 1H @ IN SOA ora12-rac1.localdomain. root.ora12-rac1.localdomain. ( 42 3H 1H 1W 1H ) 56.168.192.in-addr.arpa. IN NS ora12-rac1.localdomain. 101 IN PTR ora12-rac1.localdomain. 102 IN PTR ora12-rac2.localdomain. 103 IN PTR ora12-rac1-vip.localdomain. 104 IN PTR ora12-rac2-vip.localdomain. 105 IN PTR ora12-scan.localdomain. 106 IN PTR ora12-scan.localdomain. 107 IN PTR ora12-scan.localdomain.
- După aceste configurări porniți serviciul de DNS:
#service named start
- Pentru a porni automat la rebootarea sistemului, executați:
#chkconfig named on
- Editați fișierul “/etc/resolv.conf”:
search localdomain
nameserver 192.168.56.101
- Verificați că funcționează astfel:
#nslookup ora12-scan.localdomain
Server: 192.168.56.101
Address: 192.168.56.101#53
Name: ora12-scan.localdomain
Address: 192.168.56.106
Name: ora12-scan.localdomain
Address: 192.168.56.107
Name: ora12-scan.localdomain
Address: 192.168.56.105
Editarea parametrului nproc
O data cu instalarea pachetului oracle-rdbms-server-12cR1-preinstall
a fost setat si parametrul nproc din fisierul /etc/security/limits.conf dar în Oracle Linux 6 acest parametru trebuie setat și în /etc/security/limits.d/90-nproc.conf astfel:
linia
* soft nproc 1024
trebuie sa fie inlocuita cu
* - nproc 16384
Network Time Protocol (NTP)
În acest tutorial vom folosi procesul Oracle Cluster Time Synchronization Service (ctssd) pentru a sincroniza data și ora intre noduri. Pentru asta va trebui să ștergem configurările serviciului Network Time Protocol (NTP), logat cu root:
#service ntpd stop
#chkconfig ntpd off
#mv /etc/ntp.conf /etc/ntp.conf.orig
#rm /var/run/ntpd.pid
Crearea directoarelor unde va fi instalat Oracle:
#mkdir -p /u01/app/grid12cR1
#mkdir -p /u01/app/oracle/db12cR1
#chown -R oracle:oinstall /u01
#chmod -R 775 /u01/
Profil utilizator
Logați-vă cu utilizatorul oracle și adaugați următoarele linii în fișierul “.bash_profile”
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=ora12-rac1.localdomain
export ORACLE_UNQNAME=cdbrac
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=/u01/app/grid12cR1
export DB_HOME=$ORACLE_BASE/db12cR1
export ORACLE_HOME=$DB_HOME
export ORACLE_SID=cdbrac1
export ORACLE_TERM=xterm
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
Crearea Discurilor Partajate
Oprim masina virtuala si rulam urmatoarele comenzi din linia de comanda a statie gazda:
Creăm discurile:
>VBoxManage createhd --filename "G:\VM\Ora12c RAC\asm1.vdi" --size 5120 --format VDI --variant Fixed
>VBoxManage createhd --filename "G:\VM\Ora12c RAC\asm2.vdi" --size 5120 --format VDI --variant Fixed
>VBoxManage createhd --filename "G:\VM\Ora12c RAC\asm3.vdi" --size 5120 --format VDI --variant Fixed
>VBoxManage createhd --filename "G:\VM\Ora12c RAC\asm4.vdi" --size 5120 --format VDI --variant Fixed
Le atașăm mașinii virtuale:
>VBoxManage storageattach "Ora12c RAC" --storagectl "SATA" --port 1 --device 0 --type hdd --medium "G:\VM\Ora12c RAC\asm1.vdi" --mtype shareable
>VBoxManage storageattach "Ora12c RAC" --storagectl "SATA" --port 2 --device 0 --type hdd --medium "G:\VM\Ora12c RAC\asm2.vdi" --mtype shareable
>VBoxManage storageattach "Ora12c RAC" --storagectl "SATA" --port 3 --device 0 --type hdd --medium "G:\VM\Ora12c RAC\asm3.vdi" --mtype shareable
>VBoxManage storageattach "Ora12c RAC" --storagectl "SATA" --port 4 --device 0 --type hdd --medium "G:\VM\Ora12c RAC\asm4.vdi" --mtype shareable
Si le partajam:
>VBoxManage modifyhd "G:\VM\Ora12c RAC\asm1.vdi" --type shareable
>VBoxManage modifyhd "G:\VM\Ora12c RAC\asm2.vdi" --type shareable
>VBoxManage modifyhd "G:\VM\Ora12c RAC\asm3.vdi" --type shareable
>VBoxManage modifyhd "G:\VM\Ora12c RAC\asm4.vdi" --type shareable
Crearea discurilor ASM
Pornim mașina virtuala, ne logam cu un utilizator care deține drepturi de root și formatam discurile nou instalate
# cd /dev
[root@ora12-rac1 dev]# ls sd*
sda sda1 sda2 sdb sdc sdd sde
# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x752efccd.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-652, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652):
Using default value 652
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Vom proceda asemănător și pentru celelalte discuri sdc, sdd, sde
în fiecare caz, vom răspunde în următoarea ordine: „n”, „p”, „1”,”Return”, „Return” and „w”.
Instalăm librăriile necesare configurării discurilor ASM
#yum install oracleasm-support oracleasm
Configurăm ASMLib
# oracleasm configure -i
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
Scan for Oracle ASM disks on boot (y/n) [y]:
Writing Oracle ASM library driver configuration: done
Încărcam modulul de kernel
# /usr/sbin/oracleasm init
Loading module "oracleasm": oracleasm
Mounting ASMlib driver filesystem: /dev/oracleasm
Creăm cele patru discuri după cum urmează:
# /usr/sbin/oracleasm createdisk DISK1 /dev/sdb1
Writing disk header: done
Instantiating disk: done
# /usr/sbin/oracleasm createdisk DISK2 /dev/sdc1
Writing disk header: done
Instantiating disk: done
# /usr/sbin/oracleasm createdisk DISK3 /dev/sdd1
Writing disk header: done
Instantiating disk: done
# /usr/sbin/oracleasm createdisk DISK4 /dev/sde1
Writing disk header: done
Instantiating disk: done
Nu este necesar dar putem rula “scandisks” pentru a reîmprospăta configurația discurilor ASM.
# /usr/sbin/oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
Dacă rulam “listdisks” putem afișa discurile ASM
# /usr/sbin/oracleasm listdisks
DISK1
DISK2
DISK3
DISK4
Crearea celui de-al doilea nod
Opriți mașina virtuala
halt
Clonați discul
.vdi cu ajutorul comenzii “VBoxManage” rulat pe mașina gazdaOra12c RAC
VBoxManage clonehd ora12-rac
1.vdi ora12-rac
2.vdi
Creați o noua mașina virtuala “ora12-rac2
″ din VirtualBox la fel cum ați procedat și cu ora12-rac
1, cu excepția ca veți alege discul virtual ora12-rac
2.vdi. Nu uitați sa adaugați cel de-al doilea adaptor de rețea, la fel cum ați procedat și pentru prima mașina virtuala.
Adaugați discurile virtuale partajate mașinii virtuale “ora12-rac2
″
VBoxManage storageattach "Ora12c RAC2"
--storagectl "Controlor SATA" --port 1
--device 0 --type hdd --medium asm1.vdi --mtype shareable
VBoxManage storageattach "Ora12c RAC2"
--storagectl "Controlor SATA" --port 2
--device 0 --type hdd --medium asm2.vdi --mtype shareable
VBoxManage storageattach "Ora12c RAC2"
--storagectl "Controlor SATA" --port 3
--device 0 --type hdd --medium asm2.vdi --mtype shareable
VBoxManage storageattach "Ora12c RAC2"
--storagectl "Controlor SATA" --port 4
--device 0 --type hdd --medium asm2.vdi --mtype shareable
Porniți mașina virtuala “ora12-rac
2″ apăsând butonul “Start” de pe toolbar-ul ferestrei VirtualBox. Logați-va cu un utilizator cu drepturi de root și editați fișierul “/etc/sysconfig/network” după cum urmează:
NETWORKING=yes
HOSTNAME=ora12-rac2.localdomain
Verificati adresa MAC a fiecarui nod. Nu vă faceți griji că acestea sunt listate ca „eth3″,”eth4” si „eth5”. Acestea sunt create dinamic deoarece adresa MAC a lui „eth0″,”eth1” si „eth2” sunt incorecte.
ifconfig -a | grep eth
eth3 Link encap:Ethernet HWaddr 08:00:27:31:32:14
eth4 Link encap:Ethernet HWaddr 08:00:27:C2:33:D5
eth5 Link encap:Ethernet HWaddr 08:00:27:EC:34:3E
Editați fișierul „/ etc/sysconfig/network-scripts/ifcfg-eth0”, modificați doar câmpul HWaddr și ștergeți intrarea UUID. Valoarea HWaddr vine din interfața „eth3″ afișat mai sus.
Editați fișierul”/ etc/sysconfig/network-scripts/ifcfg-eth1” respectiv „/etc/sysconfig/network-scripts/ifcfg-eth2”, modificați doar câmpurile IPADDR și HWaddr și ștergerea intrarea UUID. Valoarea HWaddr vine din interfața „eth4” respectiv „eth5” afișate mai sus.
Editați fișierul “/home/oracle/.bash_profile” corectând variabilele ORACLE_SID și ORACLE_HOSTNAME
ORACLE_SID=orcl2; export ORACLE_SID
ORACLE_HOSTNAME=ora12-rac2.localdomain; export ORACLE_HOSTNAME
Corectați variabila ORACLE_SID și în fișierele “/home/oracle/db_env” și “/home/oracle/grid_env”.
Rebotați mașina virtuala ora12-rac
2 și porniți mașina virtuala ora12-rac1
. Dupa ce ambele mașini sunt pornite verificați
ping -c 3 ora12-rac1
ping -c 3 ora12-rac1-priv
ping -c 3 ora12-rac2
ping -c 3 ora12-rac2-priv
Verificați dacă adresa de scanare este rezolvata în mod adecvat pe ambele noduri.
nslookup ora12-scan
Server: 192.168.56.101
Address: 192.168.56.101#53
Name: ora12-scan.localdomain
Address: 192.168.56.107
Name: ora12-scan.localdomain
Address: 192.168.56.105
Name: ora12-scan.localdomain
Address: 192.168.56.106
Configurarea logării automate prin ssh
Pe ora12-rac2
executați următoarele comenzi cu userul oracle:
/usr/bin/ssh-keygen -t rsa
cd ~/.ssh
cat id_rsa.pub >> authorized_keys2
cat id_rsa.pub >> authorized_keys
scp authorized_keys2 ora12-rac
1:/home/oracle/.ssh/
ssh-add
Pe ora12-rac1
executați următoarele comenzi cu userul oracle:
/usr/bin/ssh-keygen -t rsa
cd ~/.ssh
cat id_rsa.pub >> authorized_keys2
cat id_rsa.pub >> authorized_keys
scp authorized_keys2 ora12-rac
2:/home/oracle/.ssh/
ssh-add
Puteți verifica dacă configurările sunt corecte cu ajutorul comenzilor:
ssh ora12-rac1 date
ssh ora12-rac2 date
în cazul în care va fi afișată data fără să vă fie cerută parola atunci configurările sunt corecte.